rbd: new request tracking code

This patch fully implements the new request tracking code for rbd
I/O requests.

Each I/O request to an rbd image will get an rbd_image_request
structure allocated to track it.  This provides access to all
information about the original request, as well as access to the
set of one or more object requests that are initiated as a result
of the image request.

An rbd_obj_request structure defines a request sent to a single osd
object possibly as part of an rbd image request.  An rbd object
request refers to a ceph_osd_request structure built up to represent
the request; for now it will contain a single osd operation.  It
also provides space to hold the result status and the version of the
object when the osd request completes.

An rbd_obj_request structure can also stand on its own.  This will
be used for reading the version 1 header object, and for issuing
acknowledgements to event notifications.

All rbd object requests now complete asynchronously with respect
to the osd client--they supply a common callback routine.  A caller
can wait for completion for an rbd_obj_request using a separate
rbd_obj_request_wait() routine.  This will be used for reading
the image header.

Signed-off-by: Alex Elder <elder@inktank.com>
rbd: use new code for notify ack

Use the new object request tracking mechanism for handling a
notify_ack request.  Create a new object request type "nodata"
to handle this.

This resolves: http://tracker.newdream.net/issues/3754

Signed-off-by: Alex Elder <elder@inktank.com>
rbd: kill rbd_rq_fn() and all other related code

Now that the request function has been replaced by one using the new
request management data structures the old one can go away.
Deleting it makes rbd_dev_do_request() no longer needed, and
deleting that makes other functions unneeded, and so on.

Signed-off-by: Alex Elder <elder@inktank.com>
rbd: kill rbd_req_coll and rbd_request

The two remaining callers of rbd_do_request() always pass a null
collection pointer, so the "coll" and "coll_index" parameters are
not needed.  There is no other use of that data structure, so it
can be eliminated.

Deleting them means there is no need to allocate a rbd_request
structure for the callback function.  And since that's the only use
of *that* structure, it too can be eliminated.

Signed-off-by: Alex Elder <elder@inktank.com>