|
@@ -6329,8 +6329,11 @@ static void raid5_free_percpu(struct r5conf *conf)
|
|
|
|
|
|
static void free_conf(struct r5conf *conf)
|
|
static void free_conf(struct r5conf *conf)
|
|
{
|
|
{
|
|
|
|
+ if (conf->log)
|
|
|
|
+ r5l_exit_log(conf->log);
|
|
if (conf->shrinker.seeks)
|
|
if (conf->shrinker.seeks)
|
|
unregister_shrinker(&conf->shrinker);
|
|
unregister_shrinker(&conf->shrinker);
|
|
|
|
+
|
|
free_thread_groups(conf);
|
|
free_thread_groups(conf);
|
|
shrink_stripes(conf);
|
|
shrink_stripes(conf);
|
|
raid5_free_percpu(conf);
|
|
raid5_free_percpu(conf);
|
|
@@ -6996,6 +6999,14 @@ static int run(struct mddev *mddev)
|
|
mddev->queue);
|
|
mddev->queue);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (journal_dev) {
|
|
|
|
+ char b[BDEVNAME_SIZE];
|
|
|
|
+
|
|
|
|
+ printk(KERN_INFO"md/raid:%s: using device %s as journal\n",
|
|
|
|
+ mdname(mddev), bdevname(journal_dev->bdev, b));
|
|
|
|
+ r5l_init_log(conf, journal_dev);
|
|
|
|
+ }
|
|
|
|
+
|
|
return 0;
|
|
return 0;
|
|
abort:
|
|
abort:
|
|
md_unregister_thread(&mddev->thread);
|
|
md_unregister_thread(&mddev->thread);
|