Message ID | 20210622121551.3398730-35-willy@infradead.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Folio-enabling the page cache | expand |
On Tue, Jun 22, 2021 at 01:15:39PM +0100, Matthew Wilcox (Oracle) wrote: > Reimplement i_blocks_per_page() as a wrapper around i_blocks_per_folio(). > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> > --- > include/linux/pagemap.h | 18 ++++++++++++------ > 1 file changed, 12 insertions(+), 6 deletions(-) > > diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h > index 31edfa891987..c30db827b65d 100644 > --- a/include/linux/pagemap.h > +++ b/include/linux/pagemap.h > @@ -1149,19 +1149,25 @@ static inline int page_mkwrite_check_truncate(struct page *page, > } > > /** > - * i_blocks_per_page - How many blocks fit in this page. > + * i_blocks_per_folio - How many blocks fit in this folio. > * @inode: The inode which contains the blocks. > - * @page: The page (head page if the page is a THP). > + * @folio: The folio. > * > - * If the block size is larger than the size of this page, return zero. > + * If the block size is larger than the size of this folio, return zero. > * > - * Context: The caller should hold a refcount on the page to prevent it > + * Context: The caller should hold a refcount on the folio to prevent it > * from being split. > - * Return: The number of filesystem blocks covered by this page. > + * Return: The number of filesystem blocks covered by this folio. > */ > +static inline > +unsigned int i_blocks_per_folio(struct inode *inode, struct folio *folio) Weirdo formatting (same as i_blocks_per_page, but I'd still rather avoid it). Otherwise looks good: Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 31edfa891987..c30db827b65d 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -1149,19 +1149,25 @@ static inline int page_mkwrite_check_truncate(struct page *page, } /** - * i_blocks_per_page - How many blocks fit in this page. + * i_blocks_per_folio - How many blocks fit in this folio. * @inode: The inode which contains the blocks. - * @page: The page (head page if the page is a THP). + * @folio: The folio. * - * If the block size is larger than the size of this page, return zero. + * If the block size is larger than the size of this folio, return zero. * - * Context: The caller should hold a refcount on the page to prevent it + * Context: The caller should hold a refcount on the folio to prevent it * from being split. - * Return: The number of filesystem blocks covered by this page. + * Return: The number of filesystem blocks covered by this folio. */ +static inline +unsigned int i_blocks_per_folio(struct inode *inode, struct folio *folio) +{ + return folio_size(folio) >> inode->i_blkbits; +} + static inline unsigned int i_blocks_per_page(struct inode *inode, struct page *page) { - return thp_size(page) >> inode->i_blkbits; + return i_blocks_per_folio(inode, page_folio(page)); } #endif /* _LINUX_PAGEMAP_H */
Reimplement i_blocks_per_page() as a wrapper around i_blocks_per_folio(). Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> --- include/linux/pagemap.h | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-)