On Sat, Apr 25, 2009 at 10:57:08AM -0400, Trond Myklebust wrote: > On Fri, 2009-04-24 at 05:26 -0400, Rince wrote: > > Applied try 3 of Nick Piggin's patch to 2.6.30-rc3 (cleanly, no less!) > > > > Doesn't appear to have helped at all - I received my favorite BUG ON > > write.c:252 just like always, within 24 hours of booting the kernel, > > even. > > Can you apply the following incremental patch on top of Nick's. This > appears to suffice to close the race on my setup. Thanks, yes that looks good. Note: I deliberately didn't try to convert filesystems because it needs much better understanding of each one. So any fs maintainers using page_mkwrite I hope have looked at these patches and considered whether they need to do anything differently (ditto for the page_mkwrite return value fixup patch). Thanks, Nick > > Cheers > Trond > --------------------------------------------------------------------- > >From f0258852dcb43c748854d2ee550c9c270bb25f21 Mon Sep 17 00:00:00 2001 > From: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> > Date: Fri, 24 Apr 2009 17:32:22 -0400 > Subject: [PATCH] NFS: Close page_mkwrite() races > > Follow up to Nick Piggin's patches to ensure that nfs_vm_page_mkwrite > returns with the page lock held, and sets the VM_FAULT_LOCKED flag. > > Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> > --- > fs/nfs/file.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/fs/nfs/file.c b/fs/nfs/file.c > index 5a97bcf..ec7e27d 100644 > --- a/fs/nfs/file.c > +++ b/fs/nfs/file.c > @@ -517,10 +517,10 @@ static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf) > > ret = nfs_updatepage(filp, page, 0, pagelen); > out_unlock: > + if (!ret) > + return VM_FAULT_LOCKED; > unlock_page(page); > - if (ret) > - ret = VM_FAULT_SIGBUS; > - return ret; > + return VM_FAULT_SIGBUS; > } > > static struct vm_operations_struct nfs_file_vm_ops = { > -- > 1.6.0.6 > > -- 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