Skip to content

Commit cb07496

Browse files
shligitgregkh
authored andcommitted
md/raid10: submit bio directly to replacement disk
[ Upstream commit 6d399783e9d4e9bd44931501948059d24ad96ff8 ] Commit 57c67df(md/raid10: submit IO from originating thread instead of md thread) submits bio directly for normal disks but not for replacement disks. There is no point we shouldn't do this for replacement disks. Cc: NeilBrown <neilb@suse.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: Sasha Levin <alexander.levin@verizon.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 13099ee commit cb07496

1 file changed

Lines changed: 16 additions & 3 deletions

File tree

drivers/md/raid10.c

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1414,11 +1414,24 @@ static void __make_request(struct mddev *mddev, struct bio *bio)
14141414
mbio->bi_private = r10_bio;
14151415

14161416
atomic_inc(&r10_bio->remaining);
1417+
1418+
cb = blk_check_plugged(raid10_unplug, mddev,
1419+
sizeof(*plug));
1420+
if (cb)
1421+
plug = container_of(cb, struct raid10_plug_cb,
1422+
cb);
1423+
else
1424+
plug = NULL;
14171425
spin_lock_irqsave(&conf->device_lock, flags);
1418-
bio_list_add(&conf->pending_bio_list, mbio);
1419-
conf->pending_count++;
1426+
if (plug) {
1427+
bio_list_add(&plug->pending, mbio);
1428+
plug->pending_cnt++;
1429+
} else {
1430+
bio_list_add(&conf->pending_bio_list, mbio);
1431+
conf->pending_count++;
1432+
}
14201433
spin_unlock_irqrestore(&conf->device_lock, flags);
1421-
if (!mddev_check_plugged(mddev))
1434+
if (!plug)
14221435
md_wakeup_thread(mddev->thread);
14231436
}
14241437
}

0 commit comments

Comments
 (0)