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 18 struct folio_batch; 19 20 unsigned long invalidate_mapping_pages(struct address_space *mapping, 21 pgoff_t start, pgoff_t end); 22 23 static inline void invalidate_remote_inode(struct inode *inode) 24 { 25 if (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) || 26 S_ISLNK(inode->i_mode)) 27 invalidate_mapping_pages(inode->i_mapping, 0, -1); 28 } 29 int invalidate_inode_pages2(struct address_space *mapping); 30 int invalidate_inode_pages2_range(struct address_space *mapping, 31 pgoff_t start, pgoff_t end); 32 int kiocb_invalidate_pages(struct kiocb *iocb, size_t count); 33 void kiocb_invalidate_post_direct_write(struct kiocb *iocb, size_t count); 34 int filemap_invalidate_pages(struct address_space *mapping, 35 loff_t pos, loff_t end, bool nowait); 36 37 int write_inode_now(struct inode *, int sync); 38 int filemap_fdatawrite(struct address_space *); 39 int filemap_flush(struct address_space *); 40 int filemap_flush_nr(struct address_space *mapping, long *nr_to_write); 41 int filemap_fdatawait_keep_errors(struct address_space *mapping); 42 int filemap_fdatawait_range(struct address_space *, loff_t lstart, loff_t lend); 43 int filemap_fdatawait_range_keep_errors(struct address_space *mapping, 44 loff_t start_byte, loff_t end_byte); 45 int filemap_invalidate_inode(struct inode *inode, bool flush, 46 loff_t start, loff_t end); 47 48 static inline int filemap_fdatawait(struct address_space *mapping) 49 { 50 return filemap_fdatawait_range(mapping, 0, LLONG_MAX); 51 } 52 53 bool filemap_range_has_page(struct address_space *, loff_t lstart, loff_t lend); 54 int filemap_write_and_wait_range(struct address_space *mapping, 55 loff_t lstart, loff_t lend); 56 int filemap_fdatawrite_range(struct address_space *mapping, 57 loff_t start, loff_t end); 58 int filemap_check_errors(struct address_space *mapping); 59 void __filemap_set_wb_err(struct address_space *mapping, int err); 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 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 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 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 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(const struct address_space *mapping) 140 { 141 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 static inline bool mapping_shrinkable(const struct address_space *mapping) 166 { 167 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 if (IS_ENABLED(CONFIG_HIGHMEM)) 175 return true; 176 177 /* Cache completely empty? Shrink away. */ 178 head = rcu_access_pointer(mapping->i_pages.xa_head); 179 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 if (!xa_is_node(head) && xa_is_value(head)) 189 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_RELEASE_ALWAYS = 6, /* Call ->release_folio(), even if no private data */ 206 AS_STABLE_WRITES = 7, /* must wait for writeback before modifying 207 folio contents */ 208 AS_INACCESSIBLE = 8, /* Do not attempt direct R/W access to the mapping */ 209 AS_WRITEBACK_MAY_DEADLOCK_ON_RECLAIM = 9, 210 AS_KERNEL_FILE = 10, /* mapping for a fake kernel file that shouldn't 211 account usage to user cgroups */ 212 /* Bits 16-25 are used for FOLIO_ORDER */ 213 AS_FOLIO_ORDER_BITS = 5, 214 AS_FOLIO_ORDER_MIN = 16, 215 AS_FOLIO_ORDER_MAX = AS_FOLIO_ORDER_MIN + AS_FOLIO_ORDER_BITS, 216 }; 217 218 #define AS_FOLIO_ORDER_BITS_MASK ((1u << AS_FOLIO_ORDER_BITS) - 1) 219 #define AS_FOLIO_ORDER_MIN_MASK (AS_FOLIO_ORDER_BITS_MASK << AS_FOLIO_ORDER_MIN) 220 #define AS_FOLIO_ORDER_MAX_MASK (AS_FOLIO_ORDER_BITS_MASK << AS_FOLIO_ORDER_MAX) 221 #define AS_FOLIO_ORDER_MASK (AS_FOLIO_ORDER_MIN_MASK | AS_FOLIO_ORDER_MAX_MASK) 222 223 /** 224 * mapping_set_error - record a writeback error in the address_space 225 * @mapping: the mapping in which an error should be set 226 * @error: the error to set in the mapping 227 * 228 * When writeback fails in some way, we must record that error so that 229 * userspace can be informed when fsync and the like are called. We endeavor 230 * to report errors on any file that was open at the time of the error. Some 231 * internal callers also need to know when writeback errors have occurred. 232 * 233 * When a writeback error occurs, most filesystems will want to call 234 * mapping_set_error to record the error in the mapping so that it can be 235 * reported when the application calls fsync(2). 236 */ 237 static inline void mapping_set_error(struct address_space *mapping, int error) 238 { 239 if (likely(!error)) 240 return; 241 242 /* Record in wb_err for checkers using errseq_t based tracking */ 243 __filemap_set_wb_err(mapping, error); 244 245 /* Record it in superblock */ 246 if (mapping->host) 247 errseq_set(&mapping->host->i_sb->s_wb_err, error); 248 249 /* Record it in flags for now, for legacy callers */ 250 if (error == -ENOSPC) 251 set_bit(AS_ENOSPC, &mapping->flags); 252 else 253 set_bit(AS_EIO, &mapping->flags); 254 } 255 256 static inline void mapping_set_unevictable(struct address_space *mapping) 257 { 258 set_bit(AS_UNEVICTABLE, &mapping->flags); 259 } 260 261 static inline void mapping_clear_unevictable(struct address_space *mapping) 262 { 263 clear_bit(AS_UNEVICTABLE, &mapping->flags); 264 } 265 266 static inline bool mapping_unevictable(const struct address_space *mapping) 267 { 268 return mapping && test_bit(AS_UNEVICTABLE, &mapping->flags); 269 } 270 271 static inline void mapping_set_exiting(struct address_space *mapping) 272 { 273 set_bit(AS_EXITING, &mapping->flags); 274 } 275 276 static inline int mapping_exiting(const struct address_space *mapping) 277 { 278 return test_bit(AS_EXITING, &mapping->flags); 279 } 280 281 static inline void mapping_set_no_writeback_tags(struct address_space *mapping) 282 { 283 set_bit(AS_NO_WRITEBACK_TAGS, &mapping->flags); 284 } 285 286 static inline int mapping_use_writeback_tags(const struct address_space *mapping) 287 { 288 return !test_bit(AS_NO_WRITEBACK_TAGS, &mapping->flags); 289 } 290 291 static inline bool mapping_release_always(const struct address_space *mapping) 292 { 293 return test_bit(AS_RELEASE_ALWAYS, &mapping->flags); 294 } 295 296 static inline void mapping_set_release_always(struct address_space *mapping) 297 { 298 set_bit(AS_RELEASE_ALWAYS, &mapping->flags); 299 } 300 301 static inline void mapping_clear_release_always(struct address_space *mapping) 302 { 303 clear_bit(AS_RELEASE_ALWAYS, &mapping->flags); 304 } 305 306 static inline bool mapping_stable_writes(const struct address_space *mapping) 307 { 308 return test_bit(AS_STABLE_WRITES, &mapping->flags); 309 } 310 311 static inline void mapping_set_stable_writes(struct address_space *mapping) 312 { 313 set_bit(AS_STABLE_WRITES, &mapping->flags); 314 } 315 316 static inline void mapping_clear_stable_writes(struct address_space *mapping) 317 { 318 clear_bit(AS_STABLE_WRITES, &mapping->flags); 319 } 320 321 static inline void mapping_set_inaccessible(struct address_space *mapping) 322 { 323 /* 324 * It's expected inaccessible mappings are also unevictable. Compaction 325 * migrate scanner (isolate_migratepages_block()) relies on this to 326 * reduce page locking. 327 */ 328 set_bit(AS_UNEVICTABLE, &mapping->flags); 329 set_bit(AS_INACCESSIBLE, &mapping->flags); 330 } 331 332 static inline bool mapping_inaccessible(const struct address_space *mapping) 333 { 334 return test_bit(AS_INACCESSIBLE, &mapping->flags); 335 } 336 337 static inline void mapping_set_writeback_may_deadlock_on_reclaim(struct address_space *mapping) 338 { 339 set_bit(AS_WRITEBACK_MAY_DEADLOCK_ON_RECLAIM, &mapping->flags); 340 } 341 342 static inline bool mapping_writeback_may_deadlock_on_reclaim(const struct address_space *mapping) 343 { 344 return test_bit(AS_WRITEBACK_MAY_DEADLOCK_ON_RECLAIM, &mapping->flags); 345 } 346 347 static inline gfp_t mapping_gfp_mask(const struct address_space *mapping) 348 { 349 return mapping->gfp_mask; 350 } 351 352 /* Restricts the given gfp_mask to what the mapping allows. */ 353 static inline gfp_t mapping_gfp_constraint(const struct address_space *mapping, 354 gfp_t gfp_mask) 355 { 356 return mapping_gfp_mask(mapping) & gfp_mask; 357 } 358 359 /* 360 * This is non-atomic. Only to be used before the mapping is activated. 361 * Probably needs a barrier... 362 */ 363 static inline void mapping_set_gfp_mask(struct address_space *m, gfp_t mask) 364 { 365 m->gfp_mask = mask; 366 } 367 368 /* 369 * There are some parts of the kernel which assume that PMD entries 370 * are exactly HPAGE_PMD_ORDER. Those should be fixed, but until then, 371 * limit the maximum allocation order to PMD size. I'm not aware of any 372 * assumptions about maximum order if THP are disabled, but 8 seems like 373 * a good order (that's 1MB if you're using 4kB pages) 374 */ 375 #ifdef CONFIG_TRANSPARENT_HUGEPAGE 376 #define PREFERRED_MAX_PAGECACHE_ORDER HPAGE_PMD_ORDER 377 #else 378 #define PREFERRED_MAX_PAGECACHE_ORDER 8 379 #endif 380 381 /* 382 * xas_split_alloc() does not support arbitrary orders. This implies no 383 * 512MB THP on ARM64 with 64KB base page size. 384 */ 385 #define MAX_XAS_ORDER (XA_CHUNK_SHIFT * 2 - 1) 386 #define MAX_PAGECACHE_ORDER min(MAX_XAS_ORDER, PREFERRED_MAX_PAGECACHE_ORDER) 387 388 /* 389 * mapping_max_folio_size_supported() - Check the max folio size supported 390 * 391 * The filesystem should call this function at mount time if there is a 392 * requirement on the folio mapping size in the page cache. 393 */ 394 static inline size_t mapping_max_folio_size_supported(void) 395 { 396 if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) 397 return 1U << (PAGE_SHIFT + MAX_PAGECACHE_ORDER); 398 return PAGE_SIZE; 399 } 400 401 /* 402 * mapping_set_folio_order_range() - Set the orders supported by a file. 403 * @mapping: The address space of the file. 404 * @min: Minimum folio order (between 0-MAX_PAGECACHE_ORDER inclusive). 405 * @max: Maximum folio order (between @min-MAX_PAGECACHE_ORDER inclusive). 406 * 407 * The filesystem should call this function in its inode constructor to 408 * indicate which base size (min) and maximum size (max) of folio the VFS 409 * can use to cache the contents of the file. This should only be used 410 * if the filesystem needs special handling of folio sizes (ie there is 411 * something the core cannot know). 412 * Do not tune it based on, eg, i_size. 413 * 414 * Context: This should not be called while the inode is active as it 415 * is non-atomic. 416 */ 417 static inline void mapping_set_folio_order_range(struct address_space *mapping, 418 unsigned int min, 419 unsigned int max) 420 { 421 if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) 422 return; 423 424 if (min > MAX_PAGECACHE_ORDER) 425 min = MAX_PAGECACHE_ORDER; 426 427 if (max > MAX_PAGECACHE_ORDER) 428 max = MAX_PAGECACHE_ORDER; 429 430 if (max < min) 431 max = min; 432 433 mapping->flags = (mapping->flags & ~AS_FOLIO_ORDER_MASK) | 434 (min << AS_FOLIO_ORDER_MIN) | (max << AS_FOLIO_ORDER_MAX); 435 } 436 437 static inline void mapping_set_folio_min_order(struct address_space *mapping, 438 unsigned int min) 439 { 440 mapping_set_folio_order_range(mapping, min, MAX_PAGECACHE_ORDER); 441 } 442 443 /** 444 * mapping_set_large_folios() - Indicate the file supports large folios. 445 * @mapping: The address space of the file. 446 * 447 * The filesystem should call this function in its inode constructor to 448 * indicate that the VFS can use large folios to cache the contents of 449 * the file. 450 * 451 * Context: This should not be called while the inode is active as it 452 * is non-atomic. 453 */ 454 static inline void mapping_set_large_folios(struct address_space *mapping) 455 { 456 mapping_set_folio_order_range(mapping, 0, MAX_PAGECACHE_ORDER); 457 } 458 459 static inline unsigned int 460 mapping_max_folio_order(const struct address_space *mapping) 461 { 462 if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) 463 return 0; 464 return (mapping->flags & AS_FOLIO_ORDER_MAX_MASK) >> AS_FOLIO_ORDER_MAX; 465 } 466 467 static inline unsigned int 468 mapping_min_folio_order(const struct address_space *mapping) 469 { 470 if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) 471 return 0; 472 return (mapping->flags & AS_FOLIO_ORDER_MIN_MASK) >> AS_FOLIO_ORDER_MIN; 473 } 474 475 static inline unsigned long 476 mapping_min_folio_nrpages(const struct address_space *mapping) 477 { 478 return 1UL << mapping_min_folio_order(mapping); 479 } 480 481 static inline unsigned long 482 mapping_min_folio_nrbytes(const struct address_space *mapping) 483 { 484 return mapping_min_folio_nrpages(mapping) << PAGE_SHIFT; 485 } 486 487 /** 488 * mapping_align_index() - Align index for this mapping. 489 * @mapping: The address_space. 490 * @index: The page index. 491 * 492 * The index of a folio must be naturally aligned. If you are adding a 493 * new folio to the page cache and need to know what index to give it, 494 * call this function. 495 */ 496 static inline pgoff_t mapping_align_index(const struct address_space *mapping, 497 pgoff_t index) 498 { 499 return round_down(index, mapping_min_folio_nrpages(mapping)); 500 } 501 502 /* 503 * Large folio support currently depends on THP. These dependencies are 504 * being worked on but are not yet fixed. 505 */ 506 static inline bool mapping_large_folio_support(const struct address_space *mapping) 507 { 508 /* AS_FOLIO_ORDER is only reasonable for pagecache folios */ 509 VM_WARN_ONCE((unsigned long)mapping & FOLIO_MAPPING_ANON, 510 "Anonymous mapping always supports large folio"); 511 512 return mapping_max_folio_order(mapping) > 0; 513 } 514 515 /** 516 * mapping_pmd_folio_support() - Check if a mapping supports PMD-sized folio 517 * @mapping: The address_space 518 * 519 * While some mappings support large folios, they might not support PMD-sized 520 * folios. This function checks whether a mapping supports PMD-sized folios. 521 * For example, khugepaged needs this information before attempting to 522 * collapsing THPs. 523 * 524 * Return: True if PMD-sized folios are supported, otherwise false. 525 */ 526 #ifdef CONFIG_TRANSPARENT_HUGEPAGE 527 static inline bool mapping_pmd_folio_support(const struct address_space *mapping) 528 { 529 /* AS_FOLIO_ORDER is only reasonable for pagecache folios */ 530 VM_WARN_ON_ONCE((unsigned long)mapping & FOLIO_MAPPING_ANON); 531 532 return mapping_min_folio_order(mapping) <= PMD_ORDER && 533 mapping_max_folio_order(mapping) >= PMD_ORDER; 534 } 535 #else 536 static inline bool mapping_pmd_folio_support(const struct address_space *mapping) 537 { 538 return false; 539 } 540 #endif 541 542 /* Return the maximum folio size for this pagecache mapping, in bytes. */ 543 static inline size_t mapping_max_folio_size(const struct address_space *mapping) 544 { 545 return PAGE_SIZE << mapping_max_folio_order(mapping); 546 } 547 548 struct address_space *folio_mapping(const struct folio *folio); 549 550 /** 551 * folio_flush_mapping - Find the file mapping this folio belongs to. 552 * @folio: The folio. 553 * 554 * For folios which are in the page cache, return the mapping that this 555 * page belongs to. Anonymous folios return NULL, even if they're in 556 * the swap cache. Other kinds of folio also return NULL. 557 * 558 * This is ONLY used by architecture cache flushing code. If you aren't 559 * writing cache flushing code, you want either folio_mapping() or 560 * folio_file_mapping(). 561 */ 562 static inline struct address_space *folio_flush_mapping(struct folio *folio) 563 { 564 if (unlikely(folio_test_swapcache(folio))) 565 return NULL; 566 567 return folio_mapping(folio); 568 } 569 570 /** 571 * folio_inode - Get the host inode for this folio. 572 * @folio: The folio. 573 * 574 * For folios which are in the page cache, return the inode that this folio 575 * belongs to. 576 * 577 * Do not call this for folios which aren't in the page cache. 578 */ 579 static inline struct inode *folio_inode(struct folio *folio) 580 { 581 return folio->mapping->host; 582 } 583 584 /** 585 * folio_attach_private - Attach private data to a folio. 586 * @folio: Folio to attach data to. 587 * @data: Data to attach to folio. 588 * 589 * Attaching private data to a folio increments the page's reference count. 590 * The data must be detached before the folio will be freed. 591 */ 592 static inline void folio_attach_private(struct folio *folio, void *data) 593 { 594 folio_get(folio); 595 folio->private = data; 596 } 597 598 /** 599 * folio_change_private - Change private data on a folio. 600 * @folio: Folio to change the data on. 601 * @data: Data to set on the folio. 602 * 603 * Change the private data attached to a folio and return the old 604 * data. The page must previously have had data attached and the data 605 * must be detached before the folio will be freed. 606 * 607 * Return: Data that was previously attached to the folio. 608 */ 609 static inline void *folio_change_private(struct folio *folio, void *data) 610 { 611 void *old = folio_get_private(folio); 612 613 folio->private = data; 614 return old; 615 } 616 617 /** 618 * folio_detach_private - Detach private data from a folio. 619 * @folio: Folio to detach data from. 620 * 621 * Removes the data that was previously attached to the folio and decrements 622 * the refcount on the page. 623 * 624 * Return: Data that was attached to the folio. 625 */ 626 static inline void *folio_detach_private(struct folio *folio) 627 { 628 void *data = folio_get_private(folio); 629 630 if (!data) 631 return NULL; 632 folio->private = NULL; 633 folio_put(folio); 634 635 return data; 636 } 637 638 static inline void attach_page_private(struct page *page, void *data) 639 { 640 folio_attach_private(page_folio(page), data); 641 } 642 643 static inline void *detach_page_private(struct page *page) 644 { 645 return folio_detach_private(page_folio(page)); 646 } 647 648 #ifdef CONFIG_NUMA 649 struct folio *filemap_alloc_folio_noprof(gfp_t gfp, unsigned int order, 650 struct mempolicy *policy); 651 #else 652 static inline struct folio *filemap_alloc_folio_noprof(gfp_t gfp, unsigned int order, 653 struct mempolicy *policy) 654 { 655 return folio_alloc_noprof(gfp, order); 656 } 657 #endif 658 659 #define filemap_alloc_folio(...) \ 660 alloc_hooks(filemap_alloc_folio_noprof(__VA_ARGS__)) 661 662 static inline struct page *__page_cache_alloc(gfp_t gfp) 663 { 664 return &filemap_alloc_folio(gfp, 0, NULL)->page; 665 } 666 667 static inline gfp_t readahead_gfp_mask(struct address_space *x) 668 { 669 return mapping_gfp_mask(x) | __GFP_NORETRY | __GFP_NOWARN; 670 } 671 672 typedef int filler_t(struct file *, struct folio *); 673 674 pgoff_t page_cache_next_miss(struct address_space *mapping, 675 pgoff_t index, unsigned long max_scan); 676 pgoff_t page_cache_prev_miss(struct address_space *mapping, 677 pgoff_t index, unsigned long max_scan); 678 679 /** 680 * typedef fgf_t - Flags for getting folios from the page cache. 681 * 682 * Most users of the page cache will not need to use these flags; 683 * there are convenience functions such as filemap_get_folio() and 684 * filemap_lock_folio(). For users which need more control over exactly 685 * what is done with the folios, these flags to __filemap_get_folio() 686 * are available. 687 * 688 * * %FGP_ACCESSED - The folio will be marked accessed. 689 * * %FGP_LOCK - The folio is returned locked. 690 * * %FGP_CREAT - If no folio is present then a new folio is allocated, 691 * added to the page cache and the VM's LRU list. The folio is 692 * returned locked. 693 * * %FGP_FOR_MMAP - The caller wants to do its own locking dance if the 694 * folio is already in cache. If the folio was allocated, unlock it 695 * before returning so the caller can do the same dance. 696 * * %FGP_WRITE - The folio will be written to by the caller. 697 * * %FGP_NOFS - __GFP_FS will get cleared in gfp. 698 * * %FGP_NOWAIT - Don't block on the folio lock. 699 * * %FGP_STABLE - Wait for the folio to be stable (finished writeback) 700 * * %FGP_DONTCACHE - Uncached buffered IO 701 * * %FGP_WRITEBEGIN - The flags to use in a filesystem write_begin() 702 * implementation. 703 */ 704 typedef unsigned int __bitwise fgf_t; 705 706 #define FGP_ACCESSED ((__force fgf_t)0x00000001) 707 #define FGP_LOCK ((__force fgf_t)0x00000002) 708 #define FGP_CREAT ((__force fgf_t)0x00000004) 709 #define FGP_WRITE ((__force fgf_t)0x00000008) 710 #define FGP_NOFS ((__force fgf_t)0x00000010) 711 #define FGP_NOWAIT ((__force fgf_t)0x00000020) 712 #define FGP_FOR_MMAP ((__force fgf_t)0x00000040) 713 #define FGP_STABLE ((__force fgf_t)0x00000080) 714 #define FGP_DONTCACHE ((__force fgf_t)0x00000100) 715 #define FGF_GET_ORDER(fgf) (((__force unsigned)fgf) >> 26) /* top 6 bits */ 716 717 #define FGP_WRITEBEGIN (FGP_LOCK | FGP_WRITE | FGP_CREAT | FGP_STABLE) 718 719 static inline unsigned int filemap_get_order(size_t size) 720 { 721 unsigned int shift = ilog2(size); 722 723 if (shift <= PAGE_SHIFT) 724 return 0; 725 726 return shift - PAGE_SHIFT; 727 } 728 729 /** 730 * fgf_set_order - Encode a length in the fgf_t flags. 731 * @size: The suggested size of the folio to create. 732 * 733 * The caller of __filemap_get_folio() can use this to suggest a preferred 734 * size for the folio that is created. If there is already a folio at 735 * the index, it will be returned, no matter what its size. If a folio 736 * is freshly created, it may be of a different size than requested 737 * due to alignment constraints, memory pressure, or the presence of 738 * other folios at nearby indices. 739 */ 740 static inline fgf_t fgf_set_order(size_t size) 741 { 742 unsigned int order = filemap_get_order(size); 743 744 if (!order) 745 return 0; 746 return (__force fgf_t)(order << 26); 747 } 748 749 void *filemap_get_entry(struct address_space *mapping, pgoff_t index); 750 struct folio *__filemap_get_folio_mpol(struct address_space *mapping, 751 pgoff_t index, fgf_t fgf_flags, gfp_t gfp, struct mempolicy *policy); 752 struct page *pagecache_get_page(struct address_space *mapping, pgoff_t index, 753 fgf_t fgp_flags, gfp_t gfp); 754 755 static inline struct folio *__filemap_get_folio(struct address_space *mapping, 756 pgoff_t index, fgf_t fgf_flags, gfp_t gfp) 757 { 758 return __filemap_get_folio_mpol(mapping, index, fgf_flags, gfp, NULL); 759 } 760 761 /** 762 * write_begin_get_folio - Get folio for write_begin with flags. 763 * @iocb: The kiocb passed from write_begin (may be NULL). 764 * @mapping: The address space to search. 765 * @index: The page cache index. 766 * @len: Length of data being written. 767 * 768 * This is a helper for filesystem write_begin() implementations. 769 * It wraps __filemap_get_folio(), setting appropriate flags in 770 * the write begin context. 771 * 772 * Return: A folio or an ERR_PTR. 773 */ 774 static inline struct folio *write_begin_get_folio(const struct kiocb *iocb, 775 struct address_space *mapping, pgoff_t index, size_t len) 776 { 777 fgf_t fgp_flags = FGP_WRITEBEGIN; 778 779 fgp_flags |= fgf_set_order(len); 780 781 if (iocb && iocb->ki_flags & IOCB_DONTCACHE) 782 fgp_flags |= FGP_DONTCACHE; 783 784 return __filemap_get_folio(mapping, index, fgp_flags, 785 mapping_gfp_mask(mapping)); 786 } 787 788 /** 789 * filemap_get_folio - Find and get a folio. 790 * @mapping: The address_space to search. 791 * @index: The page index. 792 * 793 * Looks up the page cache entry at @mapping & @index. If a folio is 794 * present, it is returned with an increased refcount. 795 * 796 * Return: A folio or ERR_PTR(-ENOENT) if there is no folio in the cache for 797 * this index. Will not return a shadow, swap or DAX entry. 798 */ 799 static inline struct folio *filemap_get_folio(struct address_space *mapping, 800 pgoff_t index) 801 { 802 return __filemap_get_folio(mapping, index, 0, 0); 803 } 804 805 /** 806 * filemap_lock_folio - Find and lock a folio. 807 * @mapping: The address_space to search. 808 * @index: The page index. 809 * 810 * Looks up the page cache entry at @mapping & @index. If a folio is 811 * present, it is returned locked with an increased refcount. 812 * 813 * Context: May sleep. 814 * Return: A folio or ERR_PTR(-ENOENT) if there is no folio in the cache for 815 * this index. Will not return a shadow, swap or DAX entry. 816 */ 817 static inline struct folio *filemap_lock_folio(struct address_space *mapping, 818 pgoff_t index) 819 { 820 return __filemap_get_folio(mapping, index, FGP_LOCK, 0); 821 } 822 823 /** 824 * filemap_grab_folio - grab a folio from the page cache 825 * @mapping: The address space to search 826 * @index: The page index 827 * 828 * Looks up the page cache entry at @mapping & @index. If no folio is found, 829 * a new folio is created. The folio is locked, marked as accessed, and 830 * returned. 831 * 832 * Return: A found or created folio. ERR_PTR(-ENOMEM) if no folio is found 833 * and failed to create a folio. 834 */ 835 static inline struct folio *filemap_grab_folio(struct address_space *mapping, 836 pgoff_t index) 837 { 838 return __filemap_get_folio(mapping, index, 839 FGP_LOCK | FGP_ACCESSED | FGP_CREAT, 840 mapping_gfp_mask(mapping)); 841 } 842 843 /** 844 * find_get_page - find and get a page reference 845 * @mapping: the address_space to search 846 * @offset: the page index 847 * 848 * Looks up the page cache slot at @mapping & @offset. If there is a 849 * page cache page, it is returned with an increased refcount. 850 * 851 * Otherwise, %NULL is returned. 852 */ 853 static inline struct page *find_get_page(struct address_space *mapping, 854 pgoff_t offset) 855 { 856 return pagecache_get_page(mapping, offset, 0, 0); 857 } 858 859 static inline struct page *find_get_page_flags(struct address_space *mapping, 860 pgoff_t offset, fgf_t fgp_flags) 861 { 862 return pagecache_get_page(mapping, offset, fgp_flags, 0); 863 } 864 865 /** 866 * find_lock_page - locate, pin and lock a pagecache page 867 * @mapping: the address_space to search 868 * @index: the page index 869 * 870 * Looks up the page cache entry at @mapping & @index. If there is a 871 * page cache page, it is returned locked and with an increased 872 * refcount. 873 * 874 * Context: May sleep. 875 * Return: A struct page or %NULL if there is no page in the cache for this 876 * index. 877 */ 878 static inline struct page *find_lock_page(struct address_space *mapping, 879 pgoff_t index) 880 { 881 return pagecache_get_page(mapping, index, FGP_LOCK, 0); 882 } 883 884 /** 885 * find_or_create_page - locate or add a pagecache page 886 * @mapping: the page's address_space 887 * @index: the page's index into the mapping 888 * @gfp_mask: page allocation mode 889 * 890 * Looks up the page cache slot at @mapping & @offset. If there is a 891 * page cache page, it is returned locked and with an increased 892 * refcount. 893 * 894 * If the page is not present, a new page is allocated using @gfp_mask 895 * and added to the page cache and the VM's LRU list. The page is 896 * returned locked and with an increased refcount. 897 * 898 * On memory exhaustion, %NULL is returned. 899 * 900 * find_or_create_page() may sleep, even if @gfp_flags specifies an 901 * atomic allocation! 902 */ 903 static inline struct page *find_or_create_page(struct address_space *mapping, 904 pgoff_t index, gfp_t gfp_mask) 905 { 906 return pagecache_get_page(mapping, index, 907 FGP_LOCK|FGP_ACCESSED|FGP_CREAT, 908 gfp_mask); 909 } 910 911 /** 912 * grab_cache_page_nowait - returns locked page at given index in given cache 913 * @mapping: target address_space 914 * @index: the page index 915 * 916 * Returns locked page at given index in given cache, creating it if 917 * needed, but do not wait if the page is locked or to reclaim memory. 918 * This is intended for speculative data generators, where the data can 919 * be regenerated if the page couldn't be grabbed. This routine should 920 * be safe to call while holding the lock for another page. 921 * 922 * Clear __GFP_FS when allocating the page to avoid recursion into the fs 923 * and deadlock against the caller's locked page. 924 */ 925 static inline struct page *grab_cache_page_nowait(struct address_space *mapping, 926 pgoff_t index) 927 { 928 return pagecache_get_page(mapping, index, 929 FGP_LOCK|FGP_CREAT|FGP_NOFS|FGP_NOWAIT, 930 mapping_gfp_mask(mapping)); 931 } 932 933 /** 934 * folio_next_index - Get the index of the next folio. 935 * @folio: The current folio. 936 * 937 * Return: The index of the folio which follows this folio in the file. 938 */ 939 static inline pgoff_t folio_next_index(const struct folio *folio) 940 { 941 return folio->index + folio_nr_pages(folio); 942 } 943 944 /** 945 * folio_next_pos - Get the file position of the next folio. 946 * @folio: The current folio. 947 * 948 * Return: The position of the folio which follows this folio in the file. 949 */ 950 static inline loff_t folio_next_pos(const struct folio *folio) 951 { 952 return (loff_t)folio_next_index(folio) << PAGE_SHIFT; 953 } 954 955 /** 956 * folio_file_page - The page for a particular index. 957 * @folio: The folio which contains this index. 958 * @index: The index we want to look up. 959 * 960 * Sometimes after looking up a folio in the page cache, we need to 961 * obtain the specific page for an index (eg a page fault). 962 * 963 * Return: The page containing the file data for this index. 964 */ 965 static inline struct page *folio_file_page(struct folio *folio, pgoff_t index) 966 { 967 return folio_page(folio, index & (folio_nr_pages(folio) - 1)); 968 } 969 970 /** 971 * folio_contains - Does this folio contain this index? 972 * @folio: The folio. 973 * @index: The page index within the file. 974 * 975 * Context: The caller should have the folio locked and ensure 976 * e.g., shmem did not move this folio to the swap cache. 977 * Return: true or false. 978 */ 979 static inline bool folio_contains(const struct folio *folio, pgoff_t index) 980 { 981 VM_WARN_ON_ONCE_FOLIO(folio_test_swapcache(folio), folio); 982 return index - folio->index < folio_nr_pages(folio); 983 } 984 985 unsigned filemap_get_folios(struct address_space *mapping, pgoff_t *start, 986 pgoff_t end, struct folio_batch *fbatch); 987 unsigned filemap_get_folios_contig(struct address_space *mapping, 988 pgoff_t *start, pgoff_t end, struct folio_batch *fbatch); 989 unsigned filemap_get_folios_tag(struct address_space *mapping, pgoff_t *start, 990 pgoff_t end, xa_mark_t tag, struct folio_batch *fbatch); 991 unsigned filemap_get_folios_dirty(struct address_space *mapping, 992 pgoff_t *start, pgoff_t end, struct folio_batch *fbatch); 993 994 struct folio *read_cache_folio(struct address_space *, pgoff_t index, 995 filler_t *filler, struct file *file); 996 struct folio *mapping_read_folio_gfp(struct address_space *, pgoff_t index, 997 gfp_t flags); 998 struct page *read_cache_page(struct address_space *, pgoff_t index, 999 filler_t *filler, struct file *file); 1000 extern struct page * read_cache_page_gfp(struct address_space *mapping, 1001 pgoff_t index, gfp_t gfp_mask); 1002 1003 static inline struct page *read_mapping_page(struct address_space *mapping, 1004 pgoff_t index, struct file *file) 1005 { 1006 return read_cache_page(mapping, index, NULL, file); 1007 } 1008 1009 static inline struct folio *read_mapping_folio(struct address_space *mapping, 1010 pgoff_t index, struct file *file) 1011 { 1012 return read_cache_folio(mapping, index, NULL, file); 1013 } 1014 1015 /** 1016 * page_pgoff - Calculate the logical page offset of this page. 1017 * @folio: The folio containing this page. 1018 * @page: The page which we need the offset of. 1019 * 1020 * For file pages, this is the offset from the beginning of the file 1021 * in units of PAGE_SIZE. For anonymous pages, this is the offset from 1022 * the beginning of the anon_vma in units of PAGE_SIZE. This will 1023 * return nonsense for KSM pages. 1024 * 1025 * Context: Caller must have a reference on the folio or otherwise 1026 * prevent it from being split or freed. 1027 * 1028 * Return: The offset in units of PAGE_SIZE. 1029 */ 1030 static inline pgoff_t page_pgoff(const struct folio *folio, 1031 const struct page *page) 1032 { 1033 return folio->index + folio_page_idx(folio, page); 1034 } 1035 1036 /** 1037 * folio_pos - Returns the byte position of this folio in its file. 1038 * @folio: The folio. 1039 */ 1040 static inline loff_t folio_pos(const struct folio *folio) 1041 { 1042 return ((loff_t)folio->index) * PAGE_SIZE; 1043 } 1044 1045 /* 1046 * Return byte-offset into filesystem object for page. 1047 */ 1048 static inline loff_t page_offset(struct page *page) 1049 { 1050 struct folio *folio = page_folio(page); 1051 1052 return folio_pos(folio) + folio_page_idx(folio, page) * PAGE_SIZE; 1053 } 1054 1055 /* 1056 * Get the offset in PAGE_SIZE (even for hugetlb folios). 1057 */ 1058 static inline pgoff_t folio_pgoff(const struct folio *folio) 1059 { 1060 return folio->index; 1061 } 1062 1063 /** 1064 * linear_page_delta() - Determine the relative page offset of @address within 1065 * @vma. 1066 * @vma: The VMA in which @address resides. 1067 * @address: The address whose relative page offset is required. 1068 * 1069 * The result is identical for both file-backed and anonymous mappings and 1070 * simply determines how many pages @address lies from @vma->vm_start. 1071 * 1072 * Returns: The number of pages @address is offset by within @vma. 1073 */ 1074 static inline pgoff_t linear_page_delta(const struct vm_area_struct *vma, 1075 const unsigned long address) 1076 { 1077 return (address - vma->vm_start) >> PAGE_SHIFT; 1078 } 1079 1080 /** 1081 * linear_page_index() - Determine the absolute page offset of @address within 1082 * @vma. 1083 * @vma: The VMA in which @address resides. 1084 * @address: The address whose absolute page offset is required. 1085 * 1086 * See the comment for vma_start_pgoff() for a description of what the page 1087 * offset signifies. 1088 * 1089 * Returns: The absolute page offset of @address within @vma. 1090 */ 1091 static inline pgoff_t linear_page_index(const struct vm_area_struct *vma, 1092 const unsigned long address) 1093 { 1094 return linear_page_delta(vma, address) + vma_start_pgoff(vma); 1095 } 1096 1097 static inline pgoff_t __linear_anon_page_index(const struct vm_area_struct *vma, 1098 const unsigned long address) 1099 { 1100 return linear_page_delta(vma, address) + vma_start_anon_pgoff(vma); 1101 } 1102 1103 /** 1104 * linear_anon_page_index() - Determine the absolute anonymous page offset of 1105 * @address within @vma. 1106 * @vma: An anonymous or MAP_PRIVATE file-backed VMA in which @address resides. 1107 * @address: The address whose absolute page offset is required. 1108 * 1109 * This returns the anonymous page offset of @address, which is the page offset 1110 * the address possessed at the time the VMA was first faulted. 1111 * 1112 * For anonymous mappings, this returns the same value as linear_page_index(). 1113 * 1114 * For MAP_PRIVATE file-backed mappings, this returns the anonymous page offset 1115 * of @address, which is the page offset the address possessed at the time the 1116 * VMA was first faulted. 1117 * 1118 * It is not valid to call this function for shared file-backed mappings. 1119 * 1120 * Returns: The absolute anonymous page offset of @address within @vma. 1121 */ 1122 static inline pgoff_t linear_anon_page_index(const struct vm_area_struct *vma, 1123 const unsigned long address) 1124 { 1125 const pgoff_t pgoff = __linear_anon_page_index(vma, address); 1126 1127 VM_WARN_ON_ONCE(!vma_is_cow_mapping(vma)); 1128 if (vma_is_anonymous(vma)) 1129 VM_WARN_ON_ONCE(pgoff != linear_page_index(vma, address)); 1130 1131 return pgoff; 1132 } 1133 1134 struct wait_page_key { 1135 struct folio *folio; 1136 int bit_nr; 1137 int page_match; 1138 }; 1139 1140 struct wait_page_queue { 1141 struct folio *folio; 1142 int bit_nr; 1143 wait_queue_entry_t wait; 1144 }; 1145 1146 static inline bool wake_page_match(struct wait_page_queue *wait_page, 1147 struct wait_page_key *key) 1148 { 1149 if (wait_page->folio != key->folio) 1150 return false; 1151 key->page_match = 1; 1152 1153 if (wait_page->bit_nr != key->bit_nr) 1154 return false; 1155 1156 return true; 1157 } 1158 1159 void __folio_lock(struct folio *folio); 1160 int __folio_lock_killable(struct folio *folio); 1161 vm_fault_t __folio_lock_or_retry(struct folio *folio, struct vm_fault *vmf); 1162 void unlock_page(struct page *page); 1163 void folio_unlock(struct folio *folio); 1164 1165 /** 1166 * folio_trylock() - Attempt to lock a folio. 1167 * @folio: The folio to attempt to lock. 1168 * 1169 * Sometimes it is undesirable to wait for a folio to be unlocked (eg 1170 * when the locks are being taken in the wrong order, or if making 1171 * progress through a batch of folios is more important than processing 1172 * them in order). Usually folio_lock() is the correct function to call. 1173 * 1174 * Context: Any context. 1175 * Return: Whether the lock was successfully acquired. 1176 */ 1177 static inline bool folio_trylock(struct folio *folio) 1178 { 1179 return likely(!test_and_set_bit_lock(PG_locked, folio_flags(folio, 0))); 1180 } 1181 1182 /* 1183 * Return true if the page was successfully locked 1184 */ 1185 static inline bool trylock_page(struct page *page) 1186 { 1187 return folio_trylock(page_folio(page)); 1188 } 1189 1190 /** 1191 * folio_lock() - Lock this folio. 1192 * @folio: The folio to lock. 1193 * 1194 * The folio lock protects against many things, probably more than it 1195 * should. It is primarily held while a folio is being brought uptodate, 1196 * either from its backing file or from swap. It is also held while a 1197 * folio is being truncated from its address_space, so holding the lock 1198 * is sufficient to keep folio->mapping stable. 1199 * 1200 * The folio lock is also held while write() is modifying the page to 1201 * provide POSIX atomicity guarantees (as long as the write does not 1202 * cross a page boundary). Other modifications to the data in the folio 1203 * do not hold the folio lock and can race with writes, eg DMA and stores 1204 * to mapped pages. 1205 * 1206 * Context: May sleep. If you need to acquire the locks of two or 1207 * more folios, they must be in order of ascending index, if they are 1208 * in the same address_space. If they are in different address_spaces, 1209 * acquire the lock of the folio which belongs to the address_space which 1210 * has the lowest address in memory first. 1211 */ 1212 static inline void folio_lock(struct folio *folio) 1213 { 1214 might_sleep(); 1215 if (!folio_trylock(folio)) 1216 __folio_lock(folio); 1217 } 1218 1219 /** 1220 * lock_page() - Lock the folio containing this page. 1221 * @page: The page to lock. 1222 * 1223 * See folio_lock() for a description of what the lock protects. 1224 * This is a legacy function and new code should probably use folio_lock() 1225 * instead. 1226 * 1227 * Context: May sleep. Pages in the same folio share a lock, so do not 1228 * attempt to lock two pages which share a folio. 1229 */ 1230 static inline void lock_page(struct page *page) 1231 { 1232 struct folio *folio; 1233 might_sleep(); 1234 1235 folio = page_folio(page); 1236 if (!folio_trylock(folio)) 1237 __folio_lock(folio); 1238 } 1239 1240 /** 1241 * folio_lock_killable() - Lock this folio, interruptible by a fatal signal. 1242 * @folio: The folio to lock. 1243 * 1244 * Attempts to lock the folio, like folio_lock(), except that the sleep 1245 * to acquire the lock is interruptible by a fatal signal. 1246 * 1247 * Context: May sleep; see folio_lock(). 1248 * Return: 0 if the lock was acquired; -EINTR if a fatal signal was received. 1249 */ 1250 static inline int folio_lock_killable(struct folio *folio) 1251 { 1252 might_sleep(); 1253 if (!folio_trylock(folio)) 1254 return __folio_lock_killable(folio); 1255 return 0; 1256 } 1257 1258 /* 1259 * folio_lock_or_retry - Lock the folio, unless this would block and the 1260 * caller indicated that it can handle a retry. 1261 * 1262 * Return value and mmap_lock implications depend on flags; see 1263 * __folio_lock_or_retry(). 1264 */ 1265 static inline vm_fault_t folio_lock_or_retry(struct folio *folio, 1266 struct vm_fault *vmf) 1267 { 1268 might_sleep(); 1269 if (!folio_trylock(folio)) 1270 return __folio_lock_or_retry(folio, vmf); 1271 return 0; 1272 } 1273 1274 /* 1275 * This is exported only for folio_wait_locked/folio_wait_writeback, etc., 1276 * and should not be used directly. 1277 */ 1278 void folio_wait_bit(struct folio *folio, int bit_nr); 1279 int folio_wait_bit_killable(struct folio *folio, int bit_nr); 1280 1281 /* 1282 * Wait for a folio to be unlocked. 1283 * 1284 * This must be called with the caller "holding" the folio, 1285 * ie with increased folio reference count so that the folio won't 1286 * go away during the wait. 1287 */ 1288 static inline void folio_wait_locked(struct folio *folio) 1289 { 1290 if (folio_test_locked(folio)) 1291 folio_wait_bit(folio, PG_locked); 1292 } 1293 1294 static inline int folio_wait_locked_killable(struct folio *folio) 1295 { 1296 if (!folio_test_locked(folio)) 1297 return 0; 1298 return folio_wait_bit_killable(folio, PG_locked); 1299 } 1300 1301 void folio_end_read(struct folio *folio, bool success); 1302 void wait_on_page_writeback(struct page *page); 1303 void folio_wait_writeback(struct folio *folio); 1304 int folio_wait_writeback_killable(struct folio *folio); 1305 void end_page_writeback(struct page *page); 1306 void folio_end_writeback(struct folio *folio); 1307 void folio_end_writeback_no_dropbehind(struct folio *folio); 1308 void folio_end_dropbehind(struct folio *folio); 1309 void folio_wait_stable(struct folio *folio); 1310 void __folio_mark_dirty(struct folio *folio, struct address_space *, int warn); 1311 void folio_account_cleaned(struct folio *folio, struct bdi_writeback *wb); 1312 void __folio_cancel_dirty(struct folio *folio); 1313 static inline void folio_cancel_dirty(struct folio *folio) 1314 { 1315 /* Avoid atomic ops, locking, etc. when not actually needed. */ 1316 if (folio_test_dirty(folio)) 1317 __folio_cancel_dirty(folio); 1318 } 1319 bool folio_clear_dirty_for_io(struct folio *folio); 1320 bool clear_page_dirty_for_io(struct page *page); 1321 void folio_invalidate(struct folio *folio, size_t offset, size_t length); 1322 bool noop_dirty_folio(struct address_space *mapping, struct folio *folio); 1323 1324 #ifdef CONFIG_MIGRATION 1325 int filemap_migrate_folio(struct address_space *mapping, struct folio *dst, 1326 struct folio *src, enum migrate_mode mode); 1327 #else 1328 #define filemap_migrate_folio NULL 1329 #endif 1330 void folio_end_private_2(struct folio *folio); 1331 void folio_wait_private_2(struct folio *folio); 1332 int folio_wait_private_2_killable(struct folio *folio); 1333 1334 /* 1335 * Fault in userspace address range. 1336 */ 1337 size_t fault_in_writeable(char __user *uaddr, size_t size); 1338 size_t fault_in_subpage_writeable(char __user *uaddr, size_t size); 1339 size_t fault_in_safe_writeable(const char __user *uaddr, size_t size); 1340 size_t fault_in_readable(const char __user *uaddr, size_t size); 1341 1342 int add_to_page_cache_lru(struct page *page, struct address_space *mapping, 1343 pgoff_t index, gfp_t gfp); 1344 int filemap_add_folio(struct address_space *mapping, struct folio *folio, 1345 pgoff_t index, gfp_t gfp); 1346 void filemap_remove_folio(struct folio *folio); 1347 void __filemap_remove_folio(struct folio *folio, void *shadow); 1348 void replace_page_cache_folio(struct folio *old, struct folio *new); 1349 void delete_from_page_cache_batch(struct address_space *mapping, 1350 struct folio_batch *fbatch); 1351 bool filemap_release_folio(struct folio *folio, gfp_t gfp); 1352 loff_t mapping_seek_hole_data(struct address_space *, loff_t start, loff_t end, 1353 int whence); 1354 1355 /* Must be non-static for BPF error injection */ 1356 int __filemap_add_folio(struct address_space *mapping, struct folio *folio, 1357 pgoff_t index, gfp_t gfp, void **shadowp); 1358 1359 bool filemap_range_has_writeback(struct address_space *mapping, 1360 loff_t start_byte, loff_t end_byte); 1361 1362 /** 1363 * filemap_range_needs_writeback - check if range potentially needs writeback 1364 * @mapping: address space within which to check 1365 * @start_byte: offset in bytes where the range starts 1366 * @end_byte: offset in bytes where the range ends (inclusive) 1367 * 1368 * Find at least one page in the range supplied, usually used to check if 1369 * direct writing in this range will trigger a writeback. Used by O_DIRECT 1370 * read/write with IOCB_NOWAIT, to see if the caller needs to do 1371 * filemap_write_and_wait_range() before proceeding. 1372 * 1373 * Return: %true if the caller should do filemap_write_and_wait_range() before 1374 * doing O_DIRECT to a page in this range, %false otherwise. 1375 */ 1376 static inline bool filemap_range_needs_writeback(struct address_space *mapping, 1377 loff_t start_byte, 1378 loff_t end_byte) 1379 { 1380 if (!mapping->nrpages) 1381 return false; 1382 if (!mapping_tagged(mapping, PAGECACHE_TAG_DIRTY) && 1383 !mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK)) 1384 return false; 1385 return filemap_range_has_writeback(mapping, start_byte, end_byte); 1386 } 1387 1388 /** 1389 * struct readahead_control - Describes a readahead request. 1390 * 1391 * A readahead request is for consecutive pages. Filesystems which 1392 * implement the ->readahead method should call readahead_folio() or 1393 * __readahead_batch() in a loop and attempt to start reads into each 1394 * folio in the request. 1395 * 1396 * Most of the fields in this struct are private and should be accessed 1397 * by the functions below. 1398 * 1399 * @file: The file, used primarily by network filesystems for authentication. 1400 * May be NULL if invoked internally by the filesystem. 1401 * @mapping: Readahead this filesystem object. 1402 * @ra: File readahead state. May be NULL. 1403 */ 1404 struct readahead_control { 1405 struct file *file; 1406 struct address_space *mapping; 1407 struct file_ra_state *ra; 1408 /* private: use the readahead_* accessors instead */ 1409 pgoff_t _index; 1410 unsigned int _nr_pages; 1411 unsigned int _batch_count; 1412 bool dropbehind; 1413 bool _workingset; 1414 unsigned long _pflags; 1415 bool _forward; 1416 }; 1417 1418 #define DEFINE_READAHEAD(ractl, f, r, m, i) \ 1419 struct readahead_control ractl = { \ 1420 .file = f, \ 1421 .mapping = m, \ 1422 .ra = r, \ 1423 ._index = i, \ 1424 } 1425 1426 #define VM_READAHEAD_PAGES (SZ_128K / PAGE_SIZE) 1427 1428 void page_cache_ra_unbounded(struct readahead_control *, 1429 unsigned long nr_to_read, unsigned long lookahead_count); 1430 void page_cache_sync_ra(struct readahead_control *, unsigned long req_count); 1431 void page_cache_async_ra(struct readahead_control *, struct folio *, 1432 unsigned long req_count); 1433 void readahead_expand(struct readahead_control *ractl, 1434 loff_t new_start, size_t new_len); 1435 1436 /** 1437 * page_cache_sync_readahead - generic file readahead 1438 * @mapping: address_space which holds the pagecache and I/O vectors 1439 * @ra: file_ra_state which holds the readahead state 1440 * @file: Used by the filesystem for authentication. 1441 * @index: Index of first page to be read. 1442 * @req_count: Total number of pages being read by the caller. 1443 * 1444 * page_cache_sync_readahead() should be called when a cache miss happened: 1445 * it will submit the read. The readahead logic may decide to piggyback more 1446 * pages onto the read request if access patterns suggest it will improve 1447 * performance. 1448 */ 1449 static inline 1450 void page_cache_sync_readahead(struct address_space *mapping, 1451 struct file_ra_state *ra, struct file *file, pgoff_t index, 1452 unsigned long req_count) 1453 { 1454 DEFINE_READAHEAD(ractl, file, ra, mapping, index); 1455 page_cache_sync_ra(&ractl, req_count); 1456 } 1457 1458 /** 1459 * page_cache_async_readahead - file readahead for marked pages 1460 * @mapping: address_space which holds the pagecache and I/O vectors 1461 * @ra: file_ra_state which holds the readahead state 1462 * @file: Used by the filesystem for authentication. 1463 * @folio: The folio which triggered the readahead call. 1464 * @req_count: Total number of pages being read by the caller. 1465 * 1466 * page_cache_async_readahead() should be called when a page is used which 1467 * is marked as PageReadahead; this is a marker to suggest that the application 1468 * has used up enough of the readahead window that we should start pulling in 1469 * more pages. 1470 */ 1471 static inline 1472 void page_cache_async_readahead(struct address_space *mapping, 1473 struct file_ra_state *ra, struct file *file, 1474 struct folio *folio, unsigned long req_count) 1475 { 1476 DEFINE_READAHEAD(ractl, file, ra, mapping, folio->index); 1477 page_cache_async_ra(&ractl, folio, req_count); 1478 } 1479 1480 /* 1481 * Adjust readahead_control to ensure next folio comes from 1482 * [_index, _index + _nr_pages) afterwards and reset _batch_count. 1483 */ 1484 static inline void __readahead_advance(struct readahead_control *rac) 1485 { 1486 if (rac->_forward) 1487 rac->_index += rac->_batch_count; 1488 1489 rac->_nr_pages -= rac->_batch_count; 1490 rac->_batch_count = 0; 1491 } 1492 1493 static inline struct folio *__readahead_folio(struct readahead_control *ractl) 1494 { 1495 struct folio *folio; 1496 1497 BUG_ON(ractl->_batch_count > ractl->_nr_pages); 1498 __readahead_advance(ractl); 1499 ractl->_forward = true; 1500 1501 if (!ractl->_nr_pages) 1502 return NULL; 1503 1504 folio = xa_load(&ractl->mapping->i_pages, ractl->_index); 1505 VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio); 1506 ractl->_batch_count = folio_nr_pages(folio); 1507 1508 return folio; 1509 } 1510 1511 /** 1512 * readahead_folio - Get the next folio to read. 1513 * @ractl: The current readahead request. 1514 * 1515 * Context: The folio is locked. The caller should unlock the folio once 1516 * all I/O to that folio has completed. 1517 * Return: A pointer to the next folio, or %NULL if we are done. 1518 */ 1519 static inline struct folio *readahead_folio(struct readahead_control *ractl) 1520 { 1521 struct folio *folio = __readahead_folio(ractl); 1522 1523 if (folio) 1524 folio_put(folio); 1525 return folio; 1526 } 1527 1528 /** 1529 * readahead_folio_last - Get the next folio to read, from the tail. 1530 * @ractl: The current readahead request. 1531 * 1532 * Like readahead_folio(), but walks the range back-to-front. The folio is 1533 * returned locked with its refcount dropped; the caller unlocks it once I/O 1534 * completes. Compound folios are returned once, at their head index. 1535 * 1536 * Context: The folio is locked. 1537 * Return: A pointer to the next folio, or %NULL when done. 1538 */ 1539 static inline struct folio *readahead_folio_last(struct readahead_control *ractl) 1540 { 1541 struct folio *folio; 1542 1543 /* Drop the previously returned batch from the remaining range. */ 1544 __readahead_advance(ractl); 1545 ractl->_forward = false; 1546 1547 if (!ractl->_nr_pages) 1548 return NULL; 1549 1550 /* xa_load() follows sibling entries, so a tail index returns the head */ 1551 folio = xa_load(&ractl->mapping->i_pages, 1552 ractl->_index + ractl->_nr_pages - 1); 1553 VM_WARN_ON_ONCE_FOLIO(!folio_test_locked(folio), folio); 1554 1555 ractl->_batch_count = folio_nr_pages(folio); 1556 1557 folio_put(folio); 1558 return folio; 1559 } 1560 1561 static inline unsigned int __readahead_batch(struct readahead_control *rac, 1562 struct page **array, unsigned int array_sz) 1563 { 1564 unsigned int i = 0; 1565 XA_STATE(xas, &rac->mapping->i_pages, 0); 1566 struct folio *folio; 1567 1568 BUG_ON(rac->_batch_count > rac->_nr_pages); 1569 __readahead_advance(rac); 1570 rac->_forward = true; 1571 1572 xas_set(&xas, rac->_index); 1573 rcu_read_lock(); 1574 xas_for_each(&xas, folio, rac->_index + rac->_nr_pages - 1) { 1575 if (xas_retry(&xas, folio)) 1576 continue; 1577 VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio); 1578 array[i++] = folio_page(folio, 0); 1579 rac->_batch_count += folio_nr_pages(folio); 1580 if (i == array_sz) 1581 break; 1582 } 1583 rcu_read_unlock(); 1584 1585 return i; 1586 } 1587 1588 /** 1589 * readahead_pos - The byte offset into the file of this readahead request. 1590 * @rac: The readahead request. 1591 */ 1592 static inline loff_t readahead_pos(const struct readahead_control *rac) 1593 { 1594 return (loff_t)rac->_index * PAGE_SIZE; 1595 } 1596 1597 /** 1598 * readahead_length - The number of bytes in this readahead request. 1599 * @rac: The readahead request. 1600 */ 1601 static inline size_t readahead_length(const struct readahead_control *rac) 1602 { 1603 return rac->_nr_pages * PAGE_SIZE; 1604 } 1605 1606 /** 1607 * readahead_index - The index of the first page in this readahead request. 1608 * @rac: The readahead request. 1609 */ 1610 static inline pgoff_t readahead_index(const struct readahead_control *rac) 1611 { 1612 return rac->_index; 1613 } 1614 1615 /** 1616 * readahead_count - The number of pages in this readahead request. 1617 * @rac: The readahead request. 1618 */ 1619 static inline unsigned int readahead_count(const struct readahead_control *rac) 1620 { 1621 return rac->_nr_pages; 1622 } 1623 1624 /** 1625 * readahead_batch_length - The number of bytes in the current batch. 1626 * @rac: The readahead request. 1627 */ 1628 static inline size_t readahead_batch_length(const struct readahead_control *rac) 1629 { 1630 return rac->_batch_count * PAGE_SIZE; 1631 } 1632 1633 static inline unsigned long dir_pages(const struct inode *inode) 1634 { 1635 return (unsigned long)(inode->i_size + PAGE_SIZE - 1) >> 1636 PAGE_SHIFT; 1637 } 1638 1639 /** 1640 * folio_mkwrite_check_truncate - check if folio was truncated 1641 * @folio: the folio to check 1642 * @inode: the inode to check the folio against 1643 * 1644 * Return: the number of bytes in the folio up to EOF, 1645 * or -EFAULT if the folio was truncated. 1646 */ 1647 static inline ssize_t folio_mkwrite_check_truncate(const struct folio *folio, 1648 const struct inode *inode) 1649 { 1650 loff_t size = i_size_read(inode); 1651 pgoff_t index = size >> PAGE_SHIFT; 1652 size_t offset = offset_in_folio(folio, size); 1653 1654 if (!folio->mapping) 1655 return -EFAULT; 1656 1657 /* folio is wholly inside EOF */ 1658 if (folio_next_index(folio) - 1 < index) 1659 return folio_size(folio); 1660 /* folio is wholly past EOF */ 1661 if (folio->index > index || !offset) 1662 return -EFAULT; 1663 /* folio is partially inside EOF */ 1664 return offset; 1665 } 1666 1667 /** 1668 * i_blocks_per_folio - How many blocks fit in this folio. 1669 * @inode: The inode which contains the blocks. 1670 * @folio: The folio. 1671 * 1672 * If the block size is larger than the size of this folio, return zero. 1673 * 1674 * Context: The caller should hold a refcount on the folio to prevent it 1675 * from being split. 1676 * Return: The number of filesystem blocks covered by this folio. 1677 */ 1678 static inline 1679 unsigned int i_blocks_per_folio(const struct inode *inode, 1680 const struct folio *folio) 1681 { 1682 return folio_size(folio) >> inode->i_blkbits; 1683 } 1684 #endif /* _LINUX_PAGEMAP_H */ 1685