diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2007-10-26 13:31:47 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-01-30 02:05:43 -0500 |
commit | 8a8c74bf94fcdec058062d331b3d9777910778ab (patch) | |
tree | 66dd009e6d11a1bfa15d294aa2458086f80c963f /fs/nfs/inode.c | |
parent | 9b45b74ce2234ca15131ec0725010c1da818df05 (diff) |
NFS: Ensure nfs_wcc_update_inode always converts file size to loff_t
The nfs_wcc_update_inode() function omits logic to convert the type of
the NFS on-the-wire value of a file's size (__u64) to the type of file
size value stored in struct inode (loff_t, which is signed).
Everywhere else in the NFS client I checked already correctly converts the
file size type.
This effects only very large files.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/inode.c')
-rw-r--r-- | fs/nfs/inode.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index db5d96dc6107..cd0e57f3a00f 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c | |||
@@ -814,8 +814,9 @@ static void nfs_wcc_update_inode(struct inode *inode, struct nfs_fattr *fattr) | |||
814 | if (S_ISDIR(inode->i_mode)) | 814 | if (S_ISDIR(inode->i_mode)) |
815 | nfsi->cache_validity |= NFS_INO_INVALID_DATA; | 815 | nfsi->cache_validity |= NFS_INO_INVALID_DATA; |
816 | } | 816 | } |
817 | if (inode->i_size == fattr->pre_size && nfsi->npages == 0) | 817 | if (inode->i_size == nfs_size_to_loff_t(fattr->pre_size) && |
818 | inode->i_size = fattr->size; | 818 | nfsi->npages == 0) |
819 | inode->i_size = nfs_size_to_loff_t(fattr->size); | ||
819 | } | 820 | } |
820 | } | 821 | } |
821 | 822 | ||