9p: Use netfslib read/write_iter
[linux-block.git] / fs / 9p / vfs_inode_dotl.c
index c7319af2f4711e5686f453262b6ce3eeee9e651f..e25fbc988f09537c3b70f5162ed03f6ebece7ff6 100644 (file)
@@ -598,7 +598,7 @@ int v9fs_vfs_setattr_dotl(struct mnt_idmap *idmap,
        if ((iattr->ia_valid & ATTR_SIZE) && iattr->ia_size !=
                 i_size_read(inode)) {
                truncate_setsize(inode, iattr->ia_size);
-               truncate_pagecache(inode, iattr->ia_size);
+               netfs_resize_file(netfs_inode(inode), iattr->ia_size, true);
 
 #ifdef CONFIG_9P_FSCACHE
                if (v9ses->cache & CACHE_FSCACHE)
@@ -655,6 +655,7 @@ v9fs_stat2inode_dotl(struct p9_stat_dotl *stat, struct inode *inode,
                mode |= inode->i_mode & ~S_IALLUGO;
                inode->i_mode = mode;
 
+               v9inode->netfs.remote_i_size = stat->st_size;
                if (!(flags & V9FS_STAT2INODE_KEEP_ISIZE))
                        v9fs_i_size_write(inode, stat->st_size);
                inode->i_blocks = stat->st_blocks;
@@ -683,8 +684,10 @@ v9fs_stat2inode_dotl(struct p9_stat_dotl *stat, struct inode *inode,
                        inode->i_mode = mode;
                }
                if (!(flags & V9FS_STAT2INODE_KEEP_ISIZE) &&
-                   stat->st_result_mask & P9_STATS_SIZE)
+                   stat->st_result_mask & P9_STATS_SIZE) {
+                       v9inode->netfs.remote_i_size = stat->st_size;
                        v9fs_i_size_write(inode, stat->st_size);
+               }
                if (stat->st_result_mask & P9_STATS_BLOCKS)
                        inode->i_blocks = stat->st_blocks;
        }