Messages in this thread | | | Date | Sat, 9 Jan 2010 01:46:34 +0000 | From | Al Viro <> | Subject | Re: [RFC PATCH 0/2] Fix up the NFS mmap code |
| |
On Sat, Jan 09, 2010 at 01:38:25AM +0000, Al Viro wrote: > On Fri, Jan 08, 2010 at 05:17:14PM -0800, Linus Torvalds wrote: > > > > > > On Fri, 8 Jan 2010, Trond Myklebust wrote: > > > > > > How about something like the following. I chose to wrap the call to > > > do_mmap_pgoff() instead of making a special ->pre_mmap(), since that > > > seems more consistent with the way we handle ->read() and ->write(). > > > > I still don't think that you can ever do mmap _and_ readdir on the same > > inode, so there's something wrong with the lockdep annotations. > > readdir() is certainly a red herring. write(), OTOH, is quite real. > And there we do i_mutex followed by pagefaults. > > I *REALLY* dislike Trond's solution, though. > > Could we please get a sane expalanation of the reasons why nfs mmap > wants i_mutex in the first place? Before we add yet another hook > from hell and complicate already overcomplicated area...
PS: mmap/write deadlock is real, AFAICT - unless something very subtle prevents it, we can get buggered if we have two threads with the same VM, mmap 1.4Mb from floppy and do thread A: write(fd_on_nfs, buffer_mmaped_from_floppy, 1440 * 1024); thread B: mmap(..., fd_on_nfs, ...)
It's not even particulary narrow.
| |