mddev->pers = pers[pnum];
spin_unlock(&pers_lock);
- blk_queue_make_request(mddev->queue, mddev->pers->make_request);
- mddev->queue->queuedata = mddev;
-
err = mddev->pers->run(mddev);
if (err) {
printk(KERN_ERR "md: pers->run() failed ...\n");
set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
md_wakeup_thread(mddev->thread);
set_capacity(disk, mddev->array_size<<1);
+
+ blk_queue_make_request(mddev->queue, mddev->pers->make_request);
+ mddev->queue->queuedata = mddev;
+
return 0;
}
} else {
if (mddev->ro)
set_disk_ro(disk, 0);
- if (mddev->pers->stop(mddev)) {
- err = -EBUSY;
- if (mddev->ro)
- set_disk_ro(disk, 1);
- goto out;
- }
+ blk_queue_make_request(mddev->queue, md_fail_request);
+ mddev->pers->stop(mddev);
module_put(mddev->pers->owner);
mddev->pers = NULL;
if (mddev->ro)