Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
if ((attr->ia_valid & ~ATTR_FILE) == 0)
return 0;
if ((attr->ia_valid & ~ATTR_FILE) == 0)
return 0;
/* Write all dirty data */
if (S_ISREG(inode->i_mode)) {
filemap_write_and_wait(inode->i_mapping);
/* Write all dirty data */
if (S_ISREG(inode->i_mode)) {
filemap_write_and_wait(inode->i_mapping);
error = NFS_PROTO(inode)->setattr(dentry, &fattr, attr);
if (error == 0)
nfs_refresh_inode(inode, &fattr);
error = NFS_PROTO(inode)->setattr(dentry, &fattr, attr);
if (error == 0)
nfs_refresh_inode(inode, &fattr);
inode->i_sb->s_id, (long long)NFS_FILEID(inode));
nfs_inc_stats(inode, NFSIOS_INODEREVALIDATE);
inode->i_sb->s_id, (long long)NFS_FILEID(inode));
nfs_inc_stats(inode, NFSIOS_INODEREVALIDATE);
if (is_bad_inode(inode))
goto out_nowait;
if (NFS_STALE(inode))
if (is_bad_inode(inode))
goto out_nowait;
if (NFS_STALE(inode))
nfs_wake_up_inode(inode);
out_nowait:
nfs_wake_up_inode(inode);
out_nowait:
error = server->nfs_client->rpc_ops->statfs(server, fh, &res);
if (error < 0)
goto out_err;
error = server->nfs_client->rpc_ops->statfs(server, fh, &res);
if (error < 0)
goto out_err;
buf->f_namelen = server->namelen;
buf->f_namelen = server->namelen;
return 0;
out_err:
dprintk("%s: statfs error = %d\n", __func__, -error);
return 0;
out_err:
dprintk("%s: statfs error = %d\n", __func__, -error);