Merge tag 'md-3.7-fixes' of git://neil.brown.name/md
Pull md bugfix from NeilBrown: "Single bugfix for raid1/raid10. Fixes a recently introduced deadlock." * tag 'md-3.7-fixes' of git://neil.brown.name/md: md/raid1{,0}: fix deadlock in bitmap_unplug.
This commit is contained in:
@@ -963,7 +963,7 @@ static void raid1_unplug(struct blk_plug_cb *cb, bool from_schedule)
|
|||||||
struct r1conf *conf = mddev->private;
|
struct r1conf *conf = mddev->private;
|
||||||
struct bio *bio;
|
struct bio *bio;
|
||||||
|
|
||||||
if (from_schedule) {
|
if (from_schedule || current->bio_list) {
|
||||||
spin_lock_irq(&conf->device_lock);
|
spin_lock_irq(&conf->device_lock);
|
||||||
bio_list_merge(&conf->pending_bio_list, &plug->pending);
|
bio_list_merge(&conf->pending_bio_list, &plug->pending);
|
||||||
conf->pending_count += plug->pending_cnt;
|
conf->pending_count += plug->pending_cnt;
|
||||||
|
@@ -1069,7 +1069,7 @@ static void raid10_unplug(struct blk_plug_cb *cb, bool from_schedule)
|
|||||||
struct r10conf *conf = mddev->private;
|
struct r10conf *conf = mddev->private;
|
||||||
struct bio *bio;
|
struct bio *bio;
|
||||||
|
|
||||||
if (from_schedule) {
|
if (from_schedule || current->bio_list) {
|
||||||
spin_lock_irq(&conf->device_lock);
|
spin_lock_irq(&conf->device_lock);
|
||||||
bio_list_merge(&conf->pending_bio_list, &plug->pending);
|
bio_list_merge(&conf->pending_bio_list, &plug->pending);
|
||||||
conf->pending_count += plug->pending_cnt;
|
conf->pending_count += plug->pending_cnt;
|
||||||
|
Reference in New Issue
Block a user