From: Sage Weil Date: Mon, 28 Apr 2008 20:53:27 +0000 (-0700) Subject: kclient: clean up req refcounting in osdc X-Git-Tag: v0.2~92 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e0b8b28e5b57edd84631a1a066a0a9ecc0356fbb;p=ceph.git kclient: clean up req refcounting in osdc --- diff --git a/src/kernel/osd_client.c b/src/kernel/osd_client.c index 7b676cdbcf8..5be83df74ef 100644 --- a/src/kernel/osd_client.c +++ b/src/kernel/osd_client.c @@ -72,6 +72,7 @@ static struct ceph_osd_request *alloc_request(int nr_pages, return ERR_PTR(-ENOMEM); req->r_request = msg; req->r_nr_pages = nr_pages; + atomic_set(&req->r_ref, 1); memset(&req->r_last_osd, 0, sizeof(req->r_last_osd)); return req; } @@ -98,10 +99,10 @@ static int register_request(struct ceph_osd_client *osdc, req->r_pgid.pg64 = le64_to_cpu(head->layout.ol_pgid); req->r_reply = 0; req->r_result = 0; - atomic_set(&req->r_ref, 2); /* one for request_tree, one for caller */ init_completion(&req->r_completion); dout(30, "register_request %p tid %lld\n", req, req->r_tid); + get_request(req); rc = radix_tree_insert(&osdc->request_tree, req->r_tid, (void *)req); if (osdc->nr_requests == 0)