summaryrefslogtreecommitdiffstats
path: root/fs/ceph/mds_client.h
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2009-12-21 20:40:34 -0800
committerSage Weil <sage@newdream.net>2009-12-23 08:17:14 -0800
commit5dacf09121ffb2e5fc7d15b78cae0b77042a1935 (patch)
tree8a4ec2fde459f93936a91644d024673d37347408 /fs/ceph/mds_client.h
parent7067f797b8409f1e10ec95ac2c1e17a200173d13 (diff)
downloadlinux-5dacf09121ffb2e5fc7d15b78cae0b77042a1935.tar.gz
linux-5dacf09121ffb2e5fc7d15b78cae0b77042a1935.tar.bz2
linux-5dacf09121ffb2e5fc7d15b78cae0b77042a1935.zip
ceph: do not touch_caps while iterating over caps list
Avoid confusing iterate_session_caps(), flag the session while we are iterating so that __touch_cap does not rearrange items on the list. All other modifiers of session->s_caps do so under the protection of s_mutex. Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/mds_client.h')
-rw-r--r--fs/ceph/mds_client.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h
index 41af5ca316e6..b1c2025227c5 100644
--- a/fs/ceph/mds_client.h
+++ b/fs/ceph/mds_client.h
@@ -114,6 +114,7 @@ struct ceph_mds_session {
int s_num_cap_releases;
struct list_head s_cap_releases; /* waiting cap_release messages */
struct list_head s_cap_releases_done; /* ready to send */
+ bool s_iterating_caps;
/* protected by mutex */
struct list_head s_cap_flushing; /* inodes w/ flushing caps */