From 87b180c6a09a6fb19adcbe31bde3a297e1095559 Mon Sep 17 00:00:00 2001 From: Frederic Weisbecker Date: Tue, 29 Dec 2009 21:51:15 +0100 Subject: [PATCH] --- yaml --- r: 178719 b: refs/heads/master c: 98ea3f50bcc97689cc0e1fa3b6733f03aeb8fef4 h: refs/heads/master i: 178717: c3b636df64a7bdcadde976fe5eede8d796188e4e 178715: 372a35b52b02410ec342ee08c45ebd714951792a 178711: 1ce32493642fa2245471bc4ae5d04cc167aa32bf 178703: a4a17acfc5eb7b50737ccc1fd3666210c0629abc 178687: 59a534c09e6bfc091b6e731a40c698964ea8e259 v: v3 --- [refs] | 2 +- trunk/fs/reiserfs/journal.c | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index c38a832ce260..57833f3b20f7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 47376ceba54600cec4dd9e7c4fe8b98e4269633a +refs/heads/master: 98ea3f50bcc97689cc0e1fa3b6733f03aeb8fef4 diff --git a/trunk/fs/reiserfs/journal.c b/trunk/fs/reiserfs/journal.c index 2f8a7e7b8dab..a059879667b1 100644 --- a/trunk/fs/reiserfs/journal.c +++ b/trunk/fs/reiserfs/journal.c @@ -2758,11 +2758,18 @@ int journal_init(struct super_block *sb, const char *j_dev_name, struct reiserfs_journal *journal; struct reiserfs_journal_list *jl; char b[BDEVNAME_SIZE]; + int ret; + /* + * Unlock here to avoid various RECLAIM-FS-ON <-> IN-RECLAIM-FS + * dependency inversion warnings. + */ + reiserfs_write_unlock(sb); journal = SB_JOURNAL(sb) = vmalloc(sizeof(struct reiserfs_journal)); if (!journal) { reiserfs_warning(sb, "journal-1256", "unable to get memory for journal structure"); + reiserfs_write_lock(sb); return 1; } memset(journal, 0, sizeof(struct reiserfs_journal)); @@ -2771,10 +2778,12 @@ int journal_init(struct super_block *sb, const char *j_dev_name, INIT_LIST_HEAD(&journal->j_working_list); INIT_LIST_HEAD(&journal->j_journal_list); journal->j_persistent_trans = 0; - if (reiserfs_allocate_list_bitmaps(sb, - journal->j_list_bitmap, - reiserfs_bmap_count(sb))) + ret = reiserfs_allocate_list_bitmaps(sb, journal->j_list_bitmap, + reiserfs_bmap_count(sb)); + reiserfs_write_lock(sb); + if (ret) goto free_and_return; + allocate_bitmap_nodes(sb); /* reserved for journal area support */