]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commit
ceph: attempt to do async create when possible
authorJeff Layton <jlayton@kernel.org>
Wed, 27 Nov 2019 17:06:14 +0000 (12:06 -0500)
committerJeff Layton <jlayton@kernel.org>
Fri, 10 Jan 2020 16:53:57 +0000 (11:53 -0500)
commit4fc56b484fc5dc805e26081efa2fd9fe63734a1f
tree58c1101d090972f7972728ba149c3e9a6f64eaef
parent0413b3ae939801ceb4bd8ea6ec2c03ba1dc73178
ceph: attempt to do async create when possible

With the Octopus release, the MDS will hand out directoy create caps.
If we have Fxc caps on the directory, and complete directory information
or a known negative dentry, then we can return without waiting on the
reply, allowing the open() call to return very quickly to userland.

We use the normal ceph_fill_inode() routine to fill in the inode, so we
have to gin up some reply inode information with what we'd expect a
newly-created inode to have. The client assumes that it has a full set
of caps on the new inode, and that the MDS will revoke them when there
is conflicting access.

This functionality is gated on the enable_async_dirops module option,
along with async unlinks.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
fs/ceph/file.c
fs/ceph/mds_client.c
fs/ceph/super.h
include/linux/ceph/ceph_fs.h