From: John L. Hammond Date: Tue, 17 Oct 2017 20:32:52 +0000 (-0500) Subject: LU-10132 llite: handle xattr cache refill race X-Git-Tag: 2.10.2-RC1~19 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=78a5d681932e30797775aa10d22fc25b20aa58f7;p=fs%2Flustre-release.git LU-10132 llite: handle xattr cache refill race In ll_xattr_cache_refill() if the xattr cache was invalid (and no request was sent) then return -EAGAIN so that ll_getxattr_common() caller will fetch the xattr from the MDT. Lustre-change: https://review.whamcloud.com/#/c/29654/ Lustre-commit: 9cc8c3a20c547ec75325dde3dd17f4b1dcc66348 Signed-off-by: John L. Hammond Change-Id: Ia9ec7424e8786d92bdecf4897fafcf71d5061fb1 Signed-off-by: Minh Diep Reviewed-on: https://review.whamcloud.com/29795 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Nathaniel Clark Reviewed-by: Andreas Dilger --- diff --git a/lustre/llite/xattr_cache.c b/lustre/llite/xattr_cache.c index d1527c9..a001e5c 100644 --- a/lustre/llite/xattr_cache.c +++ b/lustre/llite/xattr_cache.c @@ -402,7 +402,7 @@ static int ll_xattr_cache_refill(struct inode *inode) if (unlikely(req == NULL)) { CDEBUG(D_CACHE, "cancelled by a parallel getxattr\n"); ll_intent_drop_lock(&oit); - GOTO(err_unlock, rc = -EIO); + GOTO(err_unlock, rc = -EAGAIN); } body = req_capsule_server_get(&req->rq_pill, &RMF_MDT_BODY);