On Tue, 22 Jul 2014, Jerome Marchand wrote: > Add a simple helper to check if a vm area belongs to shmem. > > Signed-off-by: Jerome Marchand <jmarchan@xxxxxxxxxx> > --- > include/linux/mm.h | 6 ++++++ > mm/shmem.c | 8 ++++++++ > 2 files changed, 14 insertions(+) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 34099fa..04a58d1 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1074,11 +1074,17 @@ int shmem_zero_setup(struct vm_area_struct *); > > extern int shmem_locate(struct vm_area_struct *vma, pgoff_t pgoff, int *count); > bool shmem_mapping(struct address_space *mapping); > +bool shmem_vma(struct vm_area_struct *vma); > + > #else > static inline bool shmem_mapping(struct address_space *mapping) > { > return false; > } > +static inline bool shmem_vma(struct vm_area_struct *vma) > +{ > + return false; > +} > #endif I would prefer include/linux/shmem_fs.h for this (and one of us clean up where the declarations of shmem_zero_setup and shmem_mapping live). But if 4/5 goes away, then there will only be one user of shmem_vma(), so in that case better just declare it (using shmem_mapping()) there in task_mmu.c in the smaps patch. > > extern int can_do_mlock(void); > diff --git a/mm/shmem.c b/mm/shmem.c > index 8aa4892..7d16227 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -1483,6 +1483,14 @@ bool shmem_mapping(struct address_space *mapping) > return mapping->backing_dev_info == &shmem_backing_dev_info; > } > > +bool shmem_vma(struct vm_area_struct *vma) > +{ > + return (vma->vm_file && > + vma->vm_file->f_dentry->d_inode->i_mapping->backing_dev_info > + == &shmem_backing_dev_info); > + I agree with Oleg, vma->vm_file && shmem_mapping(file_inode(vma->vm_file)->i_mapping); would be better, Hugh -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>