Skip to content

Commit 6c1653e

Browse files
jtlaytonmarcelocerri
authored andcommitted
ceph: flush release queue when handling caps for unknown inode
BugLink: https://bugs.launchpad.net/bugs/1881927 [ Upstream commit fb33c11 ] It's possible for the VFS to completely forget about an inode, but for it to still be sitting on the cap release queue. If the MDS sends the client a cap message for such an inode, it just ignores it today, which can lead to a stall of up to 5s until the cap release queue is flushed. If we get a cap message for an inode that can't be located, then go ahead and flush the cap release queue. Cc: [email protected] URL: https://tracker.ceph.com/issues/45532 Fixes: 1e9c2eb ("ceph: delete stale dentry when last reference is dropped") Reported-and-Tested-by: Andrej Filipčič <[email protected]> Suggested-by: Yan, Zheng <[email protected]> Signed-off-by: Jeff Layton <[email protected]> Signed-off-by: Ilya Dryomov <[email protected]> Signed-off-by: Sasha Levin <[email protected]> Signed-off-by: Kamal Mostafa <[email protected]> Signed-off-by: Khalid Elmously <[email protected]>
1 parent e5c6f0f commit 6c1653e

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

fs/ceph/caps.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3938,7 +3938,7 @@ void ceph_handle_caps(struct ceph_mds_session *session,
39383938
__ceph_queue_cap_release(session, cap);
39393939
spin_unlock(&session->s_cap_lock);
39403940
}
3941-
goto done;
3941+
goto flush_cap_releases;
39423942
}
39433943

39443944
/* these will work even if we don't have a cap yet */

0 commit comments

Comments
 (0)