Messages in this thread | | | Date | Tue, 25 Jul 2023 18:39:25 -0700 (PDT) | From | Hugh Dickins <> | Subject | Re: [PATCH v6 3/7] tmpfs: bump the mtime/ctime/iversion when page becomes writeable |
| |
On Tue, 25 Jul 2023, Jeff Layton wrote:
> Most filesystems that use the pagecache will update the mtime, ctime, > and change attribute when a page becomes writeable. Add a page_mkwrite > operation for tmpfs and just use it to bump the mtime, ctime and change > attribute. > > This fixes xfstest generic/080 on tmpfs.
Huh. I didn't notice when this one crept into the multigrain series.
I'm inclined to NAK this patch: at the very least, it does not belong in the series, but should be discussed separately.
Yes, tmpfs does not and never has used page_mkwrite, and gains some performance advantage from that. Nobody has ever asked for this change before, or not that I recall.
Please drop it from the series: and if you feel strongly, or know strong reasons why tmpfs suddenly needs to use page_mkwrite now, please argue them separately. To pass generic/080 is not enough.
Thanks, Hugh
> > Signed-off-by: Jeff Layton <jlayton@kernel.org> > --- > mm/shmem.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/mm/shmem.c b/mm/shmem.c > index b154af49d2df..654d9a585820 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -2169,6 +2169,16 @@ static vm_fault_t shmem_fault(struct vm_fault *vmf) > return ret; > } > > +static vm_fault_t shmem_page_mkwrite(struct vm_fault *vmf) > +{ > + struct vm_area_struct *vma = vmf->vma; > + struct inode *inode = file_inode(vma->vm_file); > + > + file_update_time(vma->vm_file); > + inode_inc_iversion(inode); > + return 0; > +} > + > unsigned long shmem_get_unmapped_area(struct file *file, > unsigned long uaddr, unsigned long len, > unsigned long pgoff, unsigned long flags) > @@ -4210,6 +4220,7 @@ static const struct super_operations shmem_ops = { > > static const struct vm_operations_struct shmem_vm_ops = { > .fault = shmem_fault, > + .page_mkwrite = shmem_page_mkwrite, > .map_pages = filemap_map_pages, > #ifdef CONFIG_NUMA > .set_policy = shmem_set_policy, > @@ -4219,6 +4230,7 @@ static const struct vm_operations_struct shmem_vm_ops = { > > static const struct vm_operations_struct shmem_anon_vm_ops = { > .fault = shmem_fault, > + .page_mkwrite = shmem_page_mkwrite, > .map_pages = filemap_map_pages, > #ifdef CONFIG_NUMA > .set_policy = shmem_set_policy, > > -- > 2.41.0
| |