aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph/super.h
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2010-02-17 10:02:43 -0800
committerSage Weil <sage@newdream.net>2010-02-17 10:02:43 -0800
commit85ccce43a3fc15a40ded6ae1603e3f68a17f4d24 (patch)
tree1e15fb7dc7df43da4a3feacff671c8169e96291d /fs/ceph/super.h
parent5ce6e9dbe6805ab8ee67e21936d17f431adc63c6 (diff)
downloadkernel_samsung_smdk4412-85ccce43a3fc15a40ded6ae1603e3f68a17f4d24.zip
kernel_samsung_smdk4412-85ccce43a3fc15a40ded6ae1603e3f68a17f4d24.tar.gz
kernel_samsung_smdk4412-85ccce43a3fc15a40ded6ae1603e3f68a17f4d24.tar.bz2
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 1f39287..3b5faf9 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)
{