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, 23 insertions(+), 6 deletions(-) diff --git a/db/attrset.c b/db/attrset.c index 7249294a..f64f0cd9 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] [-n] [-R|-C] [-v n] name"), + N_("[-r|-s|-u|-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] [-n] name"), + N_("[-r|-s|-u|-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 }; @@ -52,6 +52,7 @@ attrset_help(void) " -r -- 'root'\n" " -u -- 'user' (default)\n" " -s -- 'secure'\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" @@ -92,7 +93,7 @@ attr_set_f( return 0; } - while ((c = getopt(argc, argv, "rusCRnv:")) != EOF) { + while ((c = getopt(argc, argv, "rusfCRnv:")) != EOF) { switch (c) { /* namespaces */ case 'r': @@ -107,6 +108,11 @@ attr_set_f( args.attr_filter |= LIBXFS_ATTR_SECURE; args.attr_filter &= ~LIBXFS_ATTR_ROOT; break; + case 'f': + args.attr_filter |= LIBXFS_ATTR_VERITY; + args.attr_filter &= ~(LIBXFS_ATTR_ROOT | + LIBXFS_ATTR_SECURE); + break; /* modifiers */ case 'C': @@ -208,7 +214,7 @@ attr_remove_f( return 0; } - while ((c = getopt(argc, argv, "rusn")) != EOF) { + while ((c = getopt(argc, argv, "rusfn")) != EOF) { switch (c) { /* namespaces */ case 'r': @@ -223,6 +229,11 @@ attr_remove_f( args.attr_filter |= LIBXFS_ATTR_SECURE; args.attr_filter &= ~LIBXFS_ATTR_ROOT; break; + case 'f': + args.attr_filter |= LIBXFS_ATTR_VERITY; + args.attr_filter &= ~(LIBXFS_ATTR_ROOT | + LIBXFS_ATTR_SECURE); + break; case 'n': /* @@ -301,7 +312,7 @@ attr_modify_f( return 0; } - while ((c = getopt(argc, argv, "rusnv:o:m:")) != EOF) { + while ((c = getopt(argc, argv, "rusfnv:o:m:")) != EOF) { switch (c) { /* namespaces */ case 'r': @@ -316,6 +327,11 @@ attr_modify_f( args.attr_filter |= LIBXFS_ATTR_SECURE; args.attr_filter &= ~LIBXFS_ATTR_ROOT; break; + case 'f': + args.attr_filter |= LIBXFS_ATTR_VERITY; + args.attr_filter &= ~(LIBXFS_ATTR_ROOT | + LIBXFS_ATTR_SECURE); + break; case 'n': /* diff --git a/libxfs/libxfs_api_defs.h b/libxfs/libxfs_api_defs.h index ccc92a83..04a5dad5 100644 --- a/libxfs/libxfs_api_defs.h +++ b/libxfs/libxfs_api_defs.h @@ -15,6 +15,7 @@ */ #define LIBXFS_ATTR_ROOT XFS_ATTR_ROOT #define LIBXFS_ATTR_SECURE XFS_ATTR_SECURE +#define LIBXFS_ATTR_VERITY XFS_ATTR_VERITY #define xfs_agfl_size libxfs_agfl_size #define xfs_agfl_walk libxfs_agfl_walk