From patchwork Sun Jun 12 23:45:12 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Rees X-Patchwork-Id: 873602 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.4) with ESMTP id p5CNhqAK007930 for ; Sun, 12 Jun 2011 23:45:15 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754726Ab1FLXpO (ORCPT ); Sun, 12 Jun 2011 19:45:14 -0400 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 Received: from localhost (localhost.localdomain [127.0.0.1]) by int-mailstore01.merit.edu (Postfix) with ESMTP id B317030852E3; Sun, 12 Jun 2011 19:45:13 -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 AU1wrnoISkoU; Sun, 12 Jun 2011 19:45:13 -0400 (EDT) Received: from merit.edu (74-126-0-171.static.123.net [74.126.0.171]) by int-mailstore01.merit.edu (Postfix) with ESMTPSA id 372163084FE6; Sun, 12 Jun 2011 19:45:13 -0400 (EDT) X-Mailbox-Line: From e2fb9618168391b74186ebc670b7741bacc1f835 Mon Sep 17 00:00:00 2001 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 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]); Sun, 12 Jun 2011 23:45:16 +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 --- 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; }