Re: [PATCH] 2.4.x write barriers (updated for ext3)

Jeremy Higdon
2002-03-04T06:11:20Z

On Mar 4, 6:31am, Daniel Phillips wrote:
> On March 4, 2002 05:21 am, Jeremy Higdon wrote:
> > On Mar 3, 11:11pm, Daniel Phillips wrote:
> > > I have a standing offer from at least one engineer to make firmware changes
> > > to the drives if it makes Linux work better. So a reasonable plan is: first
> > > know what's ideal, second ask for it. Coupled with that, we'd need a way of
> > > identifying drives that don't work in the ideal way, and require a fallback.
> > >
> > > In my opinion, the only correct behavior is a write barrier that completes
> > > when data is on the platter, and that does this even when write-back is
> > > enabled. Surely this is not rocket science at the disk firmware level. Is
> > > this or is this not the way ordered tags were supposed to work?
> >
> > Ordered tags just specify ordering in the command stream. The WCE bit
> > specifies when the write command is complete.
>
> WCE is per-command? And 0 means no caching, so the command must complete
> when the data is on the media?

My reading is that WCE==1 means that the command is complete when the
data is in the drive buffer.

> > I have never heard of
> > any implied requirement to flush to media when a drive receives an
> > ordered tag and WCE is set. It does seem like a useful feature to have
> > in the standard, but I don't think it's there.
>
> It seems to be pretty strongly implied that things should work that way.
> What is the use of being sure the write with the ordered tag is on media
> if you're not sure about the writes that were supposedly supposed to
> precede it? Spelling this out would indeed be helpful.

WCE==1 and ordered tag means that the data for previous commands is in
the drive buffer before the data for the ordered tag is in the drive
buffer.

> > So if one vendor implements those semantics, but the others don't where
> > does that leave us?
>
> It leaves us with a vendor we want to buy our drives from, if we want our
> data to be safe.

The point is, do you write code that depends on one vendor's interpretation?
If so, then the vendor needs to be identified. Perhaps other vendors will
then align themselves.

> Daniel

jeremy