Return-Path: Received: from int-mailstore01.merit.edu ([207.75.116.232]:45802 "EHLO int-mailstore01.merit.edu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754717Ab1FLXpO (ORCPT ); Sun, 12 Jun 2011 19:45:14 -0400 Message-Id: In-Reply-To: References: Date: Sun, 12 Jun 2011 19:45:12 -0400 Subject: [PATCH 34/34] NFS41: do not update isize if inode needs layoutcommit From: Jim Rees To: linux-nfs@vger.kernel.org Cc: peter honeyman Sender: linux-nfs-owner@vger.kernel.org List-ID: Content-Type: text/plain MIME-Version: 1.0 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 --- 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; } -- 1.7.4.1