Whamcloud - gitweb
LU-14780 llite: failed ASSERTION(ldlm_has_layout(lock)) 54/44054/2
authorBobi Jam <bobijam@whamcloud.com>
Fri, 4 Jun 2021 03:58:29 +0000 (11:58 +0800)
committerOleg Drokin <green@whamcloud.com>
Mon, 12 Jul 2021 18:46:44 +0000 (18:46 +0000)
When setting layout in layout lock, the lock could lost its layout
bits, and we'd try fetch the layout lock again.

Signed-off-by: Bobi Jam <bobijam@whamcloud.com>
Change-Id: I10f96e4cb03cfe228d3c1ea1500b1a8d8e4e5e54
Reviewed-on: https://review.whamcloud.com/44054
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Patrick Farrell <pfarrell@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Yingjin Qian <qian@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/llite/file.c

index 6f25a6a..a96286f 100644 (file)
@@ -5754,7 +5754,9 @@ static int ll_layout_lock_set(struct lustre_handle *lockh, enum ldlm_mode mode,
 
        lock = ldlm_handle2lock(lockh);
        LASSERT(lock != NULL);
 
        lock = ldlm_handle2lock(lockh);
        LASSERT(lock != NULL);
-       LASSERT(ldlm_has_layout(lock));
+
+       if (!ldlm_has_layout(lock))
+               GOTO(out, rc = -EAGAIN);
 
        LDLM_DEBUG(lock, "file "DFID"(%p) being reconfigured",
                   PFID(&lli->lli_fid), inode);
 
        LDLM_DEBUG(lock, "file "DFID"(%p) being reconfigured",
                   PFID(&lli->lli_fid), inode);