findmnt: add --shadowed

Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2021-03-22 14:58:05 +01:00
parent 1c81dfff1a
commit 3ab4ef3ca9
3 changed files with 25 additions and 7 deletions

View File

@ -193,6 +193,9 @@ available for umount and remount actions
.B \-\-pseudo
Print only pseudo filesystems.
.TP
.B \-\-shadowed
Print only filesystems over-mounted by another filesystem.
.TP
.BR \-R , " \-\-submounts"
Print recursively all submounts for the selected filesystems. The restrictions
defined by options \fB\-t\fP, \fB\-O\fP, \fB\-S\fP, \fB\-T\fP and

View File

@ -970,6 +970,14 @@ static int match_func(struct libmnt_fs *fs,
if ((flags & FL_PSEUDO) && !mnt_fs_is_pseudofs(fs))
return rc;
if ((flags & FL_SHADOWED)) {
struct libmnt_table *tb = NULL;
mnt_fs_get_table(fs, &tb);
if (tb && mnt_table_over_fs(tb, fs, NULL) != 0)
return rc;
}
return !rc;
}
@ -1254,6 +1262,7 @@ static void __attribute__((__noreturn__)) usage(void)
fputs(_(" --output-all output all available columns\n"), out);
fputs(_(" -P, --pairs use key=\"value\" output format\n"), out);
fputs(_(" --pseudo print only pseudo-filesystems\n"), out);
fputs(_(" --shadowed print only filesystems over-mounted by another filesystem\n"), out);
fputs(_(" -R, --submounts print all submounts for the matching filesystems\n"), out);
fputs(_(" -r, --raw use raw output format\n"), out);
fputs(_(" --real print only real filesystems\n"), out);
@ -1304,7 +1313,8 @@ int main(int argc, char *argv[])
FINDMNT_OPT_OUTPUT_ALL,
FINDMNT_OPT_PSEUDO,
FINDMNT_OPT_REAL,
FINDMNT_OPT_VFS_ALL
FINDMNT_OPT_VFS_ALL,
FINDMNT_OPT_SHADOWED
};
static const struct option longopts[] = {
@ -1349,6 +1359,7 @@ int main(int argc, char *argv[])
{ "real", no_argument, NULL, FINDMNT_OPT_REAL },
{ "pseudo", no_argument, NULL, FINDMNT_OPT_PSEUDO },
{ "vfs-all", no_argument, NULL, FINDMNT_OPT_VFS_ALL },
{ "shadowed", no_argument, NULL, FINDMNT_OPT_SHADOWED },
{ NULL, 0, NULL, 0 }
};
@ -1526,6 +1537,9 @@ int main(int argc, char *argv[])
case FINDMNT_OPT_VFS_ALL:
flags |= FL_VFS_ALL;
break;
case FINDMNT_OPT_SHADOWED:
flags |= FL_SHADOWED;
break;
case 'h':
usage();

View File

@ -21,14 +21,15 @@ enum {
FL_PSEUDO = (1 << 17),
FL_REAL = (1 << 18),
FL_VFS_ALL = (1 << 19),
FL_SHADOWED = (1 << 20),
/* basic table settings */
FL_ASCII = (1 << 20),
FL_RAW = (1 << 21),
FL_NOHEADINGS = (1 << 22),
FL_EXPORT = (1 << 23),
FL_TREE = (1 << 24),
FL_JSON = (1 << 25),
FL_ASCII = (1 << 21),
FL_RAW = (1 << 22),
FL_NOHEADINGS = (1 << 23),
FL_EXPORT = (1 << 24),
FL_TREE = (1 << 25),
FL_JSON = (1 << 26),
};
extern struct libmnt_cache *cache;