[PATCH] ocfs2: don't wait on recovery when locking journal
authorMark Fasheh <mark.fasheh@oracle.com>
Wed, 18 Jan 2006 18:31:47 +0000 (10:31 -0800)
committerMark Fasheh <mark.fasheh@oracle.com>
Fri, 3 Feb 2006 22:05:14 +0000 (14:05 -0800)
The mount path had incorrectly asked the locking code to wait for recovery
completion, which deadlocks things because recovery waits for mount to
complete first.

Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
fs/ocfs2/journal.c

index b71b338..fa0bcac 100644 (file)
@@ -560,7 +560,11 @@ int ocfs2_journal_init(struct ocfs2_journal *journal, int *dirty)
        SET_INODE_JOURNAL(inode);
        OCFS2_I(inode)->ip_open_count++;
 
-       status = ocfs2_meta_lock(inode, NULL, &bh, 1);
+       /* Skip recovery waits here - journal inode metadata never
+        * changes in a live cluster so it can be considered an
+        * exception to the rule. */
+       status = ocfs2_meta_lock_full(inode, NULL, &bh, 1,
+                                     OCFS2_META_LOCK_RECOVERY);
        if (status < 0) {
                if (status != -ERESTARTSYS)
                        mlog(ML_ERROR, "Could not get lock on journal!\n");