Re: The INN/mmap bug

From: Alexander Viro (viro@math.psu.edu)
Date: Mon Sep 18 2000 - 00:15:07 EST


On Mon, 18 Sep 2000, Alexander Viro wrote:

> On Sun, 17 Sep 2000, Linus Torvalds wrote:
>
> > At that point, block_write_full_page() would become something like
> >
> > unsigned long index = inode->i_size >> PAGE_CACHE_SHIFT;
> >
> > offset = inode->i_size & (PAGE_CACHE_SIZE-1);
> > if (index > page->index)
> > offset = PAGE_CACHE_SIZE;
> >
> > create_empty_buffers(page, 0, offset);
> > for_each_buffer(page) {
> > if (buffer_mapped(bh))
> > mark_buffer_dirty(bh);
> > }
> >
> > which would certainly be simpler than the current code. Hmm.
>
> At that point it will become prepare_write+commit_write. Which may be a
> good thing in many other respects. I wonder if we need the
> ->writepage() at all - I seriosuly suspect that the reason why I didn't
> kill it back when I added ->prepare_write() was that I _did_ stumble on
> that bug with reads and didn't realize that.

Nope. NFS does things differently in cases of write and pageout.
Ouch. On the write path for local filesystems we generally ignore O_SYNC
for data. And IMO that's firmly on the "must be fixed before
2.4-final" side. Possibly by sync/async flag for ->commit_write()...

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



This archive was generated by hypermail 2b29 : Sat Sep 23 2000 - 21:00:16 EST