On Tue, 12 Sep 2000, Daniel Phillips wrote:

> Alexander Viro wrote:
> > Do it in ->prepare_write() if page is the last one. End of story. You'll
> > have to call the thing in your truncate() (expanding case) and that's it.
> > Pageout _never_ changes the file size, write and truncate own the ->i_sem.
> > So "page covers the end of file" is not going to change under you when you
> > are interested in unmerging. Here's your serialization.
> 
> The prepare_write methods are not called consistently across all the
> block_*_page functions, something I complained about previously:

Yeah, but these are on different level. Notice that mm/filemap.c stuff 
doesn't know about them - otherwise it wouldn't work for NFS and friends.

IOW, you have "file IO over address_space" library (mm/filemap.c) and you
have "address_space for block filesystems" helpers (fs/buffer.c). As long
as you provide address_space_operations that work correctly you can use
the former verbatim - it simply doesn't care for anything block-related.

Now, implementation of the address_space methods seriously depends on fs
type - normal UNIX vs. no-holes vs. extents vs. fragments vs. tails, etc.
will make a lot of difference. They all share some pieces, but there's
nothing wrong with having different helper functions for them. Yes, right
now we have only two such sets (block_... and cont_...) and they happen to
behave the same way upon writepage, so there is no cont_write_full_page() 
helper. That's it...

-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to [EMAIL PROTECTED]

Reply via email to