Thread (41 messages) 41 messages, 11 authors, 2008-05-29

Re: [PATCH 0/4] (RESEND) ext3[34] barrier changes

From: Chris Mason <hidden>
Date: 2008-05-18 00:48:33
Also in: linux-fsdevel, lkml

On Friday 16 May 2008, Andrew Morton wrote:
On Fri, 16 May 2008 20:20:30 -0400 Theodore Tso [off-list ref] wrote:
quoted
On Fri, May 16, 2008 at 11:53:04PM +0100, Jamie Lokier wrote:
quoted
quoted
quoted
If you just want to test the block I/O layer and drive itself,
don't use the filesystem, but write a program which just access the
block device, continuously writing with/without barriers every so
often, and after power cycle read back to see what was and wasn't
written.
Well, I think it is worth testing through the filesystem, different
journaling mechanisms will probably react^wcorrupt in different ways.
I agree, but intentional tests on the block device will show the
drives characteristcs on power failure much sooner and more
consistently.  Then you can concentrate on the worst drivers :-)
I suspect the real reason why we get away with it so much with ext3 is
that the journal is usually contiguous on disk, hence, when you write
to the journal, it's highly unlikely that commit block will be written
and the blocks before the commit block have not.
yup.  Plus with a commit only happening once per few seconds, the time
window for a corrupting power outage is really really small, in
relative terms.  All these improbabilities multiply.
Well, the barriers happen like so (even if we actually only do one barrier in 
submit_bh, it turns into two)

write log blocks
flush #1
write commit block
flush #2
write metadata blocks

I'd agree with Ted, there's a fairly small chance of things get reordered 
around flush #1.  flush #2 is likely to have lots of reordering though.  It 
should be easy to create situations where the metadata for a transaction is 
written before the log blocks ever see the disk.

EMC did a ton of automated testing around this when Jens and I did the initial 
barrier implementations, and they were able to trigger corruptions in fsync 
heavy workloads with randomized power offs.  I'll dig up the workload they 
used.

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