Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 975241af authored by Alex Elder's avatar Alex Elder Committed by Sage Weil
Browse files

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: default avatarAlex Elder <elder@inktank.com>
Reviewed-by: default avatarJosh Durgin <josh.durgin@inktank.com>
parent 6977c3f9
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -272,7 +272,7 @@ struct rbd_device {
	struct ceph_file_layout	layout;
	struct ceph_file_layout	layout;


	struct ceph_osd_event   *watch_event;
	struct ceph_osd_event   *watch_event;
	struct ceph_osd_request *watch_request;
	struct rbd_obj_request	*watch_request;


	struct rbd_spec		*parent_spec;
	struct rbd_spec		*parent_spec;
	u64			parent_overlap;
	u64			parent_overlap;
@@ -1719,11 +1719,11 @@ static int rbd_dev_header_watch_sync(struct rbd_device *rbd_dev, int start)
		goto out_cancel;
		goto out_cancel;


	if (start) {
	if (start) {
		rbd_dev->watch_request = obj_request->osd_req;
		ceph_osdc_set_request_linger(osdc, obj_request->osd_req);
		ceph_osdc_set_request_linger(osdc, rbd_dev->watch_request);
		rbd_dev->watch_request = obj_request;
	} else {
	} else {
		ceph_osdc_unregister_linger_request(osdc,
		ceph_osdc_unregister_linger_request(osdc,
						rbd_dev->watch_request);
					rbd_dev->watch_request->osd_req);
		rbd_dev->watch_request = NULL;
		rbd_dev->watch_request = NULL;
	}
	}
	ret = rbd_obj_request_submit(osdc, obj_request);
	ret = rbd_obj_request_submit(osdc, obj_request);