I sent an initial RFC set for this around 10 months ago. Since then, the requisite patches for the MDS have been merged for the octopus release. This adds support to the kclient to take advantage of asynchronous unlinks. In earlier testing (with a vstart cluster backed by a rotating HDD), I saw roughly a 2x speedup when doing an rmdir on a directory with 10000 files in it. When testing with a cluster backed by an NVMe SSD though, I only saw about a 20% speedup. I'd like to put this in the testing branch now, so that it's ready for merge in the upcoming v5.6 merge window. Once this is in, asynchronous create support will be the next step. Jeff Layton (4): ceph: close holes in struct ceph_mds_session ceph: hold extra reference to r_parent over life of request ceph: register MDS request with dir inode from the start ceph: add refcounting for Fx caps Yan, Zheng (2): ceph: check inode type for CEPH_CAP_FILE_{CACHE,RD,REXTEND,LAZYIO} ceph: perform asynchronous unlink if we have sufficient caps fs/ceph/caps.c | 84 ++++++++++++++++++++++++++---------- fs/ceph/dir.c | 70 ++++++++++++++++++++++++++++-- fs/ceph/inode.c | 9 +++- fs/ceph/mds_client.c | 27 ++++++------ fs/ceph/mds_client.h | 2 +- fs/ceph/super.c | 4 ++ fs/ceph/super.h | 17 +++----- include/linux/ceph/ceph_fs.h | 9 ++++ 8 files changed, 169 insertions(+), 53 deletions(-) -- 2.24.1