ceph: flush release queue when handling caps for unknown inode
[ Upstream commitfb33c114d3
] 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: stable@vger.kernel.org URL: https://tracker.ceph.com/issues/45532 Fixes:1e9c2eb681
("ceph: delete stale dentry when last reference is dropped") Reported-and-Tested-by: Andrej Filipčič <andrej.filipcic@ijs.si> Suggested-by: Yan, Zheng <zyan@redhat.com> Signed-off-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
4d145e4823
commit
6b292d7806
|
@ -3938,7 +3938,7 @@ void ceph_handle_caps(struct ceph_mds_session *session,
|
|||
__ceph_queue_cap_release(session, cap);
|
||||
spin_unlock(&session->s_cap_lock);
|
||||
}
|
||||
goto done;
|
||||
goto flush_cap_releases;
|
||||
}
|
||||
|
||||
/* these will work even if we don't have a cap yet */
|
||||
|
|
Loading…
Reference in New Issue