diff options
author | Yehuda Sadeh <yehuda@hq.newdream.net> | 2010-06-17 19:16:12 -0400 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-08-01 23:11:40 -0400 |
commit | 37151668bad3fd058368752bee476f2ba3645596 (patch) | |
tree | 6eeae77dfa1c758ff03659b5677f474a72fbe7c0 /fs/ceph/mds_client.h | |
parent | 0deb01c9998f8112c5e478e3fe3a930131abbc0a (diff) |
ceph: do caps accounting per mds_client
Caps related accounting is now being done per mds client instead
of just being global. This prepares ground work for a later revision
of the caps preallocated reservation list.
Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/mds_client.h')
-rw-r--r-- | fs/ceph/mds_client.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h index e389902db131..8f2126321f2d 100644 --- a/fs/ceph/mds_client.h +++ b/fs/ceph/mds_client.h | |||
@@ -151,6 +151,7 @@ typedef void (*ceph_mds_request_callback_t) (struct ceph_mds_client *mdsc, | |||
151 | struct ceph_mds_request { | 151 | struct ceph_mds_request { |
152 | u64 r_tid; /* transaction id */ | 152 | u64 r_tid; /* transaction id */ |
153 | struct rb_node r_node; | 153 | struct rb_node r_node; |
154 | struct ceph_mds_client *r_mdsc; | ||
154 | 155 | ||
155 | int r_op; /* mds op code */ | 156 | int r_op; /* mds op code */ |
156 | int r_mds; | 157 | int r_mds; |
@@ -267,6 +268,27 @@ struct ceph_mds_client { | |||
267 | spinlock_t cap_dirty_lock; /* protects above items */ | 268 | spinlock_t cap_dirty_lock; /* protects above items */ |
268 | wait_queue_head_t cap_flushing_wq; | 269 | wait_queue_head_t cap_flushing_wq; |
269 | 270 | ||
271 | /* | ||
272 | * Cap reservations | ||
273 | * | ||
274 | * Maintain a global pool of preallocated struct ceph_caps, referenced | ||
275 | * by struct ceph_caps_reservations. This ensures that we preallocate | ||
276 | * memory needed to successfully process an MDS response. (If an MDS | ||
277 | * sends us cap information and we fail to process it, we will have | ||
278 | * problems due to the client and MDS being out of sync.) | ||
279 | * | ||
280 | * Reservations are 'owned' by a ceph_cap_reservation context. | ||
281 | */ | ||
282 | spinlock_t caps_list_lock; | ||
283 | struct list_head caps_list; /* unused (reserved or | ||
284 | unreserved) */ | ||
285 | int caps_total_count; /* total caps allocated */ | ||
286 | int caps_use_count; /* in use */ | ||
287 | int caps_reserve_count; /* unused, reserved */ | ||
288 | int caps_avail_count; /* unused, unreserved */ | ||
289 | int caps_min_count; /* keep at least this many | ||
290 | (unreserved) */ | ||
291 | |||
270 | #ifdef CONFIG_DEBUG_FS | 292 | #ifdef CONFIG_DEBUG_FS |
271 | struct dentry *debugfs_file; | 293 | struct dentry *debugfs_file; |
272 | #endif | 294 | #endif |