linux/fs/ceph
Jeff Layton fb33c114d3 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: 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>
2020-05-27 13:03:57 +02:00
..
acl.c ceph: remove unnecessary assignment in ceph_pre_init_acls() 2020-01-27 16:53:39 +01:00
addr.c ceph: switch to page_mkwrite_check_truncate in ceph_page_mkwrite 2020-03-30 12:42:41 +02:00
cache.c ceph: replace zero-length array with flexible-array member 2020-03-30 12:42:40 +02:00
cache.h libceph, rbd, ceph: convert to use the new mount API 2019-11-27 22:28:37 +01:00
caps.c ceph: flush release queue when handling caps for unknown inode 2020-05-27 13:03:57 +02:00
ceph_frag.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
debugfs.c bdi: use bdi_dev_name() to get device name 2020-05-09 16:07:39 -06:00
dir.c ceph: fix potential bad pointer deref in async dirops cb's 2020-04-13 19:33:47 +02:00
export.c ceph: return ceph_mdsc_do_request() errors from __get_parent() 2020-03-30 12:42:42 +02:00
file.c ceph: fix potential bad pointer deref in async dirops cb's 2020-04-13 19:33:47 +02:00
inode.c ceph: fix snapshot directory timestamps 2020-03-30 12:42:43 +02:00
io.c ceph: add buffered/direct exclusionary locking for reads and writes 2019-09-16 12:06:25 +02:00
io.h ceph: add buffered/direct exclusionary locking for reads and writes 2019-09-16 12:06:25 +02:00
ioctl.c ceph: consider inode's last read/write when calculating wanted caps 2020-03-30 12:42:42 +02:00
ioctl.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig ceph: add selinux support 2019-07-08 14:01:42 +02:00
locks.c ceph: check if file lock exists before sending unlock request 2020-03-30 12:42:40 +02:00
Makefile ceph: move net/ceph/ceph_fs.c to fs/ceph/util.c 2020-01-27 16:53:40 +01:00
mds_client.c ceph: fix endianness bug when handling MDS session feature bits 2020-05-04 19:14:23 +02:00
mds_client.h ceph: fix potential bad pointer deref in async dirops cb's 2020-04-13 19:33:47 +02:00
mdsmap.c ceph: add possible_max_rank and make the code more readable 2020-01-27 16:53:40 +01:00
quota.c ceph: demote quotarealm lookup warning to a debug message 2020-05-08 18:44:40 +02:00
snap.c ceph: fix memory leak in ceph_cleanup_snapid_map() 2020-03-23 13:07:08 +01:00
strings.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
super.c ceph: perform asynchronous unlink if we have sufficient caps 2020-03-30 12:42:42 +02:00
super.h ceph: simplify calling of ceph_get_fmode() 2020-03-30 12:42:42 +02:00
util.c ceph: move net/ceph/ceph_fs.c to fs/ceph/util.c 2020-01-27 16:53:40 +01:00
xattr.c ceph: print name of xattr in __ceph_{get,set}xattr() douts 2020-01-27 16:53:40 +01:00