diff options
author | Sage Weil <sage@newdream.net> | 2010-05-13 12:01:13 -0700 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-05-17 10:25:45 -0700 |
commit | b4556396fac5b3f063d5b8ac54dc02f7612a75e1 (patch) | |
tree | 30f24bd81c4c007dd09fc625f202854803dd2628 /fs/ceph/mds_client.h | |
parent | e1518c7c0a67a75727f7285780dbef0ca7121cc9 (diff) | |
download | op-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.h | 2 |
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 */ |