rbd: track object rather than osd request for watch
Switch to keeping track of the object request pointer rather than
the osd request used to watch the rbd image header object.
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 5593def..fc1a045 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -272,7 +272,7 @@
struct ceph_file_layout layout;
struct ceph_osd_event *watch_event;
- struct ceph_osd_request *watch_request;
+ struct rbd_obj_request *watch_request;
struct rbd_spec *parent_spec;
u64 parent_overlap;
@@ -1719,11 +1719,11 @@
goto out_cancel;
if (start) {
- rbd_dev->watch_request = obj_request->osd_req;
- ceph_osdc_set_request_linger(osdc, rbd_dev->watch_request);
+ ceph_osdc_set_request_linger(osdc, obj_request->osd_req);
+ rbd_dev->watch_request = obj_request;
} else {
ceph_osdc_unregister_linger_request(osdc,
- rbd_dev->watch_request);
+ rbd_dev->watch_request->osd_req);
rbd_dev->watch_request = NULL;
}
ret = rbd_obj_request_submit(osdc, obj_request);