summaryrefslogtreecommitdiffstats
path: root/misc-utils/findmnt.c
diff options
context:
space:
mode:
authorKarel Zak2013-01-10 15:59:16 +0100
committerKarel Zak2013-01-10 15:59:16 +0100
commit624f2b47c39256ce1bddb23d53df612dbf2fe65e (patch)
tree0d1a7ef8dde401ef8ccd24184a6792ef054d6313 /misc-utils/findmnt.c
parentlibmount: add mnt_fs_get_propagation() (diff)
downloadkernel-qcow2-util-linux-624f2b47c39256ce1bddb23d53df612dbf2fe65e.tar.gz
kernel-qcow2-util-linux-624f2b47c39256ce1bddb23d53df612dbf2fe65e.tar.xz
kernel-qcow2-util-linux-624f2b47c39256ce1bddb23d53df612dbf2fe65e.zip
findmnt: add PROPAGATION column
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'misc-utils/findmnt.c')
-rw-r--r--misc-utils/findmnt.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/misc-utils/findmnt.c b/misc-utils/findmnt.c
index 758a15e69..fed1a3c20 100644
--- a/misc-utils/findmnt.c
+++ b/misc-utils/findmnt.c
@@ -82,6 +82,7 @@ enum {
COL_TID,
COL_ID,
COL_OPT_FIELDS,
+ COL_PROPAGATION,
FINDMNT_NCOLUMNS
};
@@ -126,6 +127,7 @@ static struct colinfo infos[FINDMNT_NCOLUMNS] = {
[COL_TID] = { "TID", 4, TT_FL_RIGHT, N_("task ID") },
[COL_ID] = { "ID", 2, TT_FL_RIGHT, N_("mount ID") },
[COL_OPT_FIELDS] = { "OPT-FIELDS", 0.10, TT_FL_TRUNC, N_("optional mount fields") },
+ [COL_PROPAGATION] = { "PROPAGATION", 0.10, 0, N_("VFS propagation flags") }
};
/* global flags */
@@ -492,6 +494,29 @@ static const char *get_data(struct libmnt_fs *fs, int num)
str = tmp;
}
break;
+ case COL_PROPAGATION:
+ if (mnt_fs_is_kernel(fs)) {
+ unsigned long fl = 0;
+ char *n = NULL;
+
+ if (mnt_fs_get_propagation(fs, &fl) != 0)
+ break;
+
+ n = xstrdup((fl & MS_SHARED) ? "shared" : "private");
+
+ if (fl & MS_SLAVE) {
+ xasprintf(&tmp, "%s,slave", n);
+ free(n);
+ n = tmp;
+ }
+ if (fl & MS_UNBINDABLE) {
+ xasprintf(&tmp, "%s,unbindable", n);
+ free(n);
+ n = tmp;
+ }
+ str = n;
+ }
+ break;
default:
break;
}