linux/fs/ceph
Yan, Zheng 4d41cef279 ceph: return error for traceless reply race
When we receives traceless reply for request that created new inode,
we re-send a lookup request to MDS get information of the newly created
inode. (VFS expects FS' callback return an inode in create case)
This breaks one request into two requests. Other client may modify or
move to the new inode in the middle.

When the race happens, ceph_handle_notrace_create() unconditionally
links the dentry for 'create' operation to the inode returned by lookup.
This may confuse VFS when the inode is a directory (VFS does not allow
multiple linkages for directory inode).

This patch makes ceph_handle_notrace_create() when it detect a race.
This event should be rare and it happens only when we talk to old MDS.
Recent MDS does not send traceless reply for request that creates new
inode.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
2015-02-19 13:31:40 +03:00
..
acl.c ceph: acl: Remove unused function 2015-02-19 13:31:38 +03:00
addr.c ceph: fix reading inline data when i_size > PAGE_SIZE 2015-02-19 13:31:39 +03:00
cache.c ceph: fscache: Wait for completion of object initialization 2014-04-03 10:33:53 +08:00
cache.h ceph: fscache: add an interface to synchronize object store limit 2014-04-03 10:33:53 +08:00
caps.c ceph: avoid block operation when !TASK_RUNNING (ceph_get_caps) 2015-02-19 13:31:38 +03:00
ceph_frag.c ceph: factor out libceph from Ceph file system 2010-10-20 15:37:28 -07:00
debugfs.c assorted conversions to %p[dD] 2014-11-19 13:01:20 -05:00
dir.c ceph: return error for traceless reply race 2015-02-19 13:31:40 +03:00
export.c ceph: ceph_get_parent() can be static 2014-06-06 09:29:50 +08:00
file.c ceph: fix atomic_open snapdir 2015-02-19 13:31:39 +03:00
inode.c ceph: fix dentry leaks 2015-02-19 13:31:40 +03:00
ioctl.c ceph: fix divide-by-zero in __validate_layout() 2014-10-14 12:57:05 -07:00
ioctl.h ceph: fully initialize new layout 2012-05-16 14:28:27 -05:00
Kconfig ceph: add acl for cephfs 2013-12-31 20:32:01 +02:00
locks.c ceph: fix file lock interruption 2014-12-17 20:09:49 +03:00
Makefile ceph: add acl for cephfs 2013-12-31 20:32:01 +02:00
mds_client.c ceph: re-send requests when MDS enters reconnecting stage 2015-02-19 13:31:40 +03:00
mds_client.h ceph: avoid block operation when !TASK_RUNNING (ceph_mdsc_close_sessions) 2015-02-19 13:31:38 +03:00
mdsmap.c fs/ceph: replace pr_warning by pr_warn 2014-06-06 16:08:06 -07:00
snap.c ceph: improve reference tracking for snaprealm 2015-02-19 13:31:38 +03:00
strings.c ceph: add get_name() NFS export callback 2014-04-03 10:33:53 +08:00
super.c ceph: show nocephx_require_signatures and notcp_nodelay options 2015-02-19 13:31:40 +03:00
super.h ceph: provide seperate {inode,file}_operations for snapdir 2015-02-19 13:31:39 +03:00
xattr.c ceph: fix setting empty extended attribute 2014-12-17 20:18:49 +03:00