folio-compat.c 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Compatibility functions which bloat the callers too much to make inline.
  4. * All of the callers of these functions should be converted to use folios
  5. * eventually.
  6. */
  7. #include <linux/migrate.h>
  8. #include <linux/pagemap.h>
  9. #include <linux/rmap.h>
  10. #include <linux/swap.h>
  11. #include "internal.h"
  12. void unlock_page(struct page *page)
  13. {
  14. return folio_unlock(page_folio(page));
  15. }
  16. EXPORT_SYMBOL(unlock_page);
  17. void end_page_writeback(struct page *page)
  18. {
  19. return folio_end_writeback(page_folio(page));
  20. }
  21. EXPORT_SYMBOL(end_page_writeback);
  22. void wait_on_page_writeback(struct page *page)
  23. {
  24. return folio_wait_writeback(page_folio(page));
  25. }
  26. EXPORT_SYMBOL_GPL(wait_on_page_writeback);
  27. void mark_page_accessed(struct page *page)
  28. {
  29. folio_mark_accessed(page_folio(page));
  30. }
  31. EXPORT_SYMBOL(mark_page_accessed);
  32. void set_page_writeback(struct page *page)
  33. {
  34. folio_start_writeback(page_folio(page));
  35. }
  36. EXPORT_SYMBOL(set_page_writeback);
  37. bool set_page_dirty(struct page *page)
  38. {
  39. return folio_mark_dirty(page_folio(page));
  40. }
  41. EXPORT_SYMBOL(set_page_dirty);
  42. int set_page_dirty_lock(struct page *page)
  43. {
  44. return folio_mark_dirty_lock(page_folio(page));
  45. }
  46. EXPORT_SYMBOL(set_page_dirty_lock);
  47. bool clear_page_dirty_for_io(struct page *page)
  48. {
  49. return folio_clear_dirty_for_io(page_folio(page));
  50. }
  51. EXPORT_SYMBOL(clear_page_dirty_for_io);
  52. bool redirty_page_for_writepage(struct writeback_control *wbc,
  53. struct page *page)
  54. {
  55. return folio_redirty_for_writepage(wbc, page_folio(page));
  56. }
  57. EXPORT_SYMBOL(redirty_page_for_writepage);
  58. int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
  59. pgoff_t index, gfp_t gfp)
  60. {
  61. return filemap_add_folio(mapping, page_folio(page), index, gfp);
  62. }
  63. EXPORT_SYMBOL(add_to_page_cache_lru);
  64. noinline
  65. struct page *pagecache_get_page(struct address_space *mapping, pgoff_t index,
  66. fgf_t fgp_flags, gfp_t gfp)
  67. {
  68. struct folio *folio;
  69. folio = __filemap_get_folio(mapping, index, fgp_flags, gfp);
  70. if (IS_ERR(folio))
  71. return NULL;
  72. return folio_file_page(folio, index);
  73. }
  74. EXPORT_SYMBOL(pagecache_get_page);