analyze: show fs magic info in 'systemd-analyze filesystem'

Let's show this information, since its quite useful. Moreover it allows
us to highlight file system aliases.
This commit is contained in:
Lennart Poettering
2021-11-15 22:43:03 +01:00
parent 6d439321e8
commit 5538ecbac8
+36 -5
View File
@@ -1850,8 +1850,9 @@ static void filesystem_set_remove(Set *s, const FilesystemSet *set) {
}
}
static void dump_filesystem(const FilesystemSet *set) {
static void dump_filesystem_set(const FilesystemSet *set) {
const char *filesystem;
int r;
if (!set)
return;
@@ -1863,8 +1864,38 @@ static void dump_filesystem(const FilesystemSet *set) {
ansi_normal(),
set->help);
NULSTR_FOREACH(filesystem, set->value)
printf(" %s%s%s\n", filesystem[0] == '@' ? ansi_underline() : "", filesystem, ansi_normal());
NULSTR_FOREACH(filesystem, set->value) {
const statfs_f_type_t *magic;
if (filesystem[0] == '@') {
printf(" %s%s%s\n", ansi_underline(), filesystem, ansi_normal());
continue;
}
r = fs_type_from_string(filesystem, &magic);
assert_se(r >= 0);
printf(" %s", filesystem);
for (size_t i = 0; magic[i] != 0; i++) {
const char *primary;
if (i == 0)
printf(" %s(magic: ", ansi_grey());
else
printf(", ");
printf("0x%llx", (unsigned long long) magic[i]);
primary = fs_type_to_string(magic[i]);
if (primary && !streq(primary, filesystem))
printf("[%s]", primary);
if (magic[i+1] == 0)
printf(")%s", ansi_normal());
}
printf("\n");
}
}
static int dump_filesystems(int argc, char *argv[], void *userdata) {
@@ -1892,7 +1923,7 @@ static int dump_filesystems(int argc, char *argv[], void *userdata) {
if (!first)
puts("");
dump_filesystem(set);
dump_filesystem_set(set);
filesystem_set_remove(kernel, set);
if (i != FILESYSTEM_SET_KNOWN)
filesystem_set_remove(known, set);
@@ -1956,7 +1987,7 @@ static int dump_filesystems(int argc, char *argv[], void *userdata) {
"Filesystem set \"%s\" not found.", *name);
}
dump_filesystem(set);
dump_filesystem_set(set);
first = false;
}
}