lkml.org 
[lkml]   [2020]   [Jun]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v6 15/51] fs: Do not update nr_thps for mappings which support THPs
    Date
    From: "Matthew Wilcox (Oracle)" <willy@infradead.org>

    The nr_thps counter is to support THPs in the page cache when the
    filesystem doesn't understand THPs. Eventually it will be removed, but
    we should still support filesystems which do not understand THPs yet.
    Move the nr_thp manipulation functions to filemap.h since they're
    page-cache specific.

    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    ---
    include/linux/fs.h | 27 ---------------------------
    include/linux/pagemap.h | 29 +++++++++++++++++++++++++++++
    2 files changed, 29 insertions(+), 27 deletions(-)

    diff --git a/include/linux/fs.h b/include/linux/fs.h
    index ac411a08f83c..e11929152103 100644
    --- a/include/linux/fs.h
    +++ b/include/linux/fs.h
    @@ -2839,33 +2839,6 @@ static inline errseq_t file_sample_sb_err(struct file *file)
    return errseq_sample(&file->f_path.dentry->d_sb->s_wb_err);
    }

    -static inline int filemap_nr_thps(struct address_space *mapping)
    -{
    -#ifdef CONFIG_READ_ONLY_THP_FOR_FS
    - return atomic_read(&mapping->nr_thps);
    -#else
    - return 0;
    -#endif
    -}
    -
    -static inline void filemap_nr_thps_inc(struct address_space *mapping)
    -{
    -#ifdef CONFIG_READ_ONLY_THP_FOR_FS
    - atomic_inc(&mapping->nr_thps);
    -#else
    - WARN_ON_ONCE(1);
    -#endif
    -}
    -
    -static inline void filemap_nr_thps_dec(struct address_space *mapping)
    -{
    -#ifdef CONFIG_READ_ONLY_THP_FOR_FS
    - atomic_dec(&mapping->nr_thps);
    -#else
    - WARN_ON_ONCE(1);
    -#endif
    -}
    -
    extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end,
    int datasync);
    extern int vfs_fsync(struct file *file, int datasync);
    diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
    index 8a45b572bcf1..644caff3e78b 100644
    --- a/include/linux/pagemap.h
    +++ b/include/linux/pagemap.h
    @@ -125,6 +125,35 @@ static inline bool mapping_thp_support(struct address_space *mapping)
    return test_bit(AS_THP_SUPPORT, &mapping->flags);
    }

    +static inline int filemap_nr_thps(struct address_space *mapping)
    +{
    +#ifdef CONFIG_READ_ONLY_THP_FOR_FS
    + return atomic_read(&mapping->nr_thps);
    +#else
    + return 0;
    +#endif
    +}
    +
    +static inline void filemap_nr_thps_inc(struct address_space *mapping)
    +{
    +#ifdef CONFIG_READ_ONLY_THP_FOR_FS
    + if (!mapping_thp_support(mapping))
    + atomic_inc(&mapping->nr_thps);
    +#else
    + WARN_ON_ONCE(1);
    +#endif
    +}
    +
    +static inline void filemap_nr_thps_dec(struct address_space *mapping)
    +{
    +#ifdef CONFIG_READ_ONLY_THP_FOR_FS
    + if (!mapping_thp_support(mapping))
    + atomic_dec(&mapping->nr_thps);
    +#else
    + WARN_ON_ONCE(1);
    +#endif
    +}
    +
    void release_pages(struct page **pages, int nr);

    /*
    --
    2.26.2
    \
     
     \ /
      Last update: 2020-06-10 22:18    [W:4.272 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site