[PATCH] ext2fs: Add documentation to journal_drain_deferred_blocks

Milos Nikic <[email protected]>
Newsgroups gmane.os.hurd.bugs
Message-ID <[email protected]>
---
 ext2fs/journal.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/ext2fs/journal.c b/ext2fs/journal.c
index e456eafc2..c50c742f8 100644
--- a/ext2fs/journal.c
+++ b/ext2fs/journal.c
@@ -1127,7 +1127,20 @@ journal_stop_transaction_locked (journal_t *journal,
     }
 }
 
-/* Must strictly be called OUTSIDE the journal lock */
+/**
+ * Drains the thread-local deferred block queue into a new transaction.
+ * When a thread is forced to execute a synchronous checkpoint (which locks the
+ * global libdiskfs node-cache), any memory mutations triggered by the VFS flush
+ * are intercepted and stored in a thread-local queue to prevent a recursive
+ * deadlock against the journal lock.
+ * This function "sweeps" those intercepted blocks by explicitly starting a
+ * new transaction. The act of starting the transaction automatically injects
+ * the deferred blocks into the new transaction's map (via the internal
+ * diskfs_journal_start_transaction_locked logic). We then immediately stop
+ * the transaction to allow the normal journal commit pipeline to process them.
+ *
+ * Must strictly be called OUTSIDE the journal lock.
+ */
 static void
 journal_drain_deferred_blocks (void)
 {
@@ -1571,7 +1584,7 @@ diskfs_journal_start_transaction_locked (journal_t *journal)
   /* THE SWEEP: Safely inject deferred blocks into our brand new transaction */
   if (deferred_count > 0)
     {
-      /* Copy to local var and reset count immediately to prevent any 
+      /* Copy to local var and reset count immediately to prevent any
          impossible recursion loops during dirty_block */
       int count = deferred_count;
       deferred_count = 0;
-- 
2.54.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.