Message ID | e2fb9618168391b74186ebc670b7741bacc1f835.1307921138.git.rees@umich.edu (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
reminder: this is a generic patch that should be pushed upstream separately. Benny On 2011-06-12 19:45, Jim Rees wrote: > From: Peng Tao <bergwolf@gmail.com> > > 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 <peng_tao@emc.com> > --- > 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; > } -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Jun 14, 2011 at 12:15 PM, Benny Halevy <bhalevy.lists@gmail.com> wrote: > reminder: this is a generic patch that should be pushed upstream > separately. > > Benny > And which in fact is currently in Trond's bugfixes branch Fred > On 2011-06-12 19:45, Jim Rees wrote: >> From: Peng Tao <bergwolf@gmail.com> >> >> 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 <peng_tao@emc.com> >> --- >> 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; >> } > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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; }