From: Daeho Jeong <daehoje...@google.com>

support a file truncation to zero size for device aliasing files.

Signed-off-by: Daeho Jeong <daehoje...@google.com>
---
 fs/f2fs/file.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index f92a9fba9991..7ae5a5af5ed9 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -1036,7 +1036,7 @@ int f2fs_setattr(struct mnt_idmap *idmap, struct dentry 
*dentry,
 
        if ((attr->ia_valid & ATTR_SIZE)) {
                if (!f2fs_is_compress_backend_ready(inode) ||
-                               IS_DEVICE_ALIASING(inode))
+                               (IS_DEVICE_ALIASING(inode) && attr->ia_size))
                        return -EOPNOTSUPP;
                if (is_inode_flag_set(inode, FI_COMPRESS_RELEASED) &&
                        !IS_ALIGNED(attr->ia_size,
@@ -1117,6 +1117,9 @@ int f2fs_setattr(struct mnt_idmap *idmap, struct dentry 
*dentry,
                if (err)
                        return err;
 
+               if (IS_DEVICE_ALIASING(inode))
+                       f2fs_destroy_extent_tree(inode);
+
                spin_lock(&fi->i_size_lock);
                inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
                fi->last_disk_size = i_size_read(inode);
-- 
2.49.0.rc1.451.g8f38331e32-goog



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to