@@ -1777,6 +1777,15 @@ bool parse_config() noexcept {
1777
1777
return false ;
1778
1778
}
1779
1779
1780
+ if (doc.HasMember (" fs_name" )) {
1781
+ assert (doc[" fs_name" ].IsString ());
1782
+ config_data[" FILESYSTEM_NAME" ] = std::string{doc[" fs_name" ].GetString ()};
1783
+ } else if (headless_mode) {
1784
+ fmt::print (stderr, " 'fs_name' field is required in HEADLESS mode!\n " );
1785
+ return false ;
1786
+ }
1787
+ auto & root_fstype = std::get<std::string>(config_data[" FILESYSTEM_NAME" ]);
1788
+
1780
1789
if (doc.HasMember (" partitions" )) {
1781
1790
assert (doc[" partitions" ].IsArray ());
1782
1791
@@ -1799,12 +1808,12 @@ bool parse_config() noexcept {
1799
1808
fmt::print (stderr, " partition type '{}' is invalid! Valid types: {}.\n " , part_type, valid_types);
1800
1809
return false ;
1801
1810
}
1802
- if (!partition_map.HasMember (" fs_name" ) && part_type == " additional " sv) {
1811
+ if (!partition_map.HasMember (" fs_name" ) && ( part_type != " root " sv || (root_fstype. empty () && part_type == " root " sv)) ) {
1803
1812
fmt::print (stderr, " required field 'fs_name' is missing for partition type '{}'!\n " , part_type);
1804
1813
return false ;
1805
1814
}
1806
1815
1807
- std::string part_fs_name{" - " };
1816
+ std::string part_fs_name{root_fstype };
1808
1817
if (partition_map.HasMember (" fs_name" )) {
1809
1818
assert (partition_map[" fs_name" ].IsString ());
1810
1819
part_fs_name = partition_map[" fs_name" ].GetString ();
@@ -1821,14 +1830,6 @@ bool parse_config() noexcept {
1821
1830
return false ;
1822
1831
}
1823
1832
1824
- if (doc.HasMember (" fs_name" )) {
1825
- assert (doc[" fs_name" ].IsString ());
1826
- config_data[" FILESYSTEM_NAME" ] = std::string{doc[" fs_name" ].GetString ()};
1827
- } else if (headless_mode) {
1828
- fmt::print (stderr, " 'fs_name' field is required in HEADLESS mode!\n " );
1829
- return false ;
1830
- }
1831
-
1832
1833
if (doc.HasMember (" mount_opts" )) {
1833
1834
assert (doc[" mount_opts" ].IsString ());
1834
1835
config_data[" MOUNT_OPTS" ] = std::string{doc[" mount_opts" ].GetString ()};
0 commit comments