LCOV - code coverage report
Current view: top level - include/linux - pagemap.h (source / functions) Hit Total Coverage
Test: fstests of 6.5.0-rc3-djwx @ Mon Jul 31 20:08:22 PDT 2023 Lines: 169 188 89.9 %
Date: 2023-07-31 20:08:22 Functions: 26 29 89.7 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : #ifndef _LINUX_PAGEMAP_H
       3             : #define _LINUX_PAGEMAP_H
       4             : 
       5             : /*
       6             :  * Copyright 1995 Linus Torvalds
       7             :  */
       8             : #include <linux/mm.h>
       9             : #include <linux/fs.h>
      10             : #include <linux/list.h>
      11             : #include <linux/highmem.h>
      12             : #include <linux/compiler.h>
      13             : #include <linux/uaccess.h>
      14             : #include <linux/gfp.h>
      15             : #include <linux/bitops.h>
      16             : #include <linux/hardirq.h> /* for in_interrupt() */
      17             : #include <linux/hugetlb_inline.h>
      18             : 
      19             : struct folio_batch;
      20             : 
      21             : unsigned long invalidate_mapping_pages(struct address_space *mapping,
      22             :                                         pgoff_t start, pgoff_t end);
      23             : 
      24             : static inline void invalidate_remote_inode(struct inode *inode)
      25             : {
      26             :         if (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
      27             :             S_ISLNK(inode->i_mode))
      28             :                 invalidate_mapping_pages(inode->i_mapping, 0, -1);
      29             : }
      30             : int invalidate_inode_pages2(struct address_space *mapping);
      31             : int invalidate_inode_pages2_range(struct address_space *mapping,
      32             :                 pgoff_t start, pgoff_t end);
      33             : int kiocb_invalidate_pages(struct kiocb *iocb, size_t count);
      34             : void kiocb_invalidate_post_direct_write(struct kiocb *iocb, size_t count);
      35             : 
      36             : int write_inode_now(struct inode *, int sync);
      37             : int filemap_fdatawrite(struct address_space *);
      38             : int filemap_flush(struct address_space *);
      39             : int filemap_fdatawait_keep_errors(struct address_space *mapping);
      40             : int filemap_fdatawait_range(struct address_space *, loff_t lstart, loff_t lend);
      41             : int filemap_fdatawait_range_keep_errors(struct address_space *mapping,
      42             :                 loff_t start_byte, loff_t end_byte);
      43             : 
      44             : static inline int filemap_fdatawait(struct address_space *mapping)
      45             : {
      46      103740 :         return filemap_fdatawait_range(mapping, 0, LLONG_MAX);
      47             : }
      48             : 
      49             : bool filemap_range_has_page(struct address_space *, loff_t lstart, loff_t lend);
      50             : int filemap_write_and_wait_range(struct address_space *mapping,
      51             :                 loff_t lstart, loff_t lend);
      52             : int __filemap_fdatawrite_range(struct address_space *mapping,
      53             :                 loff_t start, loff_t end, int sync_mode);
      54             : int filemap_fdatawrite_range(struct address_space *mapping,
      55             :                 loff_t start, loff_t end);
      56             : int filemap_check_errors(struct address_space *mapping);
      57             : void __filemap_set_wb_err(struct address_space *mapping, int err);
      58             : int filemap_fdatawrite_wbc(struct address_space *mapping,
      59             :                            struct writeback_control *wbc);
      60             : int kiocb_write_and_wait(struct kiocb *iocb, size_t count);
      61             : 
      62             : static inline int filemap_write_and_wait(struct address_space *mapping)
      63             : {
      64      587737 :         return filemap_write_and_wait_range(mapping, 0, LLONG_MAX);
      65             : }
      66             : 
      67             : /**
      68             :  * filemap_set_wb_err - set a writeback error on an address_space
      69             :  * @mapping: mapping in which to set writeback error
      70             :  * @err: error to be set in mapping
      71             :  *
      72             :  * When writeback fails in some way, we must record that error so that
      73             :  * userspace can be informed when fsync and the like are called.  We endeavor
      74             :  * to report errors on any file that was open at the time of the error.  Some
      75             :  * internal callers also need to know when writeback errors have occurred.
      76             :  *
      77             :  * When a writeback error occurs, most filesystems will want to call
      78             :  * filemap_set_wb_err to record the error in the mapping so that it will be
      79             :  * automatically reported whenever fsync is called on the file.
      80             :  */
      81             : static inline void filemap_set_wb_err(struct address_space *mapping, int err)
      82             : {
      83             :         /* Fastpath for common case of no error */
      84             :         if (unlikely(err))
      85             :                 __filemap_set_wb_err(mapping, err);
      86             : }
      87             : 
      88             : /**
      89             :  * filemap_check_wb_err - has an error occurred since the mark was sampled?
      90             :  * @mapping: mapping to check for writeback errors
      91             :  * @since: previously-sampled errseq_t
      92             :  *
      93             :  * Grab the errseq_t value from the mapping, and see if it has changed "since"
      94             :  * the given value was sampled.
      95             :  *
      96             :  * If it has then report the latest error set, otherwise return 0.
      97             :  */
      98             : static inline int filemap_check_wb_err(struct address_space *mapping,
      99             :                                         errseq_t since)
     100             : {
     101       19944 :         return errseq_check(&mapping->wb_err, since);
     102             : }
     103             : 
     104             : /**
     105             :  * filemap_sample_wb_err - sample the current errseq_t to test for later errors
     106             :  * @mapping: mapping to be sampled
     107             :  *
     108             :  * Writeback errors are always reported relative to a particular sample point
     109             :  * in the past. This function provides those sample points.
     110             :  */
     111             : static inline errseq_t filemap_sample_wb_err(struct address_space *mapping)
     112             : {
     113  1095221809 :         return errseq_sample(&mapping->wb_err);
     114             : }
     115             : 
     116             : /**
     117             :  * file_sample_sb_err - sample the current errseq_t to test for later errors
     118             :  * @file: file pointer to be sampled
     119             :  *
     120             :  * Grab the most current superblock-level errseq_t value for the given
     121             :  * struct file.
     122             :  */
     123             : static inline errseq_t file_sample_sb_err(struct file *file)
     124             : {
     125  1095454734 :         return errseq_sample(&file->f_path.dentry->d_sb->s_wb_err);
     126             : }
     127             : 
     128             : /*
     129             :  * Flush file data before changing attributes.  Caller must hold any locks
     130             :  * required to prevent further writes to this file until we're done setting
     131             :  * flags.
     132             :  */
     133             : static inline int inode_drain_writes(struct inode *inode)
     134             : {
     135             :         inode_dio_wait(inode);
     136             :         return filemap_write_and_wait(inode->i_mapping);
     137             : }
     138             : 
     139             : static inline bool mapping_empty(struct address_space *mapping)
     140             : {
     141  2535332230 :         return xa_empty(&mapping->i_pages);
     142             : }
     143             : 
     144             : /*
     145             :  * mapping_shrinkable - test if page cache state allows inode reclaim
     146             :  * @mapping: the page cache mapping
     147             :  *
     148             :  * This checks the mapping's cache state for the pupose of inode
     149             :  * reclaim and LRU management.
     150             :  *
     151             :  * The caller is expected to hold the i_lock, but is not required to
     152             :  * hold the i_pages lock, which usually protects cache state. That's
     153             :  * because the i_lock and the list_lru lock that protect the inode and
     154             :  * its LRU state don't nest inside the irq-safe i_pages lock.
     155             :  *
     156             :  * Cache deletions are performed under the i_lock, which ensures that
     157             :  * when an inode goes empty, it will reliably get queued on the LRU.
     158             :  *
     159             :  * Cache additions do not acquire the i_lock and may race with this
     160             :  * check, in which case we'll report the inode as shrinkable when it
     161             :  * has cache pages. This is okay: the shrinker also checks the
     162             :  * refcount and the referenced bit, which will be elevated or set in
     163             :  * the process of adding new cache pages to an inode.
     164             :  */
     165 27775680165 : static inline bool mapping_shrinkable(struct address_space *mapping)
     166             : {
     167 27775680165 :         void *head;
     168             : 
     169             :         /*
     170             :          * On highmem systems, there could be lowmem pressure from the
     171             :          * inodes before there is highmem pressure from the page
     172             :          * cache. Make inodes shrinkable regardless of cache state.
     173             :          */
     174 27775680165 :         if (IS_ENABLED(CONFIG_HIGHMEM))
     175             :                 return true;
     176             : 
     177             :         /* Cache completely empty? Shrink away. */
     178 27775680165 :         head = rcu_access_pointer(mapping->i_pages.xa_head);
     179 27775680165 :         if (!head)
     180             :                 return true;
     181             : 
     182             :         /*
     183             :          * The xarray stores single offset-0 entries directly in the
     184             :          * head pointer, which allows non-resident page cache entries
     185             :          * to escape the shadow shrinker's list of xarray nodes. The
     186             :          * inode shrinker needs to pick them up under memory pressure.
     187             :          */
     188  5721260768 :         if (!xa_is_node(head) && xa_is_value(head))
     189      355634 :                 return true;
     190             : 
     191             :         return false;
     192             : }
     193             : 
     194             : /*
     195             :  * Bits in mapping->flags.
     196             :  */
     197             : enum mapping_flags {
     198             :         AS_EIO          = 0,    /* IO error on async write */
     199             :         AS_ENOSPC       = 1,    /* ENOSPC on async write */
     200             :         AS_MM_ALL_LOCKS = 2,    /* under mm_take_all_locks() */
     201             :         AS_UNEVICTABLE  = 3,    /* e.g., ramdisk, SHM_LOCK */
     202             :         AS_EXITING      = 4,    /* final truncate in progress */
     203             :         /* writeback related tags are not used */
     204             :         AS_NO_WRITEBACK_TAGS = 5,
     205             :         AS_LARGE_FOLIO_SUPPORT = 6,
     206             : };
     207             : 
     208             : /**
     209             :  * mapping_set_error - record a writeback error in the address_space
     210             :  * @mapping: the mapping in which an error should be set
     211             :  * @error: the error to set in the mapping
     212             :  *
     213             :  * When writeback fails in some way, we must record that error so that
     214             :  * userspace can be informed when fsync and the like are called.  We endeavor
     215             :  * to report errors on any file that was open at the time of the error.  Some
     216             :  * internal callers also need to know when writeback errors have occurred.
     217             :  *
     218             :  * When a writeback error occurs, most filesystems will want to call
     219             :  * mapping_set_error to record the error in the mapping so that it can be
     220             :  * reported when the application calls fsync(2).
     221             :  */
     222   275895232 : static inline void mapping_set_error(struct address_space *mapping, int error)
     223             : {
     224   275895232 :         if (likely(!error))
     225             :                 return;
     226             : 
     227             :         /* Record in wb_err for checkers using errseq_t based tracking */
     228     2398955 :         __filemap_set_wb_err(mapping, error);
     229             : 
     230             :         /* Record it in superblock */
     231     2398954 :         if (mapping->host)
     232     2398954 :                 errseq_set(&mapping->host->i_sb->s_wb_err, error);
     233             : 
     234             :         /* Record it in flags for now, for legacy callers */
     235     2398954 :         if (error == -ENOSPC)
     236     1039599 :                 set_bit(AS_ENOSPC, &mapping->flags);
     237             :         else
     238     1359355 :                 set_bit(AS_EIO, &mapping->flags);
     239             : }
     240             : 
     241             : static inline void mapping_set_unevictable(struct address_space *mapping)
     242             : {
     243             :         set_bit(AS_UNEVICTABLE, &mapping->flags);
     244             : }
     245             : 
     246             : static inline void mapping_clear_unevictable(struct address_space *mapping)
     247             : {
     248             :         clear_bit(AS_UNEVICTABLE, &mapping->flags);
     249             : }
     250             : 
     251             : static inline bool mapping_unevictable(struct address_space *mapping)
     252             : {
     253             :         return mapping && test_bit(AS_UNEVICTABLE, &mapping->flags);
     254             : }
     255             : 
     256             : static inline void mapping_set_exiting(struct address_space *mapping)
     257             : {
     258  1148517008 :         set_bit(AS_EXITING, &mapping->flags);
     259             : }
     260             : 
     261             : static inline int mapping_exiting(struct address_space *mapping)
     262             : {
     263             :         return test_bit(AS_EXITING, &mapping->flags);
     264             : }
     265             : 
     266             : static inline void mapping_set_no_writeback_tags(struct address_space *mapping)
     267             : {
     268             :         set_bit(AS_NO_WRITEBACK_TAGS, &mapping->flags);
     269             : }
     270             : 
     271   778976878 : static inline int mapping_use_writeback_tags(struct address_space *mapping)
     272             : {
     273   778976878 :         return !test_bit(AS_NO_WRITEBACK_TAGS, &mapping->flags);
     274             : }
     275             : 
     276             : static inline gfp_t mapping_gfp_mask(struct address_space * mapping)
     277             : {
     278  4651126387 :         return mapping->gfp_mask;
     279             : }
     280             : 
     281             : /* Restricts the given gfp_mask to what the mapping allows. */
     282             : static inline gfp_t mapping_gfp_constraint(struct address_space *mapping,
     283             :                 gfp_t gfp_mask)
     284             : {
     285   175385705 :         return mapping_gfp_mask(mapping) & gfp_mask;
     286             : }
     287             : 
     288             : /*
     289             :  * This is non-atomic.  Only to be used before the mapping is activated.
     290             :  * Probably needs a barrier...
     291             :  */
     292             : static inline void mapping_set_gfp_mask(struct address_space *m, gfp_t mask)
     293             : {
     294  2237529304 :         m->gfp_mask = mask;
     295             : }
     296             : 
     297             : /**
     298             :  * mapping_set_large_folios() - Indicate the file supports large folios.
     299             :  * @mapping: The file.
     300             :  *
     301             :  * The filesystem should call this function in its inode constructor to
     302             :  * indicate that the VFS can use large folios to cache the contents of
     303             :  * the file.
     304             :  *
     305             :  * Context: This should not be called while the inode is active as it
     306             :  * is non-atomic.
     307             :  */
     308             : static inline void mapping_set_large_folios(struct address_space *mapping)
     309             : {
     310  1087426422 :         __set_bit(AS_LARGE_FOLIO_SUPPORT, &mapping->flags);
     311             : }
     312             : 
     313             : /*
     314             :  * Large folio support currently depends on THP.  These dependencies are
     315             :  * being worked on but are not yet fixed.
     316             :  */
     317             : static inline bool mapping_large_folio_support(struct address_space *mapping)
     318             : {
     319   768986614 :         return IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE) &&
     320   768747291 :                 test_bit(AS_LARGE_FOLIO_SUPPORT, &mapping->flags);
     321             : }
     322             : 
     323             : static inline int filemap_nr_thps(struct address_space *mapping)
     324             : {
     325             : #ifdef CONFIG_READ_ONLY_THP_FOR_FS
     326             :         return atomic_read(&mapping->nr_thps);
     327             : #else
     328             :         return 0;
     329             : #endif
     330             : }
     331             : 
     332             : static inline void filemap_nr_thps_inc(struct address_space *mapping)
     333             : {
     334             : #ifdef CONFIG_READ_ONLY_THP_FOR_FS
     335             :         if (!mapping_large_folio_support(mapping))
     336             :                 atomic_inc(&mapping->nr_thps);
     337             : #else
     338             :         WARN_ON_ONCE(mapping_large_folio_support(mapping) == 0);
     339             : #endif
     340             : }
     341             : 
     342      239323 : static inline void filemap_nr_thps_dec(struct address_space *mapping)
     343             : {
     344             : #ifdef CONFIG_READ_ONLY_THP_FOR_FS
     345             :         if (!mapping_large_folio_support(mapping))
     346             :                 atomic_dec(&mapping->nr_thps);
     347             : #else
     348      478646 :         WARN_ON_ONCE(mapping_large_folio_support(mapping) == 0);
     349             : #endif
     350      239323 : }
     351             : 
     352             : struct address_space *page_mapping(struct page *);
     353             : struct address_space *folio_mapping(struct folio *);
     354             : struct address_space *swapcache_mapping(struct folio *);
     355             : 
     356             : /**
     357             :  * folio_file_mapping - Find the mapping this folio belongs to.
     358             :  * @folio: The folio.
     359             :  *
     360             :  * For folios which are in the page cache, return the mapping that this
     361             :  * page belongs to.  Folios in the swap cache return the mapping of the
     362             :  * swap file or swap device where the data is stored.  This is different
     363             :  * from the mapping returned by folio_mapping().  The only reason to
     364             :  * use it is if, like NFS, you return 0 from ->activate_swapfile.
     365             :  *
     366             :  * Do not call this for folios which aren't in the page cache or swap cache.
     367             :  */
     368             : static inline struct address_space *folio_file_mapping(struct folio *folio)
     369             : {
     370             :         if (unlikely(folio_test_swapcache(folio)))
     371             :                 return swapcache_mapping(folio);
     372             : 
     373             :         return folio->mapping;
     374             : }
     375             : 
     376             : static inline struct address_space *page_file_mapping(struct page *page)
     377             : {
     378             :         return folio_file_mapping(page_folio(page));
     379             : }
     380             : 
     381             : /*
     382             :  * For file cache pages, return the address_space, otherwise return NULL
     383             :  */
     384             : static inline struct address_space *page_mapping_file(struct page *page)
     385             : {
     386             :         struct folio *folio = page_folio(page);
     387             : 
     388             :         if (unlikely(folio_test_swapcache(folio)))
     389             :                 return NULL;
     390             :         return folio_mapping(folio);
     391             : }
     392             : 
     393             : /**
     394             :  * folio_inode - Get the host inode for this folio.
     395             :  * @folio: The folio.
     396             :  *
     397             :  * For folios which are in the page cache, return the inode that this folio
     398             :  * belongs to.
     399             :  *
     400             :  * Do not call this for folios which aren't in the page cache.
     401             :  */
     402             : static inline struct inode *folio_inode(struct folio *folio)
     403             : {
     404   470847708 :         return folio->mapping->host;
     405             : }
     406             : 
     407             : /**
     408             :  * folio_attach_private - Attach private data to a folio.
     409             :  * @folio: Folio to attach data to.
     410             :  * @data: Data to attach to folio.
     411             :  *
     412             :  * Attaching private data to a folio increments the page's reference count.
     413             :  * The data must be detached before the folio will be freed.
     414             :  */
     415   414429220 : static inline void folio_attach_private(struct folio *folio, void *data)
     416             : {
     417   414429220 :         folio_get(folio);
     418   414491649 :         folio->private = data;
     419   414491649 :         folio_set_private(folio);
     420   414544753 : }
     421             : 
     422             : /**
     423             :  * folio_change_private - Change private data on a folio.
     424             :  * @folio: Folio to change the data on.
     425             :  * @data: Data to set on the folio.
     426             :  *
     427             :  * Change the private data attached to a folio and return the old
     428             :  * data.  The page must previously have had data attached and the data
     429             :  * must be detached before the folio will be freed.
     430             :  *
     431             :  * Return: Data that was previously attached to the folio.
     432             :  */
     433             : static inline void *folio_change_private(struct folio *folio, void *data)
     434             : {
     435             :         void *old = folio_get_private(folio);
     436             : 
     437             :         folio->private = data;
     438             :         return old;
     439             : }
     440             : 
     441             : /**
     442             :  * folio_detach_private - Detach private data from a folio.
     443             :  * @folio: Folio to detach data from.
     444             :  *
     445             :  * Removes the data that was previously attached to the folio and decrements
     446             :  * the refcount on the page.
     447             :  *
     448             :  * Return: Data that was attached to the folio.
     449             :  */
     450   414562232 : static inline void *folio_detach_private(struct folio *folio)
     451             : {
     452   414562232 :         void *data = folio_get_private(folio);
     453             : 
     454   414562232 :         if (!folio_test_private(folio))
     455             :                 return NULL;
     456   414557606 :         folio_clear_private(folio);
     457   414587706 :         folio->private = NULL;
     458   414587706 :         folio_put(folio);
     459             : 
     460   414587706 :         return data;
     461             : }
     462             : 
     463   224443245 : static inline void attach_page_private(struct page *page, void *data)
     464             : {
     465   224443245 :         folio_attach_private(page_folio(page), data);
     466   224497755 : }
     467             : 
     468   224510081 : static inline void *detach_page_private(struct page *page)
     469             : {
     470   224510081 :         return folio_detach_private(page_folio(page));
     471             : }
     472             : 
     473             : /*
     474             :  * There are some parts of the kernel which assume that PMD entries
     475             :  * are exactly HPAGE_PMD_ORDER.  Those should be fixed, but until then,
     476             :  * limit the maximum allocation order to PMD size.  I'm not aware of any
     477             :  * assumptions about maximum order if THP are disabled, but 8 seems like
     478             :  * a good order (that's 1MB if you're using 4kB pages)
     479             :  */
     480             : #ifdef CONFIG_TRANSPARENT_HUGEPAGE
     481             : #define MAX_PAGECACHE_ORDER     HPAGE_PMD_ORDER
     482             : #else
     483             : #define MAX_PAGECACHE_ORDER     8
     484             : #endif
     485             : 
     486             : #ifdef CONFIG_NUMA
     487             : struct folio *filemap_alloc_folio(gfp_t gfp, unsigned int order);
     488             : #else
     489             : static inline struct folio *filemap_alloc_folio(gfp_t gfp, unsigned int order)
     490             : {
     491             :         return folio_alloc(gfp, order);
     492             : }
     493             : #endif
     494             : 
     495             : static inline struct page *__page_cache_alloc(gfp_t gfp)
     496             : {
     497         538 :         return &filemap_alloc_folio(gfp, 0)->page;
     498             : }
     499             : 
     500             : static inline struct page *page_cache_alloc(struct address_space *x)
     501             : {
     502             :         return __page_cache_alloc(mapping_gfp_mask(x));
     503             : }
     504             : 
     505             : static inline gfp_t readahead_gfp_mask(struct address_space *x)
     506             : {
     507    41095905 :         return mapping_gfp_mask(x) | __GFP_NORETRY | __GFP_NOWARN;
     508             : }
     509             : 
     510             : typedef int filler_t(struct file *, struct folio *);
     511             : 
     512             : pgoff_t page_cache_next_miss(struct address_space *mapping,
     513             :                              pgoff_t index, unsigned long max_scan);
     514             : pgoff_t page_cache_prev_miss(struct address_space *mapping,
     515             :                              pgoff_t index, unsigned long max_scan);
     516             : 
     517             : /**
     518             :  * typedef fgf_t - Flags for getting folios from the page cache.
     519             :  *
     520             :  * Most users of the page cache will not need to use these flags;
     521             :  * there are convenience functions such as filemap_get_folio() and
     522             :  * filemap_lock_folio().  For users which need more control over exactly
     523             :  * what is done with the folios, these flags to __filemap_get_folio()
     524             :  * are available.
     525             :  *
     526             :  * * %FGP_ACCESSED - The folio will be marked accessed.
     527             :  * * %FGP_LOCK - The folio is returned locked.
     528             :  * * %FGP_CREAT - If no folio is present then a new folio is allocated,
     529             :  *   added to the page cache and the VM's LRU list.  The folio is
     530             :  *   returned locked.
     531             :  * * %FGP_FOR_MMAP - The caller wants to do its own locking dance if the
     532             :  *   folio is already in cache.  If the folio was allocated, unlock it
     533             :  *   before returning so the caller can do the same dance.
     534             :  * * %FGP_WRITE - The folio will be written to by the caller.
     535             :  * * %FGP_NOFS - __GFP_FS will get cleared in gfp.
     536             :  * * %FGP_NOWAIT - Don't block on the folio lock.
     537             :  * * %FGP_STABLE - Wait for the folio to be stable (finished writeback)
     538             :  * * %FGP_WRITEBEGIN - The flags to use in a filesystem write_begin()
     539             :  *   implementation.
     540             :  */
     541             : typedef unsigned int __bitwise fgf_t;
     542             : 
     543             : #define FGP_ACCESSED            ((__force fgf_t)0x00000001)
     544             : #define FGP_LOCK                ((__force fgf_t)0x00000002)
     545             : #define FGP_CREAT               ((__force fgf_t)0x00000004)
     546             : #define FGP_WRITE               ((__force fgf_t)0x00000008)
     547             : #define FGP_NOFS                ((__force fgf_t)0x00000010)
     548             : #define FGP_NOWAIT              ((__force fgf_t)0x00000020)
     549             : #define FGP_FOR_MMAP            ((__force fgf_t)0x00000040)
     550             : #define FGP_STABLE              ((__force fgf_t)0x00000080)
     551             : #define FGF_GET_ORDER(fgf)      (((__force unsigned)fgf) >> 26)   /* top 6 bits */
     552             : 
     553             : #define FGP_WRITEBEGIN          (FGP_LOCK | FGP_WRITE | FGP_CREAT | FGP_STABLE)
     554             : 
     555             : /**
     556             :  * fgf_set_order - Encode a length in the fgf_t flags.
     557             :  * @size: The suggested size of the folio to create.
     558             :  *
     559             :  * The caller of __filemap_get_folio() can use this to suggest a preferred
     560             :  * size for the folio that is created.  If there is already a folio at
     561             :  * the index, it will be returned, no matter what its size.  If a folio
     562             :  * is freshly created, it may be of a different size than requested
     563             :  * due to alignment constraints, memory pressure, or the presence of
     564             :  * other folios at nearby indices.
     565             :  */
     566   426960478 : static inline fgf_t fgf_set_order(size_t size)
     567             : {
     568   426960478 :         unsigned int shift = ilog2(size);
     569             : 
     570   426960478 :         if (shift <= PAGE_SHIFT)
     571             :                 return 0;
     572   134770356 :         return (__force fgf_t)((shift - PAGE_SHIFT) << 26);
     573             : }
     574             : 
     575             : void *filemap_get_entry(struct address_space *mapping, pgoff_t index);
     576             : struct folio *__filemap_get_folio(struct address_space *mapping, pgoff_t index,
     577             :                 fgf_t fgp_flags, gfp_t gfp);
     578             : struct page *pagecache_get_page(struct address_space *mapping, pgoff_t index,
     579             :                 fgf_t fgp_flags, gfp_t gfp);
     580             : 
     581             : /**
     582             :  * filemap_get_folio - Find and get a folio.
     583             :  * @mapping: The address_space to search.
     584             :  * @index: The page index.
     585             :  *
     586             :  * Looks up the page cache entry at @mapping & @index.  If a folio is
     587             :  * present, it is returned with an increased refcount.
     588             :  *
     589             :  * Return: A folio or ERR_PTR(-ENOENT) if there is no folio in the cache for
     590             :  * this index.  Will not return a shadow, swap or DAX entry.
     591             :  */
     592             : static inline struct folio *filemap_get_folio(struct address_space *mapping,
     593             :                                         pgoff_t index)
     594             : {
     595  3275798211 :         return __filemap_get_folio(mapping, index, 0, 0);
     596             : }
     597             : 
     598             : /**
     599             :  * filemap_lock_folio - Find and lock a folio.
     600             :  * @mapping: The address_space to search.
     601             :  * @index: The page index.
     602             :  *
     603             :  * Looks up the page cache entry at @mapping & @index.  If a folio is
     604             :  * present, it is returned locked with an increased refcount.
     605             :  *
     606             :  * Context: May sleep.
     607             :  * Return: A folio or ERR_PTR(-ENOENT) if there is no folio in the cache for
     608             :  * this index.  Will not return a shadow, swap or DAX entry.
     609             :  */
     610             : static inline struct folio *filemap_lock_folio(struct address_space *mapping,
     611             :                                         pgoff_t index)
     612             : {
     613       27618 :         return __filemap_get_folio(mapping, index, FGP_LOCK, 0);
     614             : }
     615             : 
     616             : /**
     617             :  * filemap_grab_folio - grab a folio from the page cache
     618             :  * @mapping: The address space to search
     619             :  * @index: The page index
     620             :  *
     621             :  * Looks up the page cache entry at @mapping & @index. If no folio is found,
     622             :  * a new folio is created. The folio is locked, marked as accessed, and
     623             :  * returned.
     624             :  *
     625             :  * Return: A found or created folio. ERR_PTR(-ENOMEM) if no folio is found
     626             :  * and failed to create a folio.
     627             :  */
     628             : static inline struct folio *filemap_grab_folio(struct address_space *mapping,
     629             :                                         pgoff_t index)
     630             : {
     631         117 :         return __filemap_get_folio(mapping, index,
     632             :                         FGP_LOCK | FGP_ACCESSED | FGP_CREAT,
     633             :                         mapping_gfp_mask(mapping));
     634             : }
     635             : 
     636             : /**
     637             :  * find_get_page - find and get a page reference
     638             :  * @mapping: the address_space to search
     639             :  * @offset: the page index
     640             :  *
     641             :  * Looks up the page cache slot at @mapping & @offset.  If there is a
     642             :  * page cache page, it is returned with an increased refcount.
     643             :  *
     644             :  * Otherwise, %NULL is returned.
     645             :  */
     646             : static inline struct page *find_get_page(struct address_space *mapping,
     647             :                                         pgoff_t offset)
     648             : {
     649    67095544 :         return pagecache_get_page(mapping, offset, 0, 0);
     650             : }
     651             : 
     652             : static inline struct page *find_get_page_flags(struct address_space *mapping,
     653             :                                         pgoff_t offset, fgf_t fgp_flags)
     654             : {
     655    41139433 :         return pagecache_get_page(mapping, offset, fgp_flags, 0);
     656             : }
     657             : 
     658             : /**
     659             :  * find_lock_page - locate, pin and lock a pagecache page
     660             :  * @mapping: the address_space to search
     661             :  * @index: the page index
     662             :  *
     663             :  * Looks up the page cache entry at @mapping & @index.  If there is a
     664             :  * page cache page, it is returned locked and with an increased
     665             :  * refcount.
     666             :  *
     667             :  * Context: May sleep.
     668             :  * Return: A struct page or %NULL if there is no page in the cache for this
     669             :  * index.
     670             :  */
     671             : static inline struct page *find_lock_page(struct address_space *mapping,
     672             :                                         pgoff_t index)
     673             : {
     674    10992804 :         return pagecache_get_page(mapping, index, FGP_LOCK, 0);
     675             : }
     676             : 
     677             : /**
     678             :  * find_or_create_page - locate or add a pagecache page
     679             :  * @mapping: the page's address_space
     680             :  * @index: the page's index into the mapping
     681             :  * @gfp_mask: page allocation mode
     682             :  *
     683             :  * Looks up the page cache slot at @mapping & @offset.  If there is a
     684             :  * page cache page, it is returned locked and with an increased
     685             :  * refcount.
     686             :  *
     687             :  * If the page is not present, a new page is allocated using @gfp_mask
     688             :  * and added to the page cache and the VM's LRU list.  The page is
     689             :  * returned locked and with an increased refcount.
     690             :  *
     691             :  * On memory exhaustion, %NULL is returned.
     692             :  *
     693             :  * find_or_create_page() may sleep, even if @gfp_flags specifies an
     694             :  * atomic allocation!
     695             :  */
     696             : static inline struct page *find_or_create_page(struct address_space *mapping,
     697             :                                         pgoff_t index, gfp_t gfp_mask)
     698             : {
     699    48019138 :         return pagecache_get_page(mapping, index,
     700             :                                         FGP_LOCK|FGP_ACCESSED|FGP_CREAT,
     701             :                                         gfp_mask);
     702             : }
     703             : 
     704             : /**
     705             :  * grab_cache_page_nowait - returns locked page at given index in given cache
     706             :  * @mapping: target address_space
     707             :  * @index: the page index
     708             :  *
     709             :  * Same as grab_cache_page(), but do not wait if the page is unavailable.
     710             :  * This is intended for speculative data generators, where the data can
     711             :  * be regenerated if the page couldn't be grabbed.  This routine should
     712             :  * be safe to call while holding the lock for another page.
     713             :  *
     714             :  * Clear __GFP_FS when allocating the page to avoid recursion into the fs
     715             :  * and deadlock against the caller's locked page.
     716             :  */
     717             : static inline struct page *grab_cache_page_nowait(struct address_space *mapping,
     718             :                                 pgoff_t index)
     719             : {
     720             :         return pagecache_get_page(mapping, index,
     721             :                         FGP_LOCK|FGP_CREAT|FGP_NOFS|FGP_NOWAIT,
     722             :                         mapping_gfp_mask(mapping));
     723             : }
     724             : 
     725             : #define swapcache_index(folio)  __page_file_index(&(folio)->page)
     726             : 
     727             : /**
     728             :  * folio_index - File index of a folio.
     729             :  * @folio: The folio.
     730             :  *
     731             :  * For a folio which is either in the page cache or the swap cache,
     732             :  * return its index within the address_space it belongs to.  If you know
     733             :  * the page is definitely in the page cache, you can look at the folio's
     734             :  * index directly.
     735             :  *
     736             :  * Return: The index (offset in units of pages) of a folio in its file.
     737             :  */
     738  4492114963 : static inline pgoff_t folio_index(struct folio *folio)
     739             : {
     740  8984207269 :         if (unlikely(folio_test_swapcache(folio)))
     741           0 :                 return swapcache_index(folio);
     742  4492092306 :         return folio->index;
     743             : }
     744             : 
     745             : /**
     746             :  * folio_next_index - Get the index of the next folio.
     747             :  * @folio: The current folio.
     748             :  *
     749             :  * Return: The index of the folio which follows this folio in the file.
     750             :  */
     751             : static inline pgoff_t folio_next_index(struct folio *folio)
     752             : {
     753       27457 :         return folio->index + folio_nr_pages(folio);
     754             : }
     755             : 
     756             : /**
     757             :  * folio_file_page - The page for a particular index.
     758             :  * @folio: The folio which contains this index.
     759             :  * @index: The index we want to look up.
     760             :  *
     761             :  * Sometimes after looking up a folio in the page cache, we need to
     762             :  * obtain the specific page for an index (eg a page fault).
     763             :  *
     764             :  * Return: The page containing the file data for this index.
     765             :  */
     766 31157091385 : static inline struct page *folio_file_page(struct folio *folio, pgoff_t index)
     767             : {
     768             :         /* HugeTLBfs indexes the page cache in units of hpage_size */
     769 31157091385 :         if (folio_test_hugetlb(folio))
     770           0 :                 return &folio->page;
     771 31159167850 :         return folio_page(folio, index & (folio_nr_pages(folio) - 1));
     772             : }
     773             : 
     774             : /**
     775             :  * folio_contains - Does this folio contain this index?
     776             :  * @folio: The folio.
     777             :  * @index: The page index within the file.
     778             :  *
     779             :  * Context: The caller should have the page locked in order to prevent
     780             :  * (eg) shmem from moving the page between the page cache and swap cache
     781             :  * and changing its index in the middle of the operation.
     782             :  * Return: true or false.
     783             :  */
     784  3252124416 : static inline bool folio_contains(struct folio *folio, pgoff_t index)
     785             : {
     786             :         /* HugeTLBfs indexes the page cache in units of hpage_size */
     787  3252124416 :         if (folio_test_hugetlb(folio))
     788           0 :                 return folio->index == index;
     789  3252147368 :         return index - folio_index(folio) < folio_nr_pages(folio);
     790             : }
     791             : 
     792             : /*
     793             :  * Given the page we found in the page cache, return the page corresponding
     794             :  * to this index in the file
     795             :  */
     796             : static inline struct page *find_subpage(struct page *head, pgoff_t index)
     797             : {
     798             :         /* HugeTLBfs wants the head page regardless */
     799             :         if (PageHuge(head))
     800             :                 return head;
     801             : 
     802             :         return head + (index & (thp_nr_pages(head) - 1));
     803             : }
     804             : 
     805             : unsigned filemap_get_folios(struct address_space *mapping, pgoff_t *start,
     806             :                 pgoff_t end, struct folio_batch *fbatch);
     807             : unsigned filemap_get_folios_contig(struct address_space *mapping,
     808             :                 pgoff_t *start, pgoff_t end, struct folio_batch *fbatch);
     809             : unsigned filemap_get_folios_tag(struct address_space *mapping, pgoff_t *start,
     810             :                 pgoff_t end, xa_mark_t tag, struct folio_batch *fbatch);
     811             : 
     812             : struct page *grab_cache_page_write_begin(struct address_space *mapping,
     813             :                         pgoff_t index);
     814             : 
     815             : /*
     816             :  * Returns locked page at given index in given cache, creating it if needed.
     817             :  */
     818             : static inline struct page *grab_cache_page(struct address_space *mapping,
     819             :                                                                 pgoff_t index)
     820             : {
     821             :         return find_or_create_page(mapping, index, mapping_gfp_mask(mapping));
     822             : }
     823             : 
     824             : struct folio *read_cache_folio(struct address_space *, pgoff_t index,
     825             :                 filler_t *filler, struct file *file);
     826             : struct folio *mapping_read_folio_gfp(struct address_space *, pgoff_t index,
     827             :                 gfp_t flags);
     828             : struct page *read_cache_page(struct address_space *, pgoff_t index,
     829             :                 filler_t *filler, struct file *file);
     830             : extern struct page * read_cache_page_gfp(struct address_space *mapping,
     831             :                                 pgoff_t index, gfp_t gfp_mask);
     832             : 
     833             : static inline struct page *read_mapping_page(struct address_space *mapping,
     834             :                                 pgoff_t index, struct file *file)
     835             : {
     836       35317 :         return read_cache_page(mapping, index, NULL, file);
     837             : }
     838             : 
     839             : static inline struct folio *read_mapping_folio(struct address_space *mapping,
     840             :                                 pgoff_t index, struct file *file)
     841             : {
     842  2834272318 :         return read_cache_folio(mapping, index, NULL, file);
     843             : }
     844             : 
     845             : /*
     846             :  * Get index of the page within radix-tree (but not for hugetlb pages).
     847             :  * (TODO: remove once hugetlb pages will have ->index in PAGE_SIZE)
     848             :  */
     849             : static inline pgoff_t page_to_index(struct page *page)
     850             : {
     851             :         struct page *head;
     852             : 
     853             :         if (likely(!PageTransTail(page)))
     854             :                 return page->index;
     855             : 
     856             :         head = compound_head(page);
     857             :         /*
     858             :          *  We don't initialize ->index for tail pages: calculate based on
     859             :          *  head page
     860             :          */
     861             :         return head->index + page - head;
     862             : }
     863             : 
     864             : extern pgoff_t hugetlb_basepage_index(struct page *page);
     865             : 
     866             : /*
     867             :  * Get the offset in PAGE_SIZE (even for hugetlb pages).
     868             :  * (TODO: hugetlb pages should have ->index in PAGE_SIZE)
     869             :  */
     870             : static inline pgoff_t page_to_pgoff(struct page *page)
     871             : {
     872             :         if (unlikely(PageHuge(page)))
     873             :                 return hugetlb_basepage_index(page);
     874             :         return page_to_index(page);
     875             : }
     876             : 
     877             : /*
     878             :  * Return byte-offset into filesystem object for page.
     879             :  */
     880             : static inline loff_t page_offset(struct page *page)
     881             : {
     882  5334514792 :         return ((loff_t)page->index) << PAGE_SHIFT;
     883             : }
     884             : 
     885             : static inline loff_t page_file_offset(struct page *page)
     886             : {
     887             :         return ((loff_t)page_index(page)) << PAGE_SHIFT;
     888             : }
     889             : 
     890             : /**
     891             :  * folio_pos - Returns the byte position of this folio in its file.
     892             :  * @folio: The folio.
     893             :  */
     894             : static inline loff_t folio_pos(struct folio *folio)
     895             : {
     896  4931364978 :         return page_offset(&folio->page);
     897             : }
     898             : 
     899             : /**
     900             :  * folio_file_pos - Returns the byte position of this folio in its file.
     901             :  * @folio: The folio.
     902             :  *
     903             :  * This differs from folio_pos() for folios which belong to a swap file.
     904             :  * NFS is the only filesystem today which needs to use folio_file_pos().
     905             :  */
     906             : static inline loff_t folio_file_pos(struct folio *folio)
     907             : {
     908             :         return page_file_offset(&folio->page);
     909             : }
     910             : 
     911             : /*
     912             :  * Get the offset in PAGE_SIZE (even for hugetlb folios).
     913             :  * (TODO: hugetlb folios should have ->index in PAGE_SIZE)
     914             :  */
     915           0 : static inline pgoff_t folio_pgoff(struct folio *folio)
     916             : {
     917           0 :         if (unlikely(folio_test_hugetlb(folio)))
     918           0 :                 return hugetlb_basepage_index(&folio->page);
     919           0 :         return folio->index;
     920             : }
     921             : 
     922             : extern pgoff_t linear_hugepage_index(struct vm_area_struct *vma,
     923             :                                      unsigned long address);
     924             : 
     925           0 : static inline pgoff_t linear_page_index(struct vm_area_struct *vma,
     926             :                                         unsigned long address)
     927             : {
     928           0 :         pgoff_t pgoff;
     929           0 :         if (unlikely(is_vm_hugetlb_page(vma)))
     930           0 :                 return linear_hugepage_index(vma, address);
     931           0 :         pgoff = (address - vma->vm_start) >> PAGE_SHIFT;
     932           0 :         pgoff += vma->vm_pgoff;
     933           0 :         return pgoff;
     934             : }
     935             : 
     936             : struct wait_page_key {
     937             :         struct folio *folio;
     938             :         int bit_nr;
     939             :         int page_match;
     940             : };
     941             : 
     942             : struct wait_page_queue {
     943             :         struct folio *folio;
     944             :         int bit_nr;
     945             :         wait_queue_entry_t wait;
     946             : };
     947             : 
     948             : static inline bool wake_page_match(struct wait_page_queue *wait_page,
     949             :                                   struct wait_page_key *key)
     950             : {
     951    57864700 :         if (wait_page->folio != key->folio)
     952             :                return false;
     953    57749302 :         key->page_match = 1;
     954             : 
     955    57749302 :         if (wait_page->bit_nr != key->bit_nr)
     956             :                 return false;
     957             : 
     958             :         return true;
     959             : }
     960             : 
     961             : void __folio_lock(struct folio *folio);
     962             : int __folio_lock_killable(struct folio *folio);
     963             : bool __folio_lock_or_retry(struct folio *folio, struct mm_struct *mm,
     964             :                                 unsigned int flags);
     965             : void unlock_page(struct page *page);
     966             : void folio_unlock(struct folio *folio);
     967             : 
     968             : /**
     969             :  * folio_trylock() - Attempt to lock a folio.
     970             :  * @folio: The folio to attempt to lock.
     971             :  *
     972             :  * Sometimes it is undesirable to wait for a folio to be unlocked (eg
     973             :  * when the locks are being taken in the wrong order, or if making
     974             :  * progress through a batch of folios is more important than processing
     975             :  * them in order).  Usually folio_lock() is the correct function to call.
     976             :  *
     977             :  * Context: Any context.
     978             :  * Return: Whether the lock was successfully acquired.
     979             :  */
     980 37638435487 : static inline bool folio_trylock(struct folio *folio)
     981             : {
     982 37638435487 :         return likely(!test_and_set_bit_lock(PG_locked, folio_flags(folio, 0)));
     983             : }
     984             : 
     985             : /*
     986             :  * Return true if the page was successfully locked
     987             :  */
     988             : static inline int trylock_page(struct page *page)
     989             : {
     990             :         return folio_trylock(page_folio(page));
     991             : }
     992             : 
     993             : /**
     994             :  * folio_lock() - Lock this folio.
     995             :  * @folio: The folio to lock.
     996             :  *
     997             :  * The folio lock protects against many things, probably more than it
     998             :  * should.  It is primarily held while a folio is being brought uptodate,
     999             :  * either from its backing file or from swap.  It is also held while a
    1000             :  * folio is being truncated from its address_space, so holding the lock
    1001             :  * is sufficient to keep folio->mapping stable.
    1002             :  *
    1003             :  * The folio lock is also held while write() is modifying the page to
    1004             :  * provide POSIX atomicity guarantees (as long as the write does not
    1005             :  * cross a page boundary).  Other modifications to the data in the folio
    1006             :  * do not hold the folio lock and can race with writes, eg DMA and stores
    1007             :  * to mapped pages.
    1008             :  *
    1009             :  * Context: May sleep.  If you need to acquire the locks of two or
    1010             :  * more folios, they must be in order of ascending index, if they are
    1011             :  * in the same address_space.  If they are in different address_spaces,
    1012             :  * acquire the lock of the folio which belongs to the address_space which
    1013             :  * has the lowest address in memory first.
    1014             :  */
    1015  3648596327 : static inline void folio_lock(struct folio *folio)
    1016             : {
    1017  3648596327 :         might_sleep();
    1018  3648564505 :         if (!folio_trylock(folio))
    1019     3844924 :                 __folio_lock(folio);
    1020  3649906557 : }
    1021             : 
    1022             : /**
    1023             :  * lock_page() - Lock the folio containing this page.
    1024             :  * @page: The page to lock.
    1025             :  *
    1026             :  * See folio_lock() for a description of what the lock protects.
    1027             :  * This is a legacy function and new code should probably use folio_lock()
    1028             :  * instead.
    1029             :  *
    1030             :  * Context: May sleep.  Pages in the same folio share a lock, so do not
    1031             :  * attempt to lock two pages which share a folio.
    1032             :  */
    1033   348975589 : static inline void lock_page(struct page *page)
    1034             : {
    1035   348975589 :         struct folio *folio;
    1036   348975589 :         might_sleep();
    1037             : 
    1038   348950525 :         folio = page_folio(page);
    1039   348948269 :         if (!folio_trylock(folio))
    1040      161144 :                 __folio_lock(folio);
    1041   349012312 : }
    1042             : 
    1043             : /**
    1044             :  * folio_lock_killable() - Lock this folio, interruptible by a fatal signal.
    1045             :  * @folio: The folio to lock.
    1046             :  *
    1047             :  * Attempts to lock the folio, like folio_lock(), except that the sleep
    1048             :  * to acquire the lock is interruptible by a fatal signal.
    1049             :  *
    1050             :  * Context: May sleep; see folio_lock().
    1051             :  * Return: 0 if the lock was acquired; -EINTR if a fatal signal was received.
    1052             :  */
    1053             : static inline int folio_lock_killable(struct folio *folio)
    1054             : {
    1055             :         might_sleep();
    1056             :         if (!folio_trylock(folio))
    1057             :                 return __folio_lock_killable(folio);
    1058             :         return 0;
    1059             : }
    1060             : 
    1061             : /*
    1062             :  * folio_lock_or_retry - Lock the folio, unless this would block and the
    1063             :  * caller indicated that it can handle a retry.
    1064             :  *
    1065             :  * Return value and mmap_lock implications depend on flags; see
    1066             :  * __folio_lock_or_retry().
    1067             :  */
    1068             : static inline bool folio_lock_or_retry(struct folio *folio,
    1069             :                 struct mm_struct *mm, unsigned int flags)
    1070             : {
    1071             :         might_sleep();
    1072             :         return folio_trylock(folio) || __folio_lock_or_retry(folio, mm, flags);
    1073             : }
    1074             : 
    1075             : /*
    1076             :  * This is exported only for folio_wait_locked/folio_wait_writeback, etc.,
    1077             :  * and should not be used directly.
    1078             :  */
    1079             : void folio_wait_bit(struct folio *folio, int bit_nr);
    1080             : int folio_wait_bit_killable(struct folio *folio, int bit_nr);
    1081             : 
    1082             : /* 
    1083             :  * Wait for a folio to be unlocked.
    1084             :  *
    1085             :  * This must be called with the caller "holding" the folio,
    1086             :  * ie with increased folio reference count so that the folio won't
    1087             :  * go away during the wait.
    1088             :  */
    1089      645607 : static inline void folio_wait_locked(struct folio *folio)
    1090             : {
    1091      645607 :         if (folio_test_locked(folio))
    1092      526802 :                 folio_wait_bit(folio, PG_locked);
    1093      645607 : }
    1094             : 
    1095  1212812191 : static inline int folio_wait_locked_killable(struct folio *folio)
    1096             : {
    1097  1212812191 :         if (!folio_test_locked(folio))
    1098             :                 return 0;
    1099    13234442 :         return folio_wait_bit_killable(folio, PG_locked);
    1100             : }
    1101             : 
    1102      645607 : static inline void wait_on_page_locked(struct page *page)
    1103             : {
    1104      645607 :         folio_wait_locked(page_folio(page));
    1105      645607 : }
    1106             : 
    1107             : static inline int wait_on_page_locked_killable(struct page *page)
    1108             : {
    1109             :         return folio_wait_locked_killable(page_folio(page));
    1110             : }
    1111             : 
    1112             : void wait_on_page_writeback(struct page *page);
    1113             : void folio_wait_writeback(struct folio *folio);
    1114             : int folio_wait_writeback_killable(struct folio *folio);
    1115             : void end_page_writeback(struct page *page);
    1116             : void folio_end_writeback(struct folio *folio);
    1117             : void wait_for_stable_page(struct page *page);
    1118             : void folio_wait_stable(struct folio *folio);
    1119             : void __folio_mark_dirty(struct folio *folio, struct address_space *, int warn);
    1120             : static inline void __set_page_dirty(struct page *page,
    1121             :                 struct address_space *mapping, int warn)
    1122             : {
    1123             :         __folio_mark_dirty(page_folio(page), mapping, warn);
    1124             : }
    1125             : void folio_account_cleaned(struct folio *folio, struct bdi_writeback *wb);
    1126             : void __folio_cancel_dirty(struct folio *folio);
    1127  2505641222 : static inline void folio_cancel_dirty(struct folio *folio)
    1128             : {
    1129             :         /* Avoid atomic ops, locking, etc. when not actually needed. */
    1130  2505641222 :         if (folio_test_dirty(folio))
    1131    79641364 :                 __folio_cancel_dirty(folio);
    1132  2505649826 : }
    1133             : bool folio_clear_dirty_for_io(struct folio *folio);
    1134             : bool clear_page_dirty_for_io(struct page *page);
    1135             : void folio_invalidate(struct folio *folio, size_t offset, size_t length);
    1136             : int __set_page_dirty_nobuffers(struct page *page);
    1137             : bool noop_dirty_folio(struct address_space *mapping, struct folio *folio);
    1138             : 
    1139             : #ifdef CONFIG_MIGRATION
    1140             : int filemap_migrate_folio(struct address_space *mapping, struct folio *dst,
    1141             :                 struct folio *src, enum migrate_mode mode);
    1142             : #else
    1143             : #define filemap_migrate_folio NULL
    1144             : #endif
    1145             : void folio_end_private_2(struct folio *folio);
    1146             : void folio_wait_private_2(struct folio *folio);
    1147             : int folio_wait_private_2_killable(struct folio *folio);
    1148             : 
    1149             : /*
    1150             :  * Add an arbitrary waiter to a page's wait queue
    1151             :  */
    1152             : void folio_add_wait_queue(struct folio *folio, wait_queue_entry_t *waiter);
    1153             : 
    1154             : /*
    1155             :  * Fault in userspace address range.
    1156             :  */
    1157             : size_t fault_in_writeable(char __user *uaddr, size_t size);
    1158             : size_t fault_in_subpage_writeable(char __user *uaddr, size_t size);
    1159             : size_t fault_in_safe_writeable(const char __user *uaddr, size_t size);
    1160             : size_t fault_in_readable(const char __user *uaddr, size_t size);
    1161             : 
    1162             : int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
    1163             :                 pgoff_t index, gfp_t gfp);
    1164             : int filemap_add_folio(struct address_space *mapping, struct folio *folio,
    1165             :                 pgoff_t index, gfp_t gfp);
    1166             : void filemap_remove_folio(struct folio *folio);
    1167             : void __filemap_remove_folio(struct folio *folio, void *shadow);
    1168             : void replace_page_cache_folio(struct folio *old, struct folio *new);
    1169             : void delete_from_page_cache_batch(struct address_space *mapping,
    1170             :                                   struct folio_batch *fbatch);
    1171             : bool filemap_release_folio(struct folio *folio, gfp_t gfp);
    1172             : loff_t mapping_seek_hole_data(struct address_space *, loff_t start, loff_t end,
    1173             :                 int whence);
    1174             : 
    1175             : /* Must be non-static for BPF error injection */
    1176             : int __filemap_add_folio(struct address_space *mapping, struct folio *folio,
    1177             :                 pgoff_t index, gfp_t gfp, void **shadowp);
    1178             : 
    1179             : bool filemap_range_has_writeback(struct address_space *mapping,
    1180             :                                  loff_t start_byte, loff_t end_byte);
    1181             : 
    1182             : /**
    1183             :  * filemap_range_needs_writeback - check if range potentially needs writeback
    1184             :  * @mapping:           address space within which to check
    1185             :  * @start_byte:        offset in bytes where the range starts
    1186             :  * @end_byte:          offset in bytes where the range ends (inclusive)
    1187             :  *
    1188             :  * Find at least one page in the range supplied, usually used to check if
    1189             :  * direct writing in this range will trigger a writeback. Used by O_DIRECT
    1190             :  * read/write with IOCB_NOWAIT, to see if the caller needs to do
    1191             :  * filemap_write_and_wait_range() before proceeding.
    1192             :  *
    1193             :  * Return: %true if the caller should do filemap_write_and_wait_range() before
    1194             :  * doing O_DIRECT to a page in this range, %false otherwise.
    1195             :  */
    1196           0 : static inline bool filemap_range_needs_writeback(struct address_space *mapping,
    1197             :                                                  loff_t start_byte,
    1198             :                                                  loff_t end_byte)
    1199             : {
    1200           0 :         if (!mapping->nrpages)
    1201             :                 return false;
    1202           0 :         if (!mapping_tagged(mapping, PAGECACHE_TAG_DIRTY) &&
    1203             :             !mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK))
    1204             :                 return false;
    1205           0 :         return filemap_range_has_writeback(mapping, start_byte, end_byte);
    1206             : }
    1207             : 
    1208             : /**
    1209             :  * struct readahead_control - Describes a readahead request.
    1210             :  *
    1211             :  * A readahead request is for consecutive pages.  Filesystems which
    1212             :  * implement the ->readahead method should call readahead_page() or
    1213             :  * readahead_page_batch() in a loop and attempt to start I/O against
    1214             :  * each page in the request.
    1215             :  *
    1216             :  * Most of the fields in this struct are private and should be accessed
    1217             :  * by the functions below.
    1218             :  *
    1219             :  * @file: The file, used primarily by network filesystems for authentication.
    1220             :  *        May be NULL if invoked internally by the filesystem.
    1221             :  * @mapping: Readahead this filesystem object.
    1222             :  * @ra: File readahead state.  May be NULL.
    1223             :  */
    1224             : struct readahead_control {
    1225             :         struct file *file;
    1226             :         struct address_space *mapping;
    1227             :         struct file_ra_state *ra;
    1228             : /* private: use the readahead_* accessors instead */
    1229             :         pgoff_t _index;
    1230             :         unsigned int _nr_pages;
    1231             :         unsigned int _batch_count;
    1232             :         bool _workingset;
    1233             :         unsigned long _pflags;
    1234             : };
    1235             : 
    1236             : #define DEFINE_READAHEAD(ractl, f, r, m, i)                             \
    1237             :         struct readahead_control ractl = {                              \
    1238             :                 .file = f,                                              \
    1239             :                 .mapping = m,                                           \
    1240             :                 .ra = r,                                                \
    1241             :                 ._index = i,                                            \
    1242             :         }
    1243             : 
    1244             : #define VM_READAHEAD_PAGES      (SZ_128K / PAGE_SIZE)
    1245             : 
    1246             : void page_cache_ra_unbounded(struct readahead_control *,
    1247             :                 unsigned long nr_to_read, unsigned long lookahead_count);
    1248             : void page_cache_sync_ra(struct readahead_control *, unsigned long req_count);
    1249             : void page_cache_async_ra(struct readahead_control *, struct folio *,
    1250             :                 unsigned long req_count);
    1251             : void readahead_expand(struct readahead_control *ractl,
    1252             :                       loff_t new_start, size_t new_len);
    1253             : 
    1254             : /**
    1255             :  * page_cache_sync_readahead - generic file readahead
    1256             :  * @mapping: address_space which holds the pagecache and I/O vectors
    1257             :  * @ra: file_ra_state which holds the readahead state
    1258             :  * @file: Used by the filesystem for authentication.
    1259             :  * @index: Index of first page to be read.
    1260             :  * @req_count: Total number of pages being read by the caller.
    1261             :  *
    1262             :  * page_cache_sync_readahead() should be called when a cache miss happened:
    1263             :  * it will submit the read.  The readahead logic may decide to piggyback more
    1264             :  * pages onto the read request if access patterns suggest it will improve
    1265             :  * performance.
    1266             :  */
    1267             : static inline
    1268    27416755 : void page_cache_sync_readahead(struct address_space *mapping,
    1269             :                 struct file_ra_state *ra, struct file *file, pgoff_t index,
    1270             :                 unsigned long req_count)
    1271             : {
    1272    27416755 :         DEFINE_READAHEAD(ractl, file, ra, mapping, index);
    1273    27416755 :         page_cache_sync_ra(&ractl, req_count);
    1274    27421372 : }
    1275             : 
    1276             : /**
    1277             :  * page_cache_async_readahead - file readahead for marked pages
    1278             :  * @mapping: address_space which holds the pagecache and I/O vectors
    1279             :  * @ra: file_ra_state which holds the readahead state
    1280             :  * @file: Used by the filesystem for authentication.
    1281             :  * @folio: The folio at @index which triggered the readahead call.
    1282             :  * @index: Index of first page to be read.
    1283             :  * @req_count: Total number of pages being read by the caller.
    1284             :  *
    1285             :  * page_cache_async_readahead() should be called when a page is used which
    1286             :  * is marked as PageReadahead; this is a marker to suggest that the application
    1287             :  * has used up enough of the readahead window that we should start pulling in
    1288             :  * more pages.
    1289             :  */
    1290             : static inline
    1291        1354 : void page_cache_async_readahead(struct address_space *mapping,
    1292             :                 struct file_ra_state *ra, struct file *file,
    1293             :                 struct folio *folio, pgoff_t index, unsigned long req_count)
    1294             : {
    1295        1354 :         DEFINE_READAHEAD(ractl, file, ra, mapping, index);
    1296        1354 :         page_cache_async_ra(&ractl, folio, req_count);
    1297        1354 : }
    1298             : 
    1299   969592124 : static inline struct folio *__readahead_folio(struct readahead_control *ractl)
    1300             : {
    1301   969592124 :         struct folio *folio;
    1302             : 
    1303   969592124 :         BUG_ON(ractl->_batch_count > ractl->_nr_pages);
    1304   969592124 :         ractl->_nr_pages -= ractl->_batch_count;
    1305   969592124 :         ractl->_index += ractl->_batch_count;
    1306             : 
    1307   969592124 :         if (!ractl->_nr_pages) {
    1308    54509158 :                 ractl->_batch_count = 0;
    1309    54509158 :                 return NULL;
    1310             :         }
    1311             : 
    1312   915082966 :         folio = xa_load(&ractl->mapping->i_pages, ractl->_index);
    1313   915108357 :         VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio);
    1314   915058540 :         ractl->_batch_count = folio_nr_pages(folio);
    1315             : 
    1316   915023976 :         return folio;
    1317             : }
    1318             : 
    1319             : /**
    1320             :  * readahead_page - Get the next page to read.
    1321             :  * @ractl: The current readahead request.
    1322             :  *
    1323             :  * Context: The page is locked and has an elevated refcount.  The caller
    1324             :  * should decreases the refcount once the page has been submitted for I/O
    1325             :  * and unlock the page once all I/O to that page has completed.
    1326             :  * Return: A pointer to the next page, or %NULL if we are done.
    1327             :  */
    1328             : static inline struct page *readahead_page(struct readahead_control *ractl)
    1329             : {
    1330             :         struct folio *folio = __readahead_folio(ractl);
    1331             : 
    1332             :         return &folio->page;
    1333             : }
    1334             : 
    1335             : /**
    1336             :  * readahead_folio - Get the next folio to read.
    1337             :  * @ractl: The current readahead request.
    1338             :  *
    1339             :  * Context: The folio is locked.  The caller should unlock the folio once
    1340             :  * all I/O to that folio has completed.
    1341             :  * Return: A pointer to the next folio, or %NULL if we are done.
    1342             :  */
    1343   969603384 : static inline struct folio *readahead_folio(struct readahead_control *ractl)
    1344             : {
    1345   969603384 :         struct folio *folio = __readahead_folio(ractl);
    1346             : 
    1347   969535171 :         if (folio)
    1348   915026504 :                 folio_put(folio);
    1349   969594538 :         return folio;
    1350             : }
    1351             : 
    1352     4661877 : static inline unsigned int __readahead_batch(struct readahead_control *rac,
    1353             :                 struct page **array, unsigned int array_sz)
    1354             : {
    1355     4661877 :         unsigned int i = 0;
    1356     4661877 :         XA_STATE(xas, &rac->mapping->i_pages, 0);
    1357     4661877 :         struct page *page;
    1358             : 
    1359     4661877 :         BUG_ON(rac->_batch_count > rac->_nr_pages);
    1360     4661877 :         rac->_nr_pages -= rac->_batch_count;
    1361     4661877 :         rac->_index += rac->_batch_count;
    1362     4661877 :         rac->_batch_count = 0;
    1363             : 
    1364     4661877 :         xas_set(&xas, rac->_index);
    1365     4661877 :         rcu_read_lock();
    1366    46955432 :         xas_for_each(&xas, page, rac->_index + rac->_nr_pages - 1) {
    1367    44810359 :                 if (xas_retry(&xas, page))
    1368           0 :                         continue;
    1369    89620354 :                 VM_BUG_ON_PAGE(!PageLocked(page), page);
    1370    89620101 :                 VM_BUG_ON_PAGE(PageTail(page), page);
    1371    44809896 :                 array[i++] = page;
    1372    44809896 :                 rac->_batch_count += thp_nr_pages(page);
    1373    44809674 :                 if (i == array_sz)
    1374             :                         break;
    1375             :         }
    1376     4661843 :         rcu_read_unlock();
    1377             : 
    1378     4661826 :         return i;
    1379             : }
    1380             : 
    1381             : /**
    1382             :  * readahead_page_batch - Get a batch of pages to read.
    1383             :  * @rac: The current readahead request.
    1384             :  * @array: An array of pointers to struct page.
    1385             :  *
    1386             :  * Context: The pages are locked and have an elevated refcount.  The caller
    1387             :  * should decreases the refcount once the page has been submitted for I/O
    1388             :  * and unlock the page once all I/O to that page has completed.
    1389             :  * Return: The number of pages placed in the array.  0 indicates the request
    1390             :  * is complete.
    1391             :  */
    1392             : #define readahead_page_batch(rac, array)                                \
    1393             :         __readahead_batch(rac, array, ARRAY_SIZE(array))
    1394             : 
    1395             : /**
    1396             :  * readahead_pos - The byte offset into the file of this readahead request.
    1397             :  * @rac: The readahead request.
    1398             :  */
    1399             : static inline loff_t readahead_pos(struct readahead_control *rac)
    1400             : {
    1401    35279506 :         return (loff_t)rac->_index * PAGE_SIZE;
    1402             : }
    1403             : 
    1404             : /**
    1405             :  * readahead_length - The number of bytes in this readahead request.
    1406             :  * @rac: The readahead request.
    1407             :  */
    1408             : static inline size_t readahead_length(struct readahead_control *rac)
    1409             : {
    1410    31999691 :         return rac->_nr_pages * PAGE_SIZE;
    1411             : }
    1412             : 
    1413             : /**
    1414             :  * readahead_index - The index of the first page in this readahead request.
    1415             :  * @rac: The readahead request.
    1416             :  */
    1417             : static inline pgoff_t readahead_index(struct readahead_control *rac)
    1418             : {
    1419    99502368 :         return rac->_index;
    1420             : }
    1421             : 
    1422             : /**
    1423             :  * readahead_count - The number of pages in this readahead request.
    1424             :  * @rac: The readahead request.
    1425             :  */
    1426             : static inline unsigned int readahead_count(struct readahead_control *rac)
    1427             : {
    1428   532388079 :         return rac->_nr_pages;
    1429             : }
    1430             : 
    1431             : /**
    1432             :  * readahead_batch_length - The number of bytes in the current batch.
    1433             :  * @rac: The readahead request.
    1434             :  */
    1435             : static inline size_t readahead_batch_length(struct readahead_control *rac)
    1436             : {
    1437     3279815 :         return rac->_batch_count * PAGE_SIZE;
    1438             : }
    1439             : 
    1440             : static inline unsigned long dir_pages(struct inode *inode)
    1441             : {
    1442             :         return (unsigned long)(inode->i_size + PAGE_SIZE - 1) >>
    1443             :                                PAGE_SHIFT;
    1444             : }
    1445             : 
    1446             : /**
    1447             :  * folio_mkwrite_check_truncate - check if folio was truncated
    1448             :  * @folio: the folio to check
    1449             :  * @inode: the inode to check the folio against
    1450             :  *
    1451             :  * Return: the number of bytes in the folio up to EOF,
    1452             :  * or -EFAULT if the folio was truncated.
    1453             :  */
    1454    78279443 : static inline ssize_t folio_mkwrite_check_truncate(struct folio *folio,
    1455             :                                               struct inode *inode)
    1456             : {
    1457    78279443 :         loff_t size = i_size_read(inode);
    1458    78279443 :         pgoff_t index = size >> PAGE_SHIFT;
    1459    78279443 :         size_t offset = offset_in_folio(folio, size);
    1460             : 
    1461    78334149 :         if (!folio->mapping)
    1462             :                 return -EFAULT;
    1463             : 
    1464             :         /* folio is wholly inside EOF */
    1465    78320858 :         if (folio_next_index(folio) - 1 < index)
    1466    75392583 :                 return folio_size(folio);
    1467             :         /* folio is wholly past EOF */
    1468     2950597 :         if (folio->index > index || !offset)
    1469             :                 return -EFAULT;
    1470             :         /* folio is partially inside EOF */
    1471     2950597 :         return offset;
    1472             : }
    1473             : 
    1474             : /**
    1475             :  * page_mkwrite_check_truncate - check if page was truncated
    1476             :  * @page: the page to check
    1477             :  * @inode: the inode to check the page against
    1478             :  *
    1479             :  * Returns the number of bytes in the page up to EOF,
    1480             :  * or -EFAULT if the page was truncated.
    1481             :  */
    1482             : static inline int page_mkwrite_check_truncate(struct page *page,
    1483             :                                               struct inode *inode)
    1484             : {
    1485             :         loff_t size = i_size_read(inode);
    1486             :         pgoff_t index = size >> PAGE_SHIFT;
    1487             :         int offset = offset_in_page(size);
    1488             : 
    1489             :         if (page->mapping != inode->i_mapping)
    1490             :                 return -EFAULT;
    1491             : 
    1492             :         /* page is wholly inside EOF */
    1493             :         if (page->index < index)
    1494             :                 return PAGE_SIZE;
    1495             :         /* page is wholly past EOF */
    1496             :         if (page->index > index || !offset)
    1497             :                 return -EFAULT;
    1498             :         /* page is partially inside EOF */
    1499             :         return offset;
    1500             : }
    1501             : 
    1502             : /**
    1503             :  * i_blocks_per_folio - How many blocks fit in this folio.
    1504             :  * @inode: The inode which contains the blocks.
    1505             :  * @folio: The folio.
    1506             :  *
    1507             :  * If the block size is larger than the size of this folio, return zero.
    1508             :  *
    1509             :  * Context: The caller should hold a refcount on the folio to prevent it
    1510             :  * from being split.
    1511             :  * Return: The number of filesystem blocks covered by this folio.
    1512             :  */
    1513             : static inline
    1514  4379605538 : unsigned int i_blocks_per_folio(struct inode *inode, struct folio *folio)
    1515             : {
    1516  4379605538 :         return folio_size(folio) >> inode->i_blkbits;
    1517             : }
    1518             : 
    1519             : static inline
    1520             : unsigned int i_blocks_per_page(struct inode *inode, struct page *page)
    1521             : {
    1522             :         return i_blocks_per_folio(inode, page_folio(page));
    1523             : }
    1524             : #endif /* _LINUX_PAGEMAP_H */

Generated by: LCOV version 1.14