From: Christoph Hellwig Date: Mon, 15 Apr 2024 23:07:44 +0000 (-0700) Subject: xfs: turn the XFS_DA_OP_REPLACE checks in xfs_attr_shortform_addname into asserts X-Git-Tag: v6.8.0~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5ef5d3286beb5f54fdf86d02e67ec73f815e5fa0;p=thirdparty%2Fxfsprogs-dev.git xfs: turn the XFS_DA_OP_REPLACE checks in xfs_attr_shortform_addname into asserts Source kernel commit: 378b6aef9de0f7c3d0de309ecc61c11eb29e57da Since commit deed9512872d ("xfs: Check for -ENOATTR or -EEXIST"), the high-level attr code does a lookup for any attr we're trying to set, and does the checks to handle the create vs replace cases, which thus never hit the low-level attr code. Turn the checks in xfs_attr_shortform_addname as they must never trip. Signed-off-by: Christoph Hellwig Reviewed-by: "Darrick J. Wong" Reviewed-by: Dave Chinner Signed-off-by: Chandan Babu R Reviewed-by: Bill O'Donnell --- diff --git a/libxfs/xfs_attr.c b/libxfs/xfs_attr.c index 055d2041..1419846b 100644 --- a/libxfs/xfs_attr.c +++ b/libxfs/xfs_attr.c @@ -1070,8 +1070,7 @@ xfs_attr_shortform_addname( if (xfs_attr_sf_findname(args)) { int error; - if (!(args->op_flags & XFS_DA_OP_REPLACE)) - return -EEXIST; + ASSERT(args->op_flags & XFS_DA_OP_REPLACE); error = xfs_attr_sf_removename(args); if (error) @@ -1085,8 +1084,7 @@ xfs_attr_shortform_addname( */ args->op_flags &= ~XFS_DA_OP_REPLACE; } else { - if (args->op_flags & XFS_DA_OP_REPLACE) - return -ENOATTR; + ASSERT(!(args->op_flags & XFS_DA_OP_REPLACE)); } if (args->namelen >= XFS_ATTR_SF_ENTSIZE_MAX ||