All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/12] rbd: new request tracking code
@ 2013-01-22 22:25 Alex Elder
  2013-01-22 22:28 ` [PATCH 01/12] " Alex Elder
                   ` (11 more replies)
  0 siblings, 12 replies; 39+ messages in thread
From: Alex Elder @ 2013-01-22 22:25 UTC (permalink / raw)
  To: ceph-devel@vger.kernel.org

This series of patches reimplements the way rbd requests are
managed.

The motivation for doing this is that the existing code assumes
in places that every I/O request was associated with a Linux
request initiated from the block layer.  In order to support
layered rbd images, we need to initiate rbd image requests
within rbd.  In addition, the size of an rbd object in a parent
image could be smaller than the object size in the child.  That
means satisfying a request to a single object in the child image
may require issuing requests to multiple objects in the parent.
This too was not easily supported by the existing code.

In this new code, we distinguish between an "image request"
and an "object request."  An image request is an I/O
operation defined in terms of an entire rbd image--its offset
and length are relative to the image as a whole.  An object
request is a request targeted at a single rbd object.  An
image request is implemented using one or more object requests,
but individual object requests can also be used for doing
things like reading or operating on the rbd image header
object.

The new code also more clearly separates itself from the
osd client, especially with respect to request completion.
Each object request supplies a common callback function with
its osd client request.  This callback handles certain
rbd-specific tasks, like zero-filling portions of a read
buffer that were not supplied by the.  A simple wait routine
is now supplied to allow synchronous completion of an object
request.

This set of changes is available in the ceph-client git
repository branch "wip-rbd-review".  That branch also
begins with three unrelated commits (which I recently posted
for review) and ends with two others (which are temporary
and there only to test with version 2 image support
enabled).

					-Alex

[PATCH 01/12] rbd: new request tracking code
[PATCH 02/12] rbd: kill rbd_rq_fn() and all other related code
[PATCH 03/12] rbd: kill rbd_req_coll and rbd_request
[PATCH 04/12] rbd: implement sync object read with new code
[PATCH 05/12] rbd: get rid of rbd_req_sync_read()
[PATCH 06/12] rbd: implement watch/unwatch with new code
[PATCH 07/12] rbd: get rid of rbd_req_sync_watch()
[PATCH 08/12] rbd: use new code for notify ack
[PATCH 09/12] rbd: get rid of rbd_req_sync_notify_ack()
[PATCH 10/12] rbd: send notify ack asynchronously
[PATCH 11/12] rbd: implement sync method with new code
[PATCH 12/12] rbd: get rid of rbd_req_sync_exec()

^ permalink raw reply	[flat|nested] 39+ messages in thread

end of thread, other threads:[~2013-01-30  0:34 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-22 22:25 [PATCH 00/12] rbd: new request tracking code Alex Elder
2013-01-22 22:28 ` [PATCH 01/12] " Alex Elder
2013-01-24 14:08   ` [PATCH 01/12, v2] " Alex Elder
2013-01-24 16:22     ` Alex Elder
2013-01-24 16:32     ` [PATCH 02/12, v2] rbd: kill rbd_rq_fn() and all other related code Alex Elder
2013-01-29 10:44       ` Josh Durgin
2013-01-24 16:32     ` [PATCH 03/12, v2] rbd: kill rbd_req_coll and rbd_request Alex Elder
2013-01-29 10:44       ` Josh Durgin
2013-01-24 16:33     ` [PATCH 04/12, v2] rbd: implement sync object read with new code Alex Elder
2013-01-29 10:48       ` Josh Durgin
2013-01-24 16:33     ` [PATCH 05/12, v2] rbd: get rid of rbd_req_sync_read() Alex Elder
2013-01-29 10:48       ` Josh Durgin
2013-01-24 16:33     ` [PATCH 06/12, v2] rbd: implement watch/unwatch with new code Alex Elder
2013-01-29 10:53       ` Josh Durgin
2013-01-24 16:34     ` [PATCH 07/12, v2] rbd: get rid of rbd_req_sync_watch() Alex Elder
2013-01-29 10:54       ` Josh Durgin
2013-01-24 16:34     ` [PATCH 08/12, v2] rbd: use new code for notify ack Alex Elder
2013-01-29 10:58       ` Josh Durgin
2013-01-24 16:35     ` [PATCH 09/12, v2] rbd: get rid of rbd_req_sync_notify_ack() Alex Elder
2013-01-29 10:59       ` Josh Durgin
2013-01-24 16:35     ` [PATCH 10/12, v2] rbd: send notify ack asynchronously Alex Elder
2013-01-29 11:01       ` Josh Durgin
2013-01-24 16:36     ` [PATCH 11/12, v2] rbd: implement sync method with new code Alex Elder
2013-01-29 11:10       ` Josh Durgin
2013-01-24 16:36     ` [PATCH 12/12, v2] rbd: get rid of rbd_req_sync_exec() Alex Elder
2013-01-29 11:10       ` Josh Durgin
2013-01-29 10:43     ` [PATCH 01/12, v2] rbd: new request tracking code Josh Durgin
2013-01-30  0:34       ` Alex Elder
2013-01-22 22:28 ` [PATCH 02/12] rbd: kill rbd_rq_fn() and all other related code Alex Elder
2013-01-22 22:29 ` [PATCH 03/12] rbd: kill rbd_req_coll and rbd_request Alex Elder
2013-01-22 22:29 ` [PATCH 04/12] rbd: implement sync object read with new code Alex Elder
2013-01-22 22:29 ` [PATCH 05/12] rbd: get rid of rbd_req_sync_read() Alex Elder
2013-01-22 22:29 ` [PATCH 06/12] rbd: implement watch/unwatch with new code Alex Elder
2013-01-22 22:30 ` [PATCH 07/12] rbd: get rid of rbd_req_sync_watch() Alex Elder
2013-01-22 22:30 ` [PATCH 08/12] rbd: use new code for notify ack Alex Elder
2013-01-22 22:30 ` [PATCH 09/12] rbd: get rid of rbd_req_sync_notify_ack() Alex Elder
2013-01-22 22:30 ` [PATCH 10/12] rbd: send notify ack asynchronously Alex Elder
2013-01-22 22:31 ` [PATCH 11/12] rbd: implement sync method with new code Alex Elder
2013-01-22 22:31 ` [PATCH 12/12] rbd: get rid of rbd_req_sync_exec() Alex Elder

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.