rbd: new request tracking code
authorAlex Elder <elder@inktank.com>
Thu, 22 Nov 2012 06:00:08 +0000 (00:00 -0600)
committerSage Weil <sage@inktank.com>
Thu, 14 Feb 2013 02:29:07 +0000 (18:29 -0800)
commitbf0d5f503dc11d6314c0503591d258d60ee9c944
treeeb76cf8e36f6b23f8d6a4ae3849cb7bca442a584
parent3ebc21f7bc2f9c0145bbbf0f12430b766a200f9f
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, for issuing
acknowledgements to event notifications, and for making object
method calls.

All rbd object requests now complete asynchronously with respect
to the osd client--they supply a common callback routine.

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

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