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.55~16 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=refs%2Fchanges%2F54%2F29654%2F2;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. Signed-off-by: John L. Hammond Change-Id: Ia9ec7424e8786d92bdecf4897fafcf71d5061fb1 Reviewed-on: https://review.whamcloud.com/29654 Tested-by: Jenkins Reviewed-by: Andreas Dilger Tested-by: Maloo Reviewed-by: Lai Siyao Reviewed-by: Oleg Drokin --- diff --git a/lustre/llite/xattr_cache.c b/lustre/llite/xattr_cache.c index 50dcbe7..11946de 100644 --- a/lustre/llite/xattr_cache.c +++ b/lustre/llite/xattr_cache.c @@ -401,7 +401,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);