summaryrefslogtreecommitdiffstats
path: root/fs/ceph/mds_client.h
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2010-05-13 12:01:13 -0700
committerSage Weil <sage@newdream.net>2010-05-17 10:25:45 -0700
commitb4556396fac5b3f063d5b8ac54dc02f7612a75e1 (patch)
tree30f24bd81c4c007dd09fc625f202854803dd2628 /fs/ceph/mds_client.h
parente1518c7c0a67a75727f7285780dbef0ca7121cc9 (diff)
downloadop-kernel-dev-b4556396fac5b3f063d5b8ac54dc02f7612a75e1.zip
op-kernel-dev-b4556396fac5b3f063d5b8ac54dc02f7612a75e1.tar.gz
ceph: fix race between aborted requests and fill_trace
When we abort requests we need to prevent fill_trace et al from doing anything that relies on locks held by the VFS caller. This fixes a race between the reply handler and the abort code, ensuring that continue holding the dir mutex until the reply handler completes. Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/mds_client.h')
-rw-r--r--fs/ceph/mds_client.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h
index 0b1dd10b..141a265 100644
--- a/fs/ceph/mds_client.h
+++ b/fs/ceph/mds_client.h
@@ -165,6 +165,8 @@ struct ceph_mds_request {
struct inode *r_locked_dir; /* dir (if any) i_mutex locked by vfs */
struct inode *r_target_inode; /* resulting inode */
+ struct mutex r_fill_mutex;
+
union ceph_mds_request_args r_args;
int r_fmode; /* file mode, if expecting cap */
OpenPOWER on IntegriCloud