NFS41: do not update isize if inode needs layoutcommit
authorPeng Tao <bergwolf@gmail.com>
Sun, 17 Oct 2010 05:07:46 +0000 (22:07 -0700)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 15 Jun 2011 15:24:28 +0000 (11:24 -0400)
commit0f66b5984df2fe1617c05900a39a7ef493ca9de9
tree682ad324d9cfab94ffde805c6ca0372f7f40d3d3
parent0b760113a3a155269a3fba93a409c640031dd68f
NFS41: do not update isize if inode needs layoutcommit

nfs_update_inode will update isize if there is no queued pages. For pNFS,
layoutcommit is supposed to change file size on server, the same effect as queued
pages. nfs_update_inode may be called when dirty pages are written back (nfsi->npages==0)
but layoutcommit is not sent, and it will change client file size according to server
file size. Then client ends up losing what it just writes back in pNFS path.
So we should skip updating client file size if file needs layoutcommit.

Signed-off-by: Peng Tao <peng_tao@emc.com>
Cc: stable@kernel.org [2.6.39]
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/inode.c