Re: + fs-prepare_write-fixes.patch added to -mm tree

From: Nick Piggin
Date: Thu Oct 19 2006 - 19:27:35 EST


Mark Fasheh wrote:
On Thu, Oct 19, 2006 at 07:25:37AM +0200, Nick Piggin wrote:

I sent an RFC to linux-fsdevel, did you get that?

Yeah, I don't think I thought of my concerns at the time.



I was planning to cc some maintainers, including you, for those
filesystems that are non-trivial. I just hadn't had a chance to
test it properly last night.

Cool, I appreciate that.

OK, I will be posting that mail tomorrow or next day... I'll summarise
your concerns you've posted in this thread too.


OK thanks for looking at that. If the length of the commit is greater
than 0 (but still short), then the page is uptodate so it should be
fine to commit what we have written, I think?

That seems to make sense to me.



If the length is zero, then we probably want to roll back entirely.

The thing is, rollback might be hard (or expensive) for some file systems
with more complicated tree implementations, etc.

Do we have the option in this case of just zeroing the newly allocated
portions and writing them out? Userspace would then just be seeing
that like any other hole.

Sure that's possible. You could even recognise that it is a hole in your
prepare_write, and zero the page and set it uptodate there.

You probably don't actually want to do that, because it means a double
overwrite in the case of a page sized,aligned write... but you have a
fairly broad scope of what you can do here. You are holding i_mutex and
the page lock, and the rest is up to you.

zeroing out the hole and marking it uptodate in case of a 0 length
->commit_write does sound like the right way to go. I probably haven't
handled that correctly if it needs to be done in ext? or generic fs/
routines...

--
SUSE Labs, Novell Inc.
Send instant messages to your online friends http://au.messenger.yahoo.com -
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/