Skip to content

Commit

Permalink
rbd: unregister linger in watch sync routine
Browse files Browse the repository at this point in the history
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>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
  • Loading branch information
Alex Elder authored and Sage Weil committed Feb 14, 2013
1 parent 9f20e02 commit 6977c3f
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions drivers/block/rbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1721,6 +1721,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)
Expand Down Expand Up @@ -3995,12 +3999,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);

Expand Down

0 comments on commit 6977c3f

Please sign in to comment.