Hi, Please do sbi conversion first, and apply this change.
On 06/18, wangzijie wrote: > To prevent scattered pin block generation, don't allow non-section aligned > truncation > to smaller or equal size on pinned file. But for truncation to larger size, > after > commit 3fdd89b452c2("f2fs: prevent writing without fallocate() for pinned > files"), > we only support overwrite IO to pinned file, so we don't need to consider > attr->ia_size > i_size case. > > Signed-off-by: wangzijie <wangzij...@honor.com> > --- > v3: > - cover attr->ia_size == i_size case > v2: > - add comments and change a proper subject > --- > fs/f2fs/file.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > index 6bd3de64f..9e0f1c98f 100644 > --- a/fs/f2fs/file.c > +++ b/fs/f2fs/file.c > @@ -1026,6 +1026,7 @@ int f2fs_setattr(struct mnt_idmap *idmap, struct dentry > *dentry, > { > struct inode *inode = d_inode(dentry); > struct f2fs_inode_info *fi = F2FS_I(inode); > + struct f2fs_sb_info *sbi = F2FS_I_SB(inode); > int err; > > if (unlikely(f2fs_cp_error(F2FS_I_SB(inode)))) > @@ -1047,6 +1048,17 @@ int f2fs_setattr(struct mnt_idmap *idmap, struct > dentry *dentry, > !IS_ALIGNED(attr->ia_size, > F2FS_BLK_TO_BYTES(fi->i_cluster_size))) > return -EINVAL; > + /* > + * To prevent scattered pin block generation, we don't allow > + * smaller/equal size unaligned truncation for pinned file. > + * We only support overwrite IO to pinned file, so don't > + * care about larger size truncation. > + */ > + if (f2fs_is_pinned_file(inode) && > + attr->ia_size <= i_size_read(inode) && > + !IS_ALIGNED(attr->ia_size, > + F2FS_BLK_TO_BYTES(CAP_BLKS_PER_SEC(sbi)))) > + return -EINVAL; > } > > err = setattr_prepare(idmap, dentry, attr); > -- > 2.25.1 _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel