Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso...
[linux-2.6-microblaze.git] / fs / ext4 / super.c
index 802bd26..ad34a37 100644 (file)
@@ -59,7 +59,7 @@
 #include <trace/events/ext4.h>
 
 static struct ext4_lazy_init *ext4_li_info;
-static struct mutex ext4_li_mtx;
+static DEFINE_MUTEX(ext4_li_mtx);
 static struct ratelimit_state ext4_mount_msg_ratelimit;
 
 static int ext4_load_journal(struct super_block *, struct ext4_super_block *,
@@ -4875,7 +4875,6 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
 
        set_task_ioprio(sbi->s_journal->j_task, journal_ioprio);
 
-       sbi->s_journal->j_commit_callback = ext4_journal_commit_callback;
        sbi->s_journal->j_submit_inode_data_buffers =
                ext4_journal_submit_inode_data_buffers;
        sbi->s_journal->j_finish_inode_data_buffers =
@@ -4987,6 +4986,14 @@ no_journal:
                goto failed_mount5;
        }
 
+       /*
+        * We can only set up the journal commit callback once
+        * mballoc is initialized
+        */
+       if (sbi->s_journal)
+               sbi->s_journal->j_commit_callback =
+                       ext4_journal_commit_callback;
+
        block = ext4_count_free_clusters(sb);
        ext4_free_blocks_count_set(sbi->s_es, 
                                   EXT4_C2B(sbi, block));
@@ -6667,7 +6674,6 @@ static int __init ext4_init_fs(void)
 
        ratelimit_state_init(&ext4_mount_msg_ratelimit, 30 * HZ, 64);
        ext4_li_info = NULL;
-       mutex_init(&ext4_li_mtx);
 
        /* Build-time check for flags consistency */
        ext4_check_flag_values();