Re: [PATCH] md/raid1: protect head_position for read balance

"yu kuai" <[email protected]>
Newsgroups gmane.linux.raid,gmane.linux.kernel
Message-ID <[email protected]>
在 2026/6/19 12:41, Chen Cheng 写道:

> From: Chen Cheng<[email protected]>
>
> KCSAN reports a data race between raid1_end_read_request() and
> raid1_read_request().
>
> The completion path updates conf->mirrors[disk].head_position in
> update_head_pos() without a lock, while the read-balance heuristic reads
> the same field locklessly in is_sequential() and choose_best_rdev().
>
> KCSAN report:
> =========================
>    BUG: KCSAN: data-race in raid1_end_read_request / raid1_read_request
>
>    write to 0xffff8f0306ba7868 of 8 bytes by interrupt on cpu 9:
>      raid1_end_read_request+0xb5/0x440
>      bio_endio+0x3c9/0x3e0
>      blk_update_request+0x257/0x770
>      scsi_end_request+0x4d/0x520
>      scsi_io_completion+0x6f/0x990
>      scsi_finish_command+0x188/0x280
>      scsi_complete+0xac/0x160
>      blk_complete_reqs+0x8e/0xb0
>      blk_done_softirq+0x1d/0x30
>     [...]
>
>    read to 0xffff8f0306ba7868 of 8 bytes by task 667002 on cpu 11:
>      raid1_read_request+0x497/0x1a10
>      raid1_make_request+0xdf/0x1950
>      md_handle_request+0x2c5/0x700
>      md_submit_bio+0x126/0x320
>      __submit_bio+0x2ec/0x3a0
>      submit_bio_noacct_nocheck+0x572/0x890
>     [...]
>
>    value changed: 0x0000000000000078 -> 0x00000000005fe448
>
> Signed-off-by: Chen Cheng<[email protected]>
> ---
>   drivers/md/raid1.c | 9 +++++----
>   1 file changed, 5 insertions(+), 4 deletions(-)
Applied to md-7.2

-- 
Thanks,
Kuai
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.