Whamcloud - gitweb
LU-10132 llite: handle xattr cache refill race 54/29654/2
authorJohn L. Hammond <john.hammond@intel.com>
Tue, 17 Oct 2017 20:32:52 +0000 (15:32 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 1 Nov 2017 04:57:39 +0000 (04:57 +0000)
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 <john.hammond@intel.com>
Change-Id: Ia9ec7424e8786d92bdecf4897fafcf71d5061fb1
Reviewed-on: https://review.whamcloud.com/29654
Tested-by: Jenkins
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Lai Siyao <lai.siyao@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/llite/xattr_cache.c

index 50dcbe7..11946de 100644 (file)
@@ -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);