mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
ceph: use rbtree for mds requests
The rbtree is a more appropriate data structure than a radix_tree. It avoids extra memory usage and simplifies the code. It also fixes a bug where the debugfs 'mdsc' file wasn't including the most recent mds request. Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
parent
91e45ce389
commit
44ca18f268
3 changed files with 97 additions and 69 deletions
|
@ -142,21 +142,16 @@ static int monc_show(struct seq_file *s, void *p)
|
|||
static int mdsc_show(struct seq_file *s, void *p)
|
||||
{
|
||||
struct ceph_client *client = s->private;
|
||||
struct ceph_mds_request *req;
|
||||
u64 nexttid = 0;
|
||||
int got;
|
||||
struct ceph_mds_client *mdsc = &client->mdsc;
|
||||
struct ceph_mds_request *req;
|
||||
struct rb_node *rp;
|
||||
int pathlen;
|
||||
u64 pathbase;
|
||||
char *path;
|
||||
|
||||
mutex_lock(&mdsc->mutex);
|
||||
while (nexttid < mdsc->last_tid) {
|
||||
got = radix_tree_gang_lookup(&mdsc->request_tree,
|
||||
(void **)&req, nexttid, 1);
|
||||
if (got == 0)
|
||||
break;
|
||||
nexttid = req->r_tid + 1;
|
||||
for (rp = rb_first(&mdsc->request_tree); rp; rp = rb_next(rp)) {
|
||||
req = rb_entry(rp, struct ceph_mds_request, r_node);
|
||||
|
||||
if (req->r_request)
|
||||
seq_printf(s, "%lld\tmds%d\t", req->r_tid, req->r_mds);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue