From patchwork Tue Jun 7 17:36:14 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Rees X-Patchwork-Id: 858812 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p57HaINa023156 for ; Tue, 7 Jun 2011 17:36:18 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753745Ab1FGRgQ (ORCPT ); Tue, 7 Jun 2011 13:36:16 -0400 Received: from int-mailstore01.merit.edu ([207.75.116.232]:44245 "EHLO int-mailstore01.merit.edu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757432Ab1FGRgQ (ORCPT ); Tue, 7 Jun 2011 13:36:16 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by int-mailstore01.merit.edu (Postfix) with ESMTP id 0EE4F305A9CC; Tue, 7 Jun 2011 13:36:16 -0400 (EDT) X-Virus-Scanned: amavisd-new at int-mailstore01.merit.edu Received: from int-mailstore01.merit.edu ([127.0.0.1]) by localhost (int-mailstore01.merit.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QdbcFWake6hI; Tue, 7 Jun 2011 13:36:15 -0400 (EDT) Received: from merit.edu (host-17.subnet-17.med.umich.edu [141.214.17.17]) by int-mailstore01.merit.edu (Postfix) with ESMTPSA id 94C543055B74; Tue, 7 Jun 2011 13:36:15 -0400 (EDT) Date: Tue, 7 Jun 2011 13:36:14 -0400 From: Jim Rees To: Benny Halevy Cc: linux-nfs@vger.kernel.org, peter honeyman Subject: [PATCH 88/88] NFS41: do not update isize if inode needs layoutcommit Message-ID: <8d4549ecda23f5ada0c88677c9505cba2830dad5.1307464382.git.rees@umich.edu> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Tue, 07 Jun 2011 17:36:18 +0000 (UTC) From: Peng Tao Layout commit is supposed to set server file size similiar to nfs pages. We should not update client file size for the same reason. Otherwise we will lose what we have at hand. Signed-off-by: Peng Tao Signed-off-by: Jim Rees --- fs/nfs/inode.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 144f2a3..3f1eb81 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c @@ -1294,7 +1294,8 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) if (new_isize != cur_isize) { /* Do we perhaps have any outstanding writes, or has * the file grown beyond our last write? */ - if (nfsi->npages == 0 || new_isize > cur_isize) { + if ((nfsi->npages == 0 && !test_bit(NFS_INO_LAYOUTCOMMIT, &nfsi->flags)) || + new_isize > cur_isize) { i_size_write(inode, new_isize); invalid |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA; }