From f9109a482671577c8c1039645e72caf33919eabb Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Sun, 30 Sep 2007 15:13:17 -0400 Subject: [PATCH] --- yaml --- r: 69261 b: refs/heads/master c: b64e8a5ef758888cb42b7c105dcfaaf51aab1baf h: refs/heads/master i: 69259: 5e867caddc01404b333691572ba4ed3df7882ad5 v: v3 --- [refs] | 2 +- trunk/fs/nfs/inode.c | 15 +++------------ 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/[refs] b/[refs] index 85fa7ddd2186..e7ff842c676e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7fdc49c4e49ba926348f71844cda7f5e12709738 +refs/heads/master: b64e8a5ef758888cb42b7c105dcfaaf51aab1baf diff --git a/trunk/fs/nfs/inode.c b/trunk/fs/nfs/inode.c index 185cfd09d7f7..23feb9e3d8b0 100644 --- a/trunk/fs/nfs/inode.c +++ b/trunk/fs/nfs/inode.c @@ -942,7 +942,6 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) loff_t cur_isize, new_isize; unsigned int invalid = 0; unsigned long now = jiffies; - int data_stable; dfprintk(VFS, "NFS: %s(%s/%ld ct=%d info=0x%x)\n", __FUNCTION__, inode->i_sb->s_id, inode->i_ino, @@ -969,8 +968,6 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) nfsi->read_cache_jiffies = fattr->time_start; nfsi->last_updated = now; - /* Are we racing with known updates of the metadata on the server? */ - data_stable = nfs_verify_change_attribute(inode, fattr->time_start); nfsi->cache_validity &= ~(NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ATIME | NFS_INO_REVAL_PAGECACHE); @@ -1002,15 +999,9 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) new_isize = nfs_size_to_loff_t(fattr->size); cur_isize = i_size_read(inode); if (new_isize != cur_isize) { - /* Do we perhaps have any outstanding writes? */ - if (nfsi->npages == 0) { - /* No, but did we race with nfs_end_data_update()? */ - if (data_stable) { - inode->i_size = new_isize; - invalid |= NFS_INO_INVALID_DATA; - } - invalid |= NFS_INO_INVALID_ATTR; - } else 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) { inode->i_size = new_isize; invalid |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA; }