diff options
author | Mark Fasheh <mark.fasheh@oracle.com> | 2006-01-18 10:31:47 -0800 |
---|---|---|
committer | Mark Fasheh <mark.fasheh@oracle.com> | 2006-02-03 14:05:14 -0800 |
commit | 6eff5790d57a5c9c01489c95946881808a4b2a2c (patch) | |
tree | 2b96da58c99b27945e8c9bffb0ae48a97c4231be /fs | |
parent | 1a1974fd4533afdb73873cdacb942d9a79ff7c9b (diff) | |
download | kernel_samsung_smdk4412-6eff5790d57a5c9c01489c95946881808a4b2a2c.zip kernel_samsung_smdk4412-6eff5790d57a5c9c01489c95946881808a4b2a2c.tar.gz kernel_samsung_smdk4412-6eff5790d57a5c9c01489c95946881808a4b2a2c.tar.bz2 |
[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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ocfs2/journal.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index b71b338..fa0bcac 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"); |