diff options
author | Sage Weil <sage@newdream.net> | 2010-02-15 23:47:28 +0100 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-02-17 07:01:10 +0100 |
commit | 85ff03f6bfef7d5b59ab3aefd4773f497ffad8a4 (patch) | |
tree | ef0a700d68f87b84ebb235c2ed7aae69c7414a8d /fs/ceph/debugfs.c | |
parent | ceph: use rbtree for snap_realms (diff) | |
download | linux-85ff03f6bfef7d5b59ab3aefd4773f497ffad8a4.tar.xz linux-85ff03f6bfef7d5b59ab3aefd4773f497ffad8a4.zip |
ceph: use rbtree for mon statfs requests
An rbtree is lighter weight, particularly given we will generally have
very few in-flight statfs requests.
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/debugfs.c')
-rw-r--r-- | fs/ceph/debugfs.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c index cd5dd805e4be..b58bd9188692 100644 --- a/fs/ceph/debugfs.c +++ b/fs/ceph/debugfs.c @@ -112,9 +112,8 @@ static int monc_show(struct seq_file *s, void *p) { struct ceph_client *client = s->private; struct ceph_mon_statfs_request *req; - u64 nexttid = 0; - int got; struct ceph_mon_client *monc = &client->monc; + struct rb_node *rp; mutex_lock(&monc->mutex); @@ -125,17 +124,12 @@ static int monc_show(struct seq_file *s, void *p) if (monc->want_next_osdmap) seq_printf(s, "want next osdmap\n"); - while (nexttid < monc->last_tid) { - got = radix_tree_gang_lookup(&monc->statfs_request_tree, - (void **)&req, nexttid, 1); - if (got == 0) - break; - nexttid = req->tid + 1; - + for (rp = rb_first(&monc->statfs_request_tree); rp; rp = rb_next(rp)) { + req = rb_entry(rp, struct ceph_mon_statfs_request, node); seq_printf(s, "%lld statfs\n", req->tid); } - mutex_unlock(&monc->mutex); + mutex_unlock(&monc->mutex); return 0; } |