From 2a2e8ca1ff413f925fb9c9941a9d52021c87b36b Mon Sep 17 00:00:00 2001 From: Artem Blagodarenko Date: Tue, 1 Sep 2020 15:47:22 -0400 Subject: [PATCH] LU-13937 osd: OST with isize < 256 stripe info stored in LMA osd_xattr_set_pfid() expects XATTR_NAME_FID to be exist if LMAC_STRIPE_INF is absent and delete it if LU_XATTR_REPLACE is set. There are some cases, after upgrade, when LMAC_STRIPE_INF is absent and there is no XATTR_NAME_FID. No need return -ENODATA to the client, because having XATTR_NAME_FID absent is what situation requires, so osd_xattr_set_pfid() can continue to fill LMA. Change-Id: If1690204912ba0875e2251264eb28286e930b3a7 hpe-bug-id: LUS-9106 Signed-off-by: Artem Blagodarenko Reviewed-on: https://review.whamcloud.com/39790 Reviewed-by: Andreas Dilger Tested-by: jenkins Reviewed-by: Alexander Zarochentsev Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/osd-ldiskfs/osd_handler.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index 2971dec..2c6741a 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -4631,8 +4631,8 @@ static int osd_xattr_set_pfid(const struct lu_env *env, struct osd_object *obj, dquot_initialize(inode); rc = ll_vfs_removexattr(dentry, inode, XATTR_NAME_FID); if (rc == -ENODATA) { - if ((fl & LU_XATTR_REPLACE) && !(fl & LU_XATTR_CREATE)) - RETURN(rc); + /* XATTR_NAME_FID is already absent */ + rc = 0; } else if (rc) { RETURN(rc); } -- 1.8.3.1