Re: ext3_ordered_writepage() questions

From: Stephen C. Tweedie
Date: Fri Mar 17 2006 - 16:48:18 EST


Hi,

On Fri, 2006-03-17 at 15:32 +0000, Jamie Lokier wrote:

> That's the wrong way around for uses which check mtimes to revalidate
> information about a file's contents.

It's actually the right way for newly-allocated data: the blocks being
written early are invisible until the mtime update, because the mtime
update is an atomic part of the transaction which links the blocks into
the inode.

> Local search engines like Beagle, and also anything where "make" is
> involved, and "rsync" come to mind.

Make and rsync (when writing, that is) are not usually updating in
place, so they do in fact want the current ordered mode.

It's *only* for updating existing data blocks that there's any
justification for writing mtime first. That's the question here.

There's a significant cost in forcing the mtime to go first: it means
that the VM cannot perform any data writeback for data written by a
transaction until the transaction has first been committed. That's the
last thing you want to be happening under VM pressure, as you may not in
fact be able to close the transaction without first allocating more
memory.

--Stephen

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/