diff options
author | Sage Weil <sage@newdream.net> | 2010-02-17 13:02:43 -0500 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-02-17 13:02:43 -0500 |
commit | 85ccce43a3fc15a40ded6ae1603e3f68a17f4d24 (patch) | |
tree | 1e15fb7dc7df43da4a3feacff671c8169e96291d /fs/ceph/super.c | |
parent | 5ce6e9dbe6805ab8ee67e21936d17f431adc63c6 (diff) |
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.c')
-rw-r--r-- | fs/ceph/super.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/ceph/super.c b/fs/ceph/super.c index 39aaf29a04a0..74953be75f8f 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c | |||
@@ -578,6 +578,9 @@ static struct ceph_client *ceph_create_client(struct ceph_mount_args *args) | |||
578 | if (!client->wb_pagevec_pool) | 578 | if (!client->wb_pagevec_pool) |
579 | goto fail_trunc_wq; | 579 | goto fail_trunc_wq; |
580 | 580 | ||
581 | /* caps */ | ||
582 | client->min_caps = args->max_readdir; | ||
583 | ceph_adjust_min_caps(client->min_caps); | ||
581 | 584 | ||
582 | /* subsystems */ | 585 | /* subsystems */ |
583 | err = ceph_monc_init(&client->monc, client); | 586 | err = ceph_monc_init(&client->monc, client); |
@@ -619,6 +622,8 @@ static void ceph_destroy_client(struct ceph_client *client) | |||
619 | ceph_monc_stop(&client->monc); | 622 | ceph_monc_stop(&client->monc); |
620 | ceph_osdc_stop(&client->osdc); | 623 | ceph_osdc_stop(&client->osdc); |
621 | 624 | ||
625 | ceph_adjust_min_caps(-client->min_caps); | ||
626 | |||
622 | ceph_debugfs_client_cleanup(client); | 627 | ceph_debugfs_client_cleanup(client); |
623 | destroy_workqueue(client->wb_wq); | 628 | destroy_workqueue(client->wb_wq); |
624 | destroy_workqueue(client->pg_inv_wq); | 629 | destroy_workqueue(client->pg_inv_wq); |