From: Matthew Wilcox (Oracle) <willy@infradead.org>
Date: Sun, 20 Dec 2020 11:44:51 +0000 (-0500)
Subject: mm/writeback: Improve __folio_mark_dirty() comment
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=a229a4f00d1eab3f665b92dc9f8dbceca9b8f49c;p=linux.git

mm/writeback: Improve __folio_mark_dirty() comment

Add some notes about how this function needs to be called.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: William Kucharski <william.kucharski@oracle.com>
---

diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index a613f8ef6a020..91d163f8d36b2 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -2496,7 +2496,11 @@ void folio_account_cleaned(struct folio *folio, struct address_space *mapping,
  * If warn is true, then emit a warning if the folio is not uptodate and has
  * not been truncated.
  *
- * The caller must hold lock_page_memcg().
+ * The caller must hold lock_page_memcg().  Most callers have the folio
+ * locked.  A few have the folio blocked from truncation through other
+ * means (eg zap_page_range() has it mapped and is holding the page table
+ * lock).  This can also be called from mark_buffer_dirty(), which I
+ * cannot prove is always protected against truncate.
  */
 void __folio_mark_dirty(struct folio *folio, struct address_space *mapping,
 			     int warn)