Updated in v2 by dropping the obsolete user.fadvise/chmod case and restricting the fix to ATTR_SIZE on immutable large-folio mappings. https://lore.kernel.org/linux-f2fs-devel/[email protected]/T/#u
On Wed, Jun 10, 2026 at 8:26 AM Jaegeuk Kim <[email protected]> wrote: > > On 05/21, Wenjie Qi wrote: > > F2FS large folio support is read-only. It rejects writable opens and > > mmap writes when an inode mapping supports large folios, but setattr can > > still reach the inode without going through those checks. > > > > For immutable large-folio files, clearing the immutable flag keeps the > > cached inode and its large-folio mapping alive until the inode is > > dropped. A path-based truncate(2) can then call f2fs_setattr() with > > ATTR_SIZE and change the file size without opening the file for write. > > > > The user.fadvise path adds another visible case: after the file is > > reopened with large folios, chmod(WRITE) is documented to fail, but > > f2fs_setattr() currently allows ATTR_MODE to add write bits back. > > We don't add this anymore. Can you update? > > > > > Reject size changes and mode changes that enable write permissions while > > the mapping still supports large folios. Read-only mode changes and > > unrelated metadata updates remain allowed. > > > > Fixes: 05e65c14ea59 ("f2fs: support large folio for immutable > > non-compressed case") > > Signed-off-by: Wenjie Qi <[email protected]> > > --- > > fs/f2fs/file.c | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > > index 71385ca4163d..3880ff5e6740 100644 > > --- a/fs/f2fs/file.c > > +++ b/fs/f2fs/file.c > > @@ -1097,6 +1097,11 @@ int f2fs_setattr(struct mnt_idmap *idmap, struct > > dentry *dentry, > > ATTR_GID | ATTR_TIMES_SET)))) > > return -EPERM; > > > > + if (mapping_large_folio_support(inode->i_mapping) && > > + ((attr->ia_valid & ATTR_SIZE) || > > + ((attr->ia_valid & ATTR_MODE) && (attr->ia_mode & 0222)))) > > + return -EOPNOTSUPP; > > + > > if ((attr->ia_valid & ATTR_SIZE)) { > > if (!f2fs_is_compress_backend_ready(inode) || > > IS_DEVICE_ALIASING(inode)) > > -- > > 2.43.0 > > > > > > > > _______________________________________________ > > Linux-f2fs-devel mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
