Message ID | 20250321213328.1170234-1-daeho43@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [f2fs-dev,v2] f2fs: support zero sized file truncate for device aliasing files | expand |
Do we still need this patch? On 03/21, Daeho Jeong wrote: > From: Daeho Jeong <daehojeong@google.com> > > support a file truncation to zero size for device aliasing files. > > Signed-off-by: Daeho Jeong <daehojeong@google.com> > --- > v2: make the extent length zero > --- > fs/f2fs/file.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > index f92a9fba9991..69952f208086 100644 > --- a/fs/f2fs/file.c > +++ b/fs/f2fs/file.c > @@ -775,6 +775,11 @@ int f2fs_do_truncate_blocks(struct inode *inode, u64 from, bool lock) > f2fs_update_time(sbi, REQ_TIME); > > f2fs_put_page(ipage, 1); > + > + write_lock(&et->lock); > + et->largest.len = 0; > + write_unlock(&et->lock); > + > goto out; > } > > @@ -1036,7 +1041,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, > -- > 2.49.0.395.g12beb8f557-goog >
On Mon, Mar 24, 2025 at 9:28 AM Jaegeuk Kim <jaegeuk@kernel.org> wrote: > > Do we still need this patch? Yes, in many circumstances, we cannot remove the aliasing file because of SELinux. > > On 03/21, Daeho Jeong wrote: > > From: Daeho Jeong <daehojeong@google.com> > > > > support a file truncation to zero size for device aliasing files. > > > > Signed-off-by: Daeho Jeong <daehojeong@google.com> > > --- > > v2: make the extent length zero > > --- > > fs/f2fs/file.c | 7 ++++++- > > 1 file changed, 6 insertions(+), 1 deletion(-) > > > > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > > index f92a9fba9991..69952f208086 100644 > > --- a/fs/f2fs/file.c > > +++ b/fs/f2fs/file.c > > @@ -775,6 +775,11 @@ int f2fs_do_truncate_blocks(struct inode *inode, u64 from, bool lock) > > f2fs_update_time(sbi, REQ_TIME); > > > > f2fs_put_page(ipage, 1); > > + > > + write_lock(&et->lock); > > + et->largest.len = 0; > > + write_unlock(&et->lock); > > + > > goto out; > > } > > > > @@ -1036,7 +1041,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, > > -- > > 2.49.0.395.g12beb8f557-goog > >
On 3/22/25 05:33, Daeho Jeong wrote: > From: Daeho Jeong <daehojeong@google.com> > > support a file truncation to zero size for device aliasing files. > > Signed-off-by: Daeho Jeong <daehojeong@google.com> > --- > v2: make the extent length zero > --- > fs/f2fs/file.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > index f92a9fba9991..69952f208086 100644 > --- a/fs/f2fs/file.c > +++ b/fs/f2fs/file.c > @@ -775,6 +775,11 @@ int f2fs_do_truncate_blocks(struct inode *inode, u64 from, bool lock) > f2fs_update_time(sbi, REQ_TIME); > > f2fs_put_page(ipage, 1); > + > + write_lock(&et->lock); > + et->largest.len = 0; > + write_unlock(&et->lock); f2fs_mark_inode_dirty_sync(inode, true); ? Thanks, > + > goto out; > } > > @@ -1036,7 +1041,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,
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index f92a9fba9991..69952f208086 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -775,6 +775,11 @@ int f2fs_do_truncate_blocks(struct inode *inode, u64 from, bool lock) f2fs_update_time(sbi, REQ_TIME); f2fs_put_page(ipage, 1); + + write_lock(&et->lock); + et->largest.len = 0; + write_unlock(&et->lock); + goto out; } @@ -1036,7 +1041,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,