jbd2: move lockdep tracking to journal_s
[linux-2.6-block.git] / include / linux / jbd2.h
index efb232c5f66867851053da799c83428e576ebb57..3d210cbe4e1b905f99d6780659ec88cda5d927c1 100644 (file)
@@ -491,10 +491,6 @@ struct jbd2_journal_handle
 
        unsigned long           h_start_jiffies;
        unsigned int            h_requested_credits;
-
-#ifdef CONFIG_DEBUG_LOCK_ALLOC
-       struct lockdep_map      h_lockdep_map;
-#endif
 };
 
 
@@ -793,6 +789,7 @@ jbd2_time_diff(unsigned long start, unsigned long end)
  * @j_proc_entry: procfs entry for the jbd statistics directory
  * @j_stats: Overall statistics
  * @j_private: An opaque pointer to fs-private information.
+ * @j_trans_commit_map: Lockdep entity to track transaction commit dependencies
  */
 
 struct journal_s
@@ -1035,6 +1032,18 @@ struct journal_s
 
        /* Precomputed journal UUID checksum for seeding other checksums */
        __u32 j_csum_seed;
+
+#ifdef CONFIG_DEBUG_LOCK_ALLOC
+       /*
+        * Lockdep entity to track transaction commit dependencies. Handles
+        * hold this "lock" for read, when we wait for commit, we acquire the
+        * "lock" for writing. This matches the properties of jbd2 journalling
+        * where the running transaction has to wait for all handles to be
+        * dropped to commit that transaction and also acquiring a handle may
+        * require transaction commit to finish.
+        */
+       struct lockdep_map      j_trans_commit_map;
+#endif
 };
 
 /* journal feature predicate functions */