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. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html