Thread (66 messages) 66 messages, 14 authors, 2007-07-18

Re: [RFD] BIO_RW_BARRIER - what it means for devices, filesystems, and dm/md.

From: Jens Axboe <hidden>
Date: 2007-07-09 12:27:35
Also in: dm-devel, linux-fsdevel, lkml

Possibly related (same subject, not in this thread)

On Thu, Jul 05 2007, Tejun Heo wrote:
Hello, Jens.

Jens Axboe wrote:
quoted
On Mon, May 28 2007, Neil Brown wrote:
quoted
I think the implementation priorities here are:

1/ implement a zero-length BIO_RW_BARRIER option.
2/ Use it (or otherwise) to make all dm and md modules handle
   barriers (and loop?).
3/ Devise and implement appropriate fall-backs with-in the block layer
   so that  -EOPNOTSUP is never returned.
4/ Remove unneeded cruft from filesystems (and elsewhere).
This is the start of 1/ above. It's very lightly tested, it's verified
to DTRT here at least and not crash :-)

It gets rid of the ->issue_flush_fn() queue callback, all the driver
knowledge resides in ->prepare_flush_fn() anyways. blkdev_issue_flush()
then just reuses the empty-bio approach to queue an empty barrier, this
should work equally well for stacked and non-stacked devices.

While this patch isn't complete yet, it's clearly the right direction to
go.
Finally took a brief look. :-) I think the sequencing for zero-length
barrier can be better done by pre-setting QUEUE_ORDSEQ_BAR in
start_ordered() rather than short circuiting the request after it's
issued.  What do you think?
Yeah, that might be cleaner and should achieve the same effect. I'll
test!

-- 
Jens Axboe
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help