|
@@ -2633,14 +2633,16 @@ int r5l_init_log(struct r5conf *conf, struct md_rdev *rdev)
|
|
|
spin_lock_init(&log->stripe_in_journal_lock);
|
|
|
atomic_set(&log->stripe_in_journal_count, 0);
|
|
|
|
|
|
+ rcu_assign_pointer(conf->log, log);
|
|
|
+
|
|
|
if (r5l_load_log(log))
|
|
|
goto error;
|
|
|
|
|
|
- rcu_assign_pointer(conf->log, log);
|
|
|
set_bit(MD_HAS_JOURNAL, &conf->mddev->flags);
|
|
|
return 0;
|
|
|
|
|
|
error:
|
|
|
+ rcu_assign_pointer(conf->log, NULL);
|
|
|
md_unregister_thread(&log->reclaim_thread);
|
|
|
reclaim_thread:
|
|
|
mempool_destroy(log->meta_pool);
|