Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754970AbZDDQTd (ORCPT ); Sat, 4 Apr 2009 12:19:33 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752632AbZDDQTX (ORCPT ); Sat, 4 Apr 2009 12:19:23 -0400 Received: from mx2.netapp.com ([216.240.18.37]:16795 "EHLO mx2.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752596AbZDDQTW (ORCPT ); Sat, 4 Apr 2009 12:19:22 -0400 X-IronPort-AV: E=Sophos;i="4.39,324,1235980800"; d="scan'208";a="150101489" Subject: Re: bus errors on nfs writes in latest git From: Trond Myklebust To: "J. Bruce Fields" Cc: linux-nfs@vger.kernel.org, Nick Piggin , linux-kernel@vger.kernel.org In-Reply-To: <20090404161447.GE495@fieldses.org> References: <20090404161447.GE495@fieldses.org> Content-Type: text/plain Content-Transfer-Encoding: 7bit Organization: NetApp Date: Sat, 04 Apr 2009 12:19:09 -0400 Message-Id: <1238861949.8114.3.camel@heimdal.trondhjem.org> Mime-Version: 1.0 X-Mailer: Evolution 2.26.0 X-OriginalArrivalTime: 04 Apr 2009 16:19:19.0704 (UTC) FILETIME=[1B954980:01C9B541] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2883 Lines: 79 On Sat, 2009-04-04 at 12:14 -0400, J. Bruce Fields wrote: > My regular connecthon tests are reporting bus errors on the "write/read > 30 MB file" on recent upstream kernels. I'm travelling and haven't had > a chance to do anything beyond kick off a dumb git-bisect, which pointed > the blame at the following commit. Any ideas? > > --b. > > > commit c2ec175c39f62949438354f603f4aa170846aabb > Author: Nick Piggin > Date: Tue Mar 31 15:23:21 2009 -0700 > > mm: page_mkwrite change prototype to match fault > > Change the page_mkwrite prototype to take a struct vm_fault, and return > VM_FAULT_xxx flags. There should be no functional change. > > This makes it possible to return much more detailed error information to > the VM (and also can provide more information eg. virtual_address to the > driver, which might be important in some special cases). > > This is required for a subsequent fix. And will also make it easier to > merge page_mkwrite() with fault() in future. > > Signed-off-by: Nick Piggin > Cc: Chris Mason > Cc: Trond Myklebust > Cc: Miklos Szeredi > Cc: Steven Whitehouse > Cc: Mark Fasheh > Cc: Joel Becker > Cc: Artem Bityutskiy > Cc: Felix Blyakher > Signed-off-by: Andrew Morton > Signed-off-by: Linus Torvalds > diff --git a/fs/nfs/file.c b/fs/nfs/file.c > index 90f292b..cec7939 100644 > --- a/fs/nfs/file.c > +++ b/fs/nfs/file.c > @@ -451,8 +451,9 @@ const struct address_space_operations nfs_file_aops = { > .launder_page = nfs_launder_page, > }; > > -static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct page *page) > +static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf) > { > + struct page *page = vmf->page; > struct file *filp = vma->vm_file; > struct dentry *dentry = filp->f_path.dentry; > unsigned pagelen; > @@ -483,6 +484,8 @@ static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct page *page) > ret = pagelen; ^^^^^^^^^^^^^^^^^^ This would explain it. I assume that we're actually supposed to return 0 in case of success. > out_unlock: > unlock_page(page); > + if (ret) > + ret = VM_FAULT_SIGBUS; > return ret; > } > -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@netapp.com www.netapp.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/