[PATCH -next v2 0/7] md: initialize 'active_io' while allocating mddev

Yu Kuai posted 7 patches 2 years, 5 months ago
drivers/md/dm-raid.c   |   7 ++-
drivers/md/md-bitmap.c |  47 +++++++++----------
drivers/md/md.c        | 100 ++++++++++++++++++++---------------------
drivers/md/md.h        |   4 +-
drivers/md/raid1.c     |   3 +-
drivers/md/raid10.c    |   3 --
drivers/md/raid5.c     |   3 --
7 files changed, 78 insertions(+), 89 deletions(-)
[PATCH -next v2 0/7] md: initialize 'active_io' while allocating mddev
Posted by Yu Kuai 2 years, 5 months ago
From: Yu Kuai <yukuai3@huawei.com>

Changes in v2:
 - rebase for md-next;
 - update commit message for patch 3;

This is the 4th patchset to do some preparatory work to synchronize
io with array reconfiguration.

1) The first patchset refactor 'active_io', make sure that mddev_suspend()
will wait for io to be done. [1]

2) The second patchset remove 'quiesce' callback from mddev_suspend(), so
that mddev_suspend() doesn't rely on 'quiesce' callback is registered,
and can be used for all personalites; [2]

3) Make array reconfiguration independent from daemon thread,
and synchronize it with io will be much easier because io may rely on
daemon thread to be done.

4) This patchset move initialization of 'active_io' from md_run() to
md_alloc(), so that mddev_suspend() won't rely on holding 'reconfig_mutex'
to check if 'mddev->pers' is set, and it can be called at any time after
mddev is allocated.(Done by patch 1, and other patches are cleanup)

Yu Kuai (7):
  md: initialize 'active_io' while allocating mddev
  md: initialize 'writes_pending' while allocating mddev
  md: don't rely on 'mddev->pers' to be set in mddev_suspend()
  md-bitmap: remove the checking of 'pers->quiesce' from
    location_store()
  md-bitmap: suspend array earlier in location_store()
  md: don't check 'mddev->pers' from suspend_hi_store()
  md: don't check 'mddev->pers' and 'pers->quiesce' from
    suspend_lo_store()

[1] https://lore.kernel.org/all/20230621165110.1498313-1-yukuai1@huaweicloud.com/
[2] https://lore.kernel.org/all/20230628012931.88911-2-yukuai1@huaweicloud.com/

Yu Kuai (7):
  md: initialize 'active_io' while allocating mddev
  md: initialize 'writes_pending' while allocating mddev
  md: don't rely on 'mddev->pers' to be set in mddev_suspend()
  md-bitmap: remove the checking of 'pers->quiesce' from
    location_store()
  md-bitmap: suspend array earlier in location_store()
  md: don't check 'mddev->pers' from suspend_hi_store()
  md: don't check 'mddev->pers' and 'pers->quiesce' from
    suspend_lo_store()

 drivers/md/dm-raid.c   |   7 ++-
 drivers/md/md-bitmap.c |  47 +++++++++----------
 drivers/md/md.c        | 100 ++++++++++++++++++++---------------------
 drivers/md/md.h        |   4 +-
 drivers/md/raid1.c     |   3 +-
 drivers/md/raid10.c    |   3 --
 drivers/md/raid5.c     |   3 --
 7 files changed, 78 insertions(+), 89 deletions(-)

-- 
2.39.2
Re: [PATCH -next v2 0/7] md: initialize 'active_io' while allocating mddev
Posted by Song Liu 2 years, 5 months ago
On Thu, Aug 24, 2023 at 8:14 PM Yu Kuai <yukuai1@huaweicloud.com> wrote:
>
> From: Yu Kuai <yukuai3@huawei.com>
>
> Changes in v2:
>  - rebase for md-next;
>  - update commit message for patch 3;

Applied v2 to md-next. But this set won't go into 6.6.

Thanks,
Song

>
> This is the 4th patchset to do some preparatory work to synchronize
> io with array reconfiguration.
>
> 1) The first patchset refactor 'active_io', make sure that mddev_suspend()
> will wait for io to be done. [1]
>
> 2) The second patchset remove 'quiesce' callback from mddev_suspend(), so
> that mddev_suspend() doesn't rely on 'quiesce' callback is registered,
> and can be used for all personalites; [2]
>
> 3) Make array reconfiguration independent from daemon thread,
> and synchronize it with io will be much easier because io may rely on
> daemon thread to be done.
>
> 4) This patchset move initialization of 'active_io' from md_run() to
> md_alloc(), so that mddev_suspend() won't rely on holding 'reconfig_mutex'
> to check if 'mddev->pers' is set, and it can be called at any time after
> mddev is allocated.(Done by patch 1, and other patches are cleanup)
>
> Yu Kuai (7):
>   md: initialize 'active_io' while allocating mddev
>   md: initialize 'writes_pending' while allocating mddev
>   md: don't rely on 'mddev->pers' to be set in mddev_suspend()
>   md-bitmap: remove the checking of 'pers->quiesce' from
>     location_store()
>   md-bitmap: suspend array earlier in location_store()
>   md: don't check 'mddev->pers' from suspend_hi_store()
>   md: don't check 'mddev->pers' and 'pers->quiesce' from
>     suspend_lo_store()
>
> [1] https://lore.kernel.org/all/20230621165110.1498313-1-yukuai1@huaweicloud.com/
> [2] https://lore.kernel.org/all/20230628012931.88911-2-yukuai1@huaweicloud.com/
>
> Yu Kuai (7):
>   md: initialize 'active_io' while allocating mddev
>   md: initialize 'writes_pending' while allocating mddev
>   md: don't rely on 'mddev->pers' to be set in mddev_suspend()
>   md-bitmap: remove the checking of 'pers->quiesce' from
>     location_store()
>   md-bitmap: suspend array earlier in location_store()
>   md: don't check 'mddev->pers' from suspend_hi_store()
>   md: don't check 'mddev->pers' and 'pers->quiesce' from
>     suspend_lo_store()
>
>  drivers/md/dm-raid.c   |   7 ++-
>  drivers/md/md-bitmap.c |  47 +++++++++----------
>  drivers/md/md.c        | 100 ++++++++++++++++++++---------------------
>  drivers/md/md.h        |   4 +-
>  drivers/md/raid1.c     |   3 +-
>  drivers/md/raid10.c    |   3 --
>  drivers/md/raid5.c     |   3 --
>  7 files changed, 78 insertions(+), 89 deletions(-)
>
> --
> 2.39.2
>