[PATCH -next v2 0/7] md: make rdev addition and removal independent from daemon thread

From: Yu Kuai
Date: Mon Aug 14 2023 - 23:17:41 EST


From: Yu Kuai <yukuai3@xxxxxxxxxx>

Changes in v2:
- remove patch 1 from v1 and some related patches, those patches will
be sent later when rcu protection for rdev is removed.
- add patch 2.

This is the third 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) This patchset 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.

More patchset on the way!

Yu Kuai (7):
md: use separate work_struct for md_start_sync()
md: factor out a helper to choose sync direction from
md_check_recovery()
md: delay choosing sync direction to md_start_sync()
md: factor out a helper rdev_removeable() from remove_and_add_spares()
md: factor out a helper rdev_is_spare() from remove_and_add_spares()
md: factor out a helper rdev_addable() from remove_and_add_spares()
md: delay remove_and_add_spares() for read only array to
md_start_sync()

drivers/md/md.c | 257 +++++++++++++++++++++++++++++-------------------
drivers/md/md.h | 5 +-
2 files changed, 160 insertions(+), 102 deletions(-)

--
2.39.2