On Fri, Nov 21, 2025 at 03:27:18AM +0000, Jaegeuk Kim wrote: > This patch introduces a new POSIX_FADV_MLOCK which 1) invalidates the range of > cached pages, 2) sets the mapping as inaccessible, 3) POSIX_FADV_WILLNEED > loads > pages directly to the inaccessible mapping.
... what? This seems like something which is completely different from mlock(). So it needs a different name. But I don't understand the point of this, whatever it's called. Need more information. > The inaccessible pages will be invalidated by evict_inode or explicit > munlock(). > > Cc: Matthew Wilcox (Oracle) <[email protected]> > Cc: Christian Brauner <[email protected]> > Signed-off-by: Jaegeuk Kim <[email protected]> > --- > include/uapi/linux/fadvise.h | 2 ++ > mm/fadvise.c | 14 ++++++++++++++ > 2 files changed, 16 insertions(+) > > diff --git a/include/uapi/linux/fadvise.h b/include/uapi/linux/fadvise.h > index 0862b87434c2..06018688b99b 100644 > --- a/include/uapi/linux/fadvise.h > +++ b/include/uapi/linux/fadvise.h > @@ -19,4 +19,6 @@ > #define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ > #endif > > +#define POSIX_FADV_MLOCK 8 /* Load pages into inaccessible map. */ > + > #endif /* FADVISE_H_INCLUDED */ > diff --git a/mm/fadvise.c b/mm/fadvise.c > index 588fe76c5a14..849b151d2024 100644 > --- a/mm/fadvise.c > +++ b/mm/fadvise.c > @@ -56,6 +56,7 @@ int generic_fadvise(struct file *file, loff_t offset, > loff_t len, int advice) > case POSIX_FADV_WILLNEED: > case POSIX_FADV_NOREUSE: > case POSIX_FADV_DONTNEED: > + case POSIX_FADV_MLOCK: > /* no bad return value, but ignore advice */ > break; > default: > @@ -93,6 +94,19 @@ int generic_fadvise(struct file *file, loff_t offset, > loff_t len, int advice) > file->f_mode &= ~FMODE_RANDOM; > spin_unlock(&file->f_lock); > break; > + case POSIX_FADV_MLOCK: > + /* Remove the cached pages. */ > + if (!mapping_unevictable(mapping)) { > + invalidate_inode_pages2_range(mapping, > + offset >> PAGE_SHIFT, > + (offset + len - 1) >> PAGE_SHIFT); > + > + /* set the mapping is unevictable */ > + filemap_invalidate_lock(mapping); > + mapping_set_inaccessible(mapping); > + filemap_invalidate_unlock(mapping); > + } > + fallthrough; > case POSIX_FADV_WILLNEED: > /* First and last PARTIAL page! */ > start_index = offset >> PAGE_SHIFT; > -- > 2.52.0.487.g5c8c507ade-goog > _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
