From: Karel Zak Date: Thu, 10 Jan 2013 14:59:16 +0000 (+0100) Subject: findmnt: add PROPAGATION column X-Git-Tag: v2.23-rc1~354 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=624f2b47c39256ce1bddb23d53df612dbf2fe65e;p=thirdparty%2Futil-linux.git findmnt: add PROPAGATION column Signed-off-by: Karel Zak --- diff --git a/misc-utils/findmnt.c b/misc-utils/findmnt.c index 758a15e693..fed1a3c205 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; }