rbd: assign watch request more directly
authorAlex Elder <elder@inktank.com>
Tue, 20 Nov 2012 20:17:17 +0000 (14:17 -0600)
committerAlex Elder <elder@inktank.com>
Thu, 17 Jan 2013 22:34:59 +0000 (16:34 -0600)
commit8b84de7940b69fd7326946ba244621aa5fc412e0
treee485144bdb7078a512c60e3c30dac24203fed047
parent5efea49a98d1a3b3a7301d3a17f826ad4c31b290
rbd: assign watch request more directly

Both rbd_req_sync_op() and rbd_do_request() have a "linger"
parameter, which is the address of a pointer that should refer to
the osd request structure used to issue a request to an osd.

Only one case ever supplies a non-null "linger" argument: an
CEPH_OSD_OP_WATCH start.  And in that one case it is assigned
&rbd_dev->watch_request.

Within rbd_do_request() (where the assignment ultimately gets made)
we know the rbd_dev and therefore its watch_request field.  We
also know whether the op being sent is CEPH_OSD_OP_WATCH start.

Stop opaquely passing down the "linger" pointer, and instead just
assign the value directly inside rbd_do_request() when it's needed.

This makes it unnecessary for rbd_req_sync_watch() to make
arrangements to hold a value that's not available until a
bit later.  This more clearly separates setting up a watch
request from submitting it.

Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
drivers/block/rbd.c