summaryrefslogtreecommitdiffstats
path: root/src/analyze
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2021-11-15 14:05:31 +0100
committerLennart Poettering <lennart@poettering.net>2021-11-15 22:43:03 +0100
commite0f89b065696c45933dba09c553521ef27da9e08 (patch)
tree7a693a7cb31c4a8b9a980a43b6a23a894fdca192 /src/analyze
parenthomed: replace home-grown fs magic translation with fs_type_to_string() (diff)
downloadsystemd-e0f89b065696c45933dba09c553521ef27da9e08.tar.xz
systemd-e0f89b065696c45933dba09c553521ef27da9e08.zip
analyze: don't list filesystems among ungrouped that are aliases
There are a bunch of filesystems that actually are just aliases for other filesystems. So far we listed them as "ungrouped", suggesting they should be added to some file system group. But that's not really something needed, since they are after all not file systems in their own right, but aliases only (and usually legacy at that). hence, let's hide them from display (but debug log about them)
Diffstat (limited to 'src/analyze')
-rw-r--r--src/analyze/analyze.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c
index 4153afb1c6..3801cf0ead 100644
--- a/src/analyze/analyze.c
+++ b/src/analyze/analyze.c
@@ -1944,8 +1944,29 @@ static int dump_filesystems(int argc, char *argv[], void *userdata) {
strv_sort(l);
- STRV_FOREACH(filesystem, l)
+ STRV_FOREACH(filesystem, l) {
+ const statfs_f_type_t *magic;
+ bool is_primary = false;
+
+ assert(fs_type_from_string(*filesystem, &magic) >= 0);
+
+ for (size_t i = 0; magic[i] != 0; i++) {
+ const char *primary;
+
+ primary = fs_type_to_string(magic[i]);
+ assert(primary);
+
+ if (streq(primary, *filesystem))
+ is_primary = true;
+ }
+
+ if (!is_primary) {
+ log_debug("Skipping ungrouped file system '%s', because it's an alias for another one.", *filesystem);
+ continue;
+ }
+
printf("# %s\n", *filesystem);
+ }
}
if (k < 0) {