Guillaume Morin guillaume@morinfr.org 于2022年1月26日周三 16:12写道:
On 26 Jan 11:09, Jack Wang wrote:
if (bio->bi_end_io != md_end_io) {
struct md_io *md_io;
md_io = mempool_alloc(&mddev->md_io_pool, GFP_NOIO);
md_io->mddev = mddev;
md_io->orig_bi_end_io = bio->bi_end_io;
md_io->orig_bi_private = bio->bi_private;
bio->bi_end_io = md_end_io;
bio->bi_private = md_io;
md_io->start_time = part_start_io_acct(mddev->gendisk,
&md_io->part, bio);
}
/*
* save the sectors now since our bio can
* go away inside make_request
*/
sectors = bio_sectors(bio);
This code snip is not inside the original patch, and it's not in latest upstream too.
/* bio could be mergeable after passing to underlayer */ bio->bi_opf &= ~REQ_NOMERGE; md_handle_request(mddev, bio);
part_stat_lock();
part_stat_inc(&mddev->gendisk->part0, ios[sgrp]);
part_stat_add(&mddev->gendisk->part0, sectors[sgrp], sectors);
part_stat_unlock();
same here, this code snip is not inside the original patch, and it's not in latest upstream too.
Both snippets came from the code before 41d2d848e5c0 that the patch is being reverted here. As I explained in my original message, upstream is different because of 99dfc43ecbf6 which is not in 5.10.
oh, I missed it, you are right.
I think would be good keep it as the upstream version.
If you don't include these lines, isn't this worse as it's not calling either part_start_io_acct or bio_start_io_acct (in 99dfc43ecbf6)?
Your patch is correct. Sorry for the noise.
-- Guillaume Morin guillaume@morinfr.org