ceph: attempt to do async create when possible
authorJeff Layton <jlayton@kernel.org>
Wed, 27 Nov 2019 17:06:14 +0000 (12:06 -0500)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 30 Mar 2020 10:42:42 +0000 (12:42 +0200)
commit9a8d03ca2e2c334d08ee91a3e07dcce31a02fdc6
treebf63ba96d7d997b115b009cf5d4457e5d773516e
parent785892fe88f693028a996d1cb363d60609848e5e
ceph: attempt to do async create when possible

With the Octopus release, the MDS will hand out directory 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 the
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 wsync/nowsync mount options.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: "Yan, Zheng" <zyan@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/file.c
include/linux/ceph/ceph_fs.h