folio-compat.c 2.2 KB

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