Messages in this thread | | | From | Nick Piggin <> | Subject | Re: [PATCH 24/28] AFS: Add a function to excise a rejected write from the pagecache [try #2] | Date | Fri, 21 Dec 2007 12:11:14 +1100 |
| |
On Friday 21 December 2007 05:49, David Howells wrote: > Nick Piggin <nickpiggin@yahoo.com.au> wrote: > > > Nick Piggin <nickpiggin@yahoo.com.au> wrote: > > > > This reintroduces the fault vs truncate race window, which must be > > > > fixed. > > > > > > Hmmm... perhaps. > > > > What do you mean by perhaps? > > I mean 'perhaps'. I'm not sure I remember what the race was, so I can't > evaluate whether or not the same race crops up in AFS too. So: can you > describe the race please.
It's in the changelogs.
> > No, you could do writeback caching but disallow read of dirty data. > > Someone might already have read-access via mmap at the point someone > attempts to write to an mmapped region. That means that I'd have to revoke > the read access of the first someone before letting the write take place. > > Does NFS do this?
I don't know. But yeah I guess it's tricky. Still, if I was writing a filesystem, I'd focus on behavioural niceness/correctness above performance, but maybe that's not realistic.
> > > > But otherwise I guess if you really want to discard the dirty data > > > > after a failed writeback attempt, what's wrong with just > > > > invalidate_inode_pages2? > > > > > > Erm... Because it deadlocks? > > > > Why don't you call it after calling end_page_writeback? > > Because then there can be a race over who gets to flush the dead write.
You should solve it in your filesystem.
> Actually, this may no longer be a problem with your write_begin() changes. > I'll need to have another look at those. > > Besides, I don't agree that invalidate_inode_pages2() is necessarily the > right way to do things.
Why?
| |