aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Fasheh <mark.fasheh@oracle.com>2006-01-18 10:31:47 -0800
committerMark Fasheh <mark.fasheh@oracle.com>2006-02-03 14:05:14 -0800
commit6eff5790d57a5c9c01489c95946881808a4b2a2c (patch)
tree2b96da58c99b27945e8c9bffb0ae48a97c4231be
parent[PATCH] BUG_ON() Conversion in fs/configfs/ (diff)
downloadlinux-dev-6eff5790d57a5c9c01489c95946881808a4b2a2c.tar.xz
linux-dev-6eff5790d57a5c9c01489c95946881808a4b2a2c.zip
[PATCH] ocfs2: don't wait on recovery when locking journal
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>
-rw-r--r--fs/ocfs2/journal.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c
index b71b3385fdbd..fa0bcac5ceae 100644
--- a/fs/ocfs2/journal.c
+++ b/fs/ocfs2/journal.c
@@ -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");