From: Andrey Albershteyn <aalbersh@xxxxxxxxxx> Signed-off-by: Andrey Albershteyn <aalbersh@xxxxxxxxxx> --- db/attrset.c | 28 +++++++++++++++++++++------- libxfs/libxfs_api_defs.h | 1 + 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/db/attrset.c b/db/attrset.c index 915c20f8beb8..477ea7cb29c1 100644 --- a/db/attrset.c +++ b/db/attrset.c @@ -26,15 +26,15 @@ static void attrset_help(void); static const cmdinfo_t attr_set_cmd = { "attr_set", "aset", attr_set_f, 1, -1, 0, - N_("[-r|-s|-u|-p] [-n] [-R|-C] [-v n] name"), + N_("[-r|-s|-u|-p|-f] [-n] [-R|-C] [-v n] name"), N_("set the named attribute on the current inode"), attrset_help }; static const cmdinfo_t attr_remove_cmd = { "attr_remove", "aremove", attr_remove_f, 1, -1, 0, - N_("[-r|-s|-u|-p] [-n] name"), + N_("[-r|-s|-u|-p|-f] [-n] name"), N_("remove the named attribute from the current inode"), attrset_help }; static const cmdinfo_t attr_modify_cmd = { "attr_modify", "amodify", attr_modify_f, 1, -1, 0, - N_("[-r|-s|-u] [-o n] [-v n] [-m n] name value"), + N_("[-r|-s|-u|-f] [-o n] [-v n] [-m n] name value"), N_("modify value of the named attribute of the current inode"), attrset_help }; @@ -53,6 +53,7 @@ attrset_help(void) " -u -- 'user' (default)\n" " -s -- 'secure'\n" " -p -- 'parent'\n" +" -f -- 'fs-verity'\n" "\n" " For attr_set, these options further define the type of set operation:\n" " -C -- 'create' - create attribute, fail if it already exists\n" @@ -116,7 +117,8 @@ get_buf_from_file( #define LIBXFS_ATTR_NS (LIBXFS_ATTR_SECURE | \ LIBXFS_ATTR_ROOT | \ - LIBXFS_ATTR_PARENT) + LIBXFS_ATTR_PARENT | \ + LIBXFS_ATTR_VERITY) static int attr_set_f( @@ -144,7 +146,7 @@ attr_set_f( return 0; } - while ((c = getopt(argc, argv, "ruspCRnN:v:V:")) != EOF) { + while ((c = getopt(argc, argv, "fruspCRnN:v:V:")) != EOF) { switch (c) { /* namespaces */ case 'r': @@ -162,6 +164,10 @@ attr_set_f( args.attr_filter &= ~LIBXFS_ATTR_NS; args.attr_filter |= XFS_ATTR_PARENT; break; + case 'f': + args.attr_filter &= ~LIBXFS_ATTR_NS; + args.attr_filter |= LIBXFS_ATTR_VERITY; + break; /* modifiers */ case 'C': @@ -317,7 +323,7 @@ attr_remove_f( return 0; } - while ((c = getopt(argc, argv, "ruspnN:")) != EOF) { + while ((c = getopt(argc, argv, "fruspnN:")) != EOF) { switch (c) { /* namespaces */ case 'r': @@ -335,6 +341,10 @@ attr_remove_f( args.attr_filter &= ~LIBXFS_ATTR_NS; args.attr_filter |= XFS_ATTR_PARENT; break; + case 'f': + args.attr_filter &= ~LIBXFS_ATTR_NS; + args.attr_filter |= LIBXFS_ATTR_VERITY; + break; case 'N': name_from_file = optarg; @@ -445,7 +455,7 @@ attr_modify_f( return 0; } - while ((c = getopt(argc, argv, "ruspnv:o:m:")) != EOF) { + while ((c = getopt(argc, argv, "fruspnv:o:m:")) != EOF) { switch (c) { /* namespaces */ case 'r': @@ -463,6 +473,10 @@ attr_modify_f( args.attr_filter &= ~LIBXFS_ATTR_NS; args.attr_filter |= XFS_ATTR_PARENT; break; + case 'f': + args.attr_filter &= ~LIBXFS_ATTR_NS; + args.attr_filter |= LIBXFS_ATTR_VERITY; + break; case 'n': /* diff --git a/libxfs/libxfs_api_defs.h b/libxfs/libxfs_api_defs.h index 1b6efac9290d..6ad728af2e0a 100644 --- a/libxfs/libxfs_api_defs.h +++ b/libxfs/libxfs_api_defs.h @@ -16,6 +16,7 @@ #define LIBXFS_ATTR_ROOT XFS_ATTR_ROOT #define LIBXFS_ATTR_SECURE XFS_ATTR_SECURE #define LIBXFS_ATTR_PARENT XFS_ATTR_PARENT +#define LIBXFS_ATTR_VERITY XFS_ATTR_VERITY #define xfs_agfl_size libxfs_agfl_size #define xfs_agfl_walk libxfs_agfl_walk