diff options
| author | Yu Kuai <yukuai3@huawei.com> | 2025-05-06 20:49:00 +0800 |
|---|---|---|
| committer | Yu Kuai <yukuai3@huawei.com> | 2025-05-10 16:12:19 +0800 |
| commit | 7168be3c8a6b76ba10a51615a5bdf985dd502226 (patch) | |
| tree | 22d91e532d69a7ae42da1090c2622b4cf4fb3a7a | |
| parent | f2987c5816bda01a8ffdd4eb5dfaaa2b41b67039 (diff) | |
| download | linux-7168be3c8a6b76ba10a51615a5bdf985dd502226.tar.gz linux-7168be3c8a6b76ba10a51615a5bdf985dd502226.zip | |
md: record dm-raid gendisk in mddev
Following patch will use gendisk to check if there are normal IO
completed or inflight, to fix a problem in mdraid that foreground IO
can be starved by background sync IO in later patches.
Link: https://lore.kernel.org/linux-raid/20250506124903.2540268-7-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Xiao Ni <xni@redhat.com>
| -rw-r--r-- | drivers/md/dm-raid.c | 3 | ||||
| -rw-r--r-- | drivers/md/md.h | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c index 6adc55fd90d3..127138c61be5 100644 --- a/drivers/md/dm-raid.c +++ b/drivers/md/dm-raid.c @@ -14,6 +14,7 @@ #include "raid5.h" #include "raid10.h" #include "md-bitmap.h" +#include "dm-core.h" #include <linux/device-mapper.h> @@ -3308,6 +3309,7 @@ size_check: /* Disable/enable discard support on raid set. */ configure_discard_support(rs); + rs->md.dm_gendisk = ti->table->md->disk; mddev_unlock(&rs->md); return 0; @@ -3327,6 +3329,7 @@ static void raid_dtr(struct dm_target *ti) mddev_lock_nointr(&rs->md); md_stop(&rs->md); + rs->md.dm_gendisk = NULL; mddev_unlock(&rs->md); if (work_pending(&rs->md.event_work)) diff --git a/drivers/md/md.h b/drivers/md/md.h index 1cf00a04bcdd..9d55b4630077 100644 --- a/drivers/md/md.h +++ b/drivers/md/md.h @@ -404,7 +404,8 @@ struct mddev { * are happening, so run/ * takeover/stop are not safe */ - struct gendisk *gendisk; + struct gendisk *gendisk; /* mdraid gendisk */ + struct gendisk *dm_gendisk; /* dm-raid gendisk */ struct kobject kobj; int hold_active; |
