@@ -2539,6 +2539,7 @@ struct kvec;
struct page *get_dump_page(unsigned long addr);
bool folio_mark_dirty(struct folio *folio);
+bool folio_mark_dirty_lock(struct folio *folio);
bool set_page_dirty(struct page *page);
int set_page_dirty_lock(struct page *page);
@@ -2913,6 +2913,18 @@ bool folio_mark_dirty(struct folio *folio)
}
EXPORT_SYMBOL(folio_mark_dirty);
+bool folio_mark_dirty_lock(struct folio *folio)
+{
+ bool ret;
+
+ folio_lock(folio);
+ ret = folio_mark_dirty(folio);
+ folio_unlock(folio);
+
+ return ret;
+}
+EXPORT_SYMBOL(folio_mark_dirty_lock);
+
/*
* set_page_dirty() is racy if the caller has no reference against
* page->mapping->host, and if the page is unlocked. This is because another
Add a new convenience helper folio_mark_dirty_lock() that grabs the folio lock before calling folio_mark_dirty(). Signed-off-by: Joanne Koong <joannelkoong@gmail.com> --- include/linux/mm.h | 1 + mm/page-writeback.c | 12 ++++++++++++ 2 files changed, 13 insertions(+)