summaryrefslogtreecommitdiffstats
path: root/fs/ceph/super.h
diff options
context:
space:
mode:
authorSage Weil2010-02-17 19:02:43 +0100
committerSage Weil2010-02-17 19:02:43 +0100
commit85ccce43a3fc15a40ded6ae1603e3f68a17f4d24 (patch)
tree1e15fb7dc7df43da4a3feacff671c8169e96291d /fs/ceph/super.h
parentceph: fix authentication races, auth_none oops (diff)
downloadkernel-qcow2-linux-85ccce43a3fc15a40ded6ae1603e3f68a17f4d24.tar.gz
kernel-qcow2-linux-85ccce43a3fc15a40ded6ae1603e3f68a17f4d24.tar.xz
kernel-qcow2-linux-85ccce43a3fc15a40ded6ae1603e3f68a17f4d24.zip
ceph: clean up readdir caps reservation
Use a global counter for the minimum number of allocated caps instead of hard coding a check against readdir_max. This takes into account multiple client instances, and avoids examining the superblock mount options when a cap is dropped. Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/super.h')
-rw-r--r--fs/ceph/super.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index 1f3928785e12..3b5faf9980f8 100644
--- a/fs/ceph/super.h
+++ b/fs/ceph/super.h
@@ -129,6 +129,8 @@ struct ceph_client {
int auth_err;
+ int min_caps; /* min caps i added */
+
struct ceph_messenger *msgr; /* messenger instance */
struct ceph_mon_client monc;
struct ceph_mds_client mdsc;
@@ -557,11 +559,12 @@ extern int __ceph_caps_mds_wanted(struct ceph_inode_info *ci);
extern void ceph_caps_init(void);
extern void ceph_caps_finalize(void);
+extern void ceph_adjust_min_caps(int delta);
extern int ceph_reserve_caps(struct ceph_cap_reservation *ctx, int need);
extern int ceph_unreserve_caps(struct ceph_cap_reservation *ctx);
extern void ceph_reservation_status(struct ceph_client *client,
int *total, int *avail, int *used,
- int *reserved);
+ int *reserved, int *min);
static inline struct ceph_client *ceph_inode_to_client(struct inode *inode)
{