From mboxrd@z Thu Jan 1 00:00:00 1970 From: Trond Myklebust Subject: Re: [PATCH 6/6] NFS: return -EAGAIN when skipped commit in nfs_commit_unstable_pages() Date: Mon, 18 Apr 2011 23:29:07 -0400 Message-ID: <1303183747.5417.11.camel@lade.trondhjem.org> References: <20110419030003.108796967@intel.com> <20110419030532.902141228@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT Cc: Andrew Morton , Jan Kara , Mel Gorman , Dave Chinner , Itaru Kitayama , Minchan Kim , LKML , linux-fsdevel@vger.kernel.org, Linux Memory Management List To: Wu Fengguang Return-path: Received: from mx2.netapp.com ([216.240.18.37]:60234 "EHLO mx2.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754381Ab1DSD3J convert rfc822-to-8bit (ORCPT ); Mon, 18 Apr 2011 23:29:09 -0400 In-Reply-To: <20110419030532.902141228@intel.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Tue, 2011-04-19 at 11:00 +0800, Wu Fengguang wrote: > plain text document attachment (nfs-fix-write_inode-retval.patch) > It's probably not sane to return success while redirtying the inode at > the same time in ->write_inode(). > > CC: Trond Myklebust > Signed-off-by: Wu Fengguang > --- > fs/nfs/write.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > --- linux-next.orig/fs/nfs/write.c 2011-04-19 10:18:16.000000000 +0800 > +++ linux-next/fs/nfs/write.c 2011-04-19 10:18:32.000000000 +0800 > @@ -1519,7 +1519,7 @@ static int nfs_commit_unstable_pages(str > { > struct nfs_inode *nfsi = NFS_I(inode); > int flags = FLUSH_SYNC; > - int ret = 0; > + int ret = -EAGAIN; > > if (wbc->sync_mode == WB_SYNC_NONE) { > /* Don't commit yet if this is a non-blocking flush and there > > Hi Fengguang, I don't understand the purpose of this patch... Currently, the value of 'ret' only affects the case where the commit exits early due to this being a non-blocking flush where we have not yet written back enough pages to make it worth our while to send a commit. In essence, this really only matters for the cases where someone calls 'write_inode_now' (not used by anybody calling into the NFS client) and 'sync_inode', which is only called by nfs_wb_all (with sync_mode = WB_SYNC_ALL). So can you please elaborate on the possible use cases for this change? Cheers Trond -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@netapp.com www.netapp.com