diff options
author | Matthew Wilcox (Oracle) <willy@infradead.org> | 2022-02-03 07:29:45 +0300 |
---|---|---|
committer | Matthew Wilcox (Oracle) <willy@infradead.org> | 2022-03-21 19:59:02 +0300 |
commit | f087b903fc2e4975bff9742a66ee7a837a2f545b (patch) | |
tree | 44458a068d264ff0559b1c77a5d246dd0c1d510b | |
parent | 346cf61311f6e348337e95aa2febe29e86137f42 (diff) | |
download | linux-f087b903fc2e4975bff9742a66ee7a837a2f545b.tar.xz |
mm: Add folio_pgoff()
This is the folio equivalent of page_to_pgoff().
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
-rw-r--r-- | include/linux/pagemap.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index f968b36ad771..a73c928e1d74 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -817,6 +817,17 @@ static inline loff_t folio_file_pos(struct folio *folio) return page_file_offset(&folio->page); } +/* + * Get the offset in PAGE_SIZE (even for hugetlb folios). + * (TODO: hugetlb folios should have ->index in PAGE_SIZE) + */ +static inline pgoff_t folio_pgoff(struct folio *folio) +{ + if (unlikely(folio_test_hugetlb(folio))) + return hugetlb_basepage_index(&folio->page); + return folio->index; +} + extern pgoff_t linear_hugepage_index(struct vm_area_struct *vma, unsigned long address); |