[PATCH linux-2.6-block:post-2.6.15 00/10] blk: reimplementation of I/O barrier

[PATCH linux-2.6-block:post-2.6.15 00/10] blk: reimplementation of I/O barrier

Post by Tejun He » Sat, 19 Nov 2005 00:40:09


ello, Jens, James, Jeff and Bartlomiej.

This is the fifth posting of blk ordered reimplementation. The
last posting was on 19th, Oct.

http://marc.theaimsgroup.com/?l=linux-kernel&m=112972609907761&w=2

The generic dispatch queue patchset which is required for this ordered
patchset has made it into the main tree.

http://marc.theaimsgroup.com/?l=linux-kernel&m=112972555921965&w=2

Changes from the previous post are...

* As core blk files have moved from drivers/block/ to block/, patches
are updated accordingly.

* In 04_blk_scsi-update-ordered, sd_prepare_flush() is updated to
initialize rq->cmd_len properly. This used to work like this
previously but something broke it. Note that the original flush
code is broken too. James, can you please verify this?

* libata has gone through some changes since last posting. libata
updates are rewritten. Jeff, please review #07 and #08.

Other than above three, nothing has changed. Jens, after reviewing,
can we push these into -mm?

Thanks. :-)

[ Start of patch descriptions ]

01_blk_add-uptodate-to-end_that_request_last.patch
: add @uptodate to end_that_request_last() and @error to rq_end_io_fn()

Add @uptodate argument to end_that_request_last() and @error
to rq_end_io_fn(). There's no generic way to pass error code
to request completion function, making generic error handling
of non-fs request difficult (rq->errors is driver-specific and
each driver uses it differently). This patch adds @uptodate
to end_that_request_last() and @error to rq_end_io_fn().

For fs requests, this doesn't really matter, so just using the
same uptodate argument used in the last call to
end_that_request_first() should suffice. IMHO, this can also
help the generic command-carrying request Jens is working on.

02_blk_implement-init_request_from_bio.patch
: separate out bio init part from __make_request

Separate out bio initialization part from __make_request. It
will be used by the following blk_ordered_reimpl.

03_blk_reimplement-ordered.patch
: reimplement handling of barrier request

Reimplement handling of barrier requests.

* Flexible handling to deal with various capabilities of
target devices.
* Retry support for falling back.
* Tagged queues which don't support ordered tag can do ordered.

04_blk_scsi-update-ordered.patch
: update SCSI to use new blk_ordered

All ordered request related stuff delegated to HLD. Midlayer
now doens't deal with ordered setting or prepare_flush
callback. sd.c updated to deal with blk_queue_ordered
setting. Currently, ordered tag isn't used as SCSI midlayer
cannot guarantee request ordering.

05_blk_scsi-add-fua-support.patch
: add FUA support to SCSI disk

Add FUA support to SCSI disk.

06_blk_libata-update-ordered.patch
: update libata to use new blk_ordered

Reflect changes in SCSI midlayer and updated to use new
ordered request implementation

07_blk_libata-add-fua-support.patch
: add FUA support to libata

Add FUA support to libata.

08_blk_ide-update-ordered.patch
: update IDE to use new blk_ordered

Update IDE to use new blk_ordered.

09_blk_ide-add-fua-support.patch
: add FUA support to IDE

Add FUA support to IDE

10_blk_add-barrier-doc.patch
: I/O barrier documentation

I/O barrier do