filemap: Update the folio_mark_dirty documentation
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 28 Apr 2022 18:21:02 +0000 (14:21 -0400)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Sun, 8 May 2022 18:45:56 +0000 (14:45 -0400)
The previous comment was not terribly helpful.  Be a bit more explicit
about the necessary locking environment.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
mm/page-writeback.c

index 7e2da284e427188aafefe15b0d6b0f0c6ec80544..fa1117db4610f2ba44a7319c4bf674b523f77821 100644 (file)
@@ -2602,10 +2602,12 @@ EXPORT_SYMBOL(folio_redirty_for_writepage);
  * folio_mark_dirty - Mark a folio as being modified.
  * @folio: The folio.
  *
- * For folios with a mapping this should be done with the folio lock held
- * for the benefit of asynchronous memory errors who prefer a consistent
- * dirty state. This rule can be broken in some special cases,
- * but should be better not to.
+ * The folio may not be truncated while this function is running.
+ * Holding the folio lock is sufficient to prevent truncation, but some
+ * callers cannot acquire a sleeping lock.  These callers instead hold
+ * the page table lock for a page table which contains at least one page
+ * in this folio.  Truncation will block on the page table lock as it
+ * unmaps pages before removing the folio from its mapping.
  *
  * Return: True if the folio was newly dirtied, false if it was already dirty.
  */