From: Darrick J. Wong <djwong@xxxxxxxxxx> Actually tell the user what went wrong when setting or removing xattrs. Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> Reviewed-by: Christoph Hellwig <hch@xxxxxx> --- db/attrset.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/db/attrset.c b/db/attrset.c index 008662571..81d530055 100644 --- a/db/attrset.c +++ b/db/attrset.c @@ -121,6 +121,7 @@ attr_set_f( char *value_from_file = NULL; enum xfs_attr_update op = XFS_ATTRUPDATE_UPSERT; int c; + int error; if (cur_typ == NULL) { dbprintf(_("no current type\n")); @@ -260,9 +261,11 @@ attr_set_f( args.owner = iocur_top->ino; libxfs_attr_sethash(&args); - if (libxfs_attr_set(&args, op, false)) { - dbprintf(_("failed to set attr %s on inode %llu\n"), - args.name, (unsigned long long)iocur_top->ino); + error = -libxfs_attr_set(&args, op, false); + if (error) { + dbprintf(_("failed to set attr %s on inode %llu: %s\n"), + args.name, (unsigned long long)iocur_top->ino, + strerror(error)); goto out; } @@ -291,6 +294,7 @@ attr_remove_f( }; char *name_from_file = NULL; int c; + int error; if (cur_typ == NULL) { dbprintf(_("no current type\n")); @@ -379,10 +383,12 @@ attr_remove_f( args.owner = iocur_top->ino; libxfs_attr_sethash(&args); - if (libxfs_attr_set(&args, XFS_ATTRUPDATE_REMOVE, false)) { - dbprintf(_("failed to remove attr %s from inode %llu\n"), + error = -libxfs_attr_set(&args, XFS_ATTRUPDATE_REMOVE, false); + if (error) { + dbprintf(_("failed to remove attr %s from inode %llu: %s\n"), (unsigned char *)args.name, - (unsigned long long)iocur_top->ino); + (unsigned long long)iocur_top->ino, + strerror(error)); goto out; }