libceph: unregister request in __map_request failed and nofail == false
authormajianpeng <majianpeng@gmail.com>
Tue, 16 Jul 2013 07:45:48 +0000 (15:45 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Mar 2014 23:10:05 +0000 (16:10 -0700)
commit 73d9f7eef3d98c3920e144797cc1894c6b005a1e upstream.

For nofail == false request, if __map_request failed, the caller does
cleanup work, like releasing the relative pages.  It doesn't make any sense
to retry this request.

Signed-off-by: Jianpeng Ma <majianpeng@gmail.com>
Reviewed-by: Sage Weil <sage@inktank.com>
[bwh: Backported to 3.2: adjust indentation]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Cc: Rui Xiang <rui.xiang@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/ceph/osd_client.c

index 8e3aa4dc5bec3c629daf1804d3481787eeea692c..d8f031a762ae1a20c60f168ee6d9affb909dbc4b 100644 (file)
@@ -1721,6 +1721,8 @@ int ceph_osdc_start_request(struct ceph_osd_client *osdc,
                                dout("osdc_start_request failed map, "
                                     " will retry %lld\n", req->r_tid);
                                rc = 0;
+                       } else {
+                               __unregister_request(osdc, req);
                        }
                        goto out_unlock;
                }