Message ID | 51043F49.2020904@inktank.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Reviewed-by: Josh Durgin <josh.durgin@inktank.com> On 01/26/2013 12:40 PM, Alex Elder wrote: > Move the code that unregisters an rbd device's lingering header > object watch request into rbd_dev_header_watch_sync(), so it > occurs in the same function that originally sets up that request. > > Signed-off-by: Alex Elder <elder@inktank.com> > --- > drivers/block/rbd.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > > diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c > index 47e5798..363a813 100644 > --- a/drivers/block/rbd.c > +++ b/drivers/block/rbd.c > @@ -1730,6 +1730,10 @@ static int rbd_dev_header_watch_sync(struct > rbd_device *rbd_dev, int start) > if (start) { > rbd_dev->watch_request = obj_request->osd_req; > ceph_osdc_set_request_linger(osdc, rbd_dev->watch_request); > + } else { > + ceph_osdc_unregister_linger_request(osdc, > + rbd_dev->watch_request); > + rbd_dev->watch_request = NULL; > } > ret = rbd_obj_request_submit(osdc, obj_request); > if (ret) > @@ -4040,12 +4044,6 @@ static void rbd_dev_release(struct device *dev) > { > struct rbd_device *rbd_dev = dev_to_rbd_dev(dev); > > - if (rbd_dev->watch_request) { > - struct ceph_client *client = rbd_dev->rbd_client->client; > - > - ceph_osdc_unregister_linger_request(&client->osdc, > - rbd_dev->watch_request); > - } > if (rbd_dev->watch_event) > rbd_dev_header_watch_sync(rbd_dev, 0); > -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index 47e5798..363a813 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -1730,6 +1730,10 @@ static int rbd_dev_header_watch_sync(struct rbd_device *rbd_dev, int start) if (start) { rbd_dev->watch_request = obj_request->osd_req; ceph_osdc_set_request_linger(osdc, rbd_dev->watch_request); + } else { + ceph_osdc_unregister_linger_request(osdc, + rbd_dev->watch_request); + rbd_dev->watch_request = NULL; } ret = rbd_obj_request_submit(osdc, obj_request);
Move the code that unregisters an rbd device's lingering header object watch request into rbd_dev_header_watch_sync(), so it occurs in the same function that originally sets up that request. Signed-off-by: Alex Elder <elder@inktank.com> --- drivers/block/rbd.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) if (ret) @@ -4040,12 +4044,6 @@ static void rbd_dev_release(struct device *dev) { struct rbd_device *rbd_dev = dev_to_rbd_dev(dev); - if (rbd_dev->watch_request) { - struct ceph_client *client = rbd_dev->rbd_client->client; - - ceph_osdc_unregister_linger_request(&client->osdc, - rbd_dev->watch_request); - } if (rbd_dev->watch_event) rbd_dev_header_watch_sync(rbd_dev, 0);