Skip to content

Commit fb33c11

Browse files
jtlaytonidryomov
authored andcommitted
ceph: flush release queue when handling caps for unknown inode
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]>
1 parent 890bd0f commit fb33c11

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
@@ -3991,7 +3991,7 @@ void ceph_handle_caps(struct ceph_mds_session *session,
39913991
__ceph_queue_cap_release(session, cap);
39923992
spin_unlock(&session->s_cap_lock);
39933993
}
3994-
goto done;
3994+
goto flush_cap_releases;
39953995
}
39963996

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

0 commit comments

Comments
 (0)