Re: [PATCH -next 1/2] md: don't quiesce in mddev_suspend()

From: Song Liu
Date: Fri Jul 07 2023 - 05:07:03 EST


On Wed, Jun 28, 2023 at 2:29 PM Yu Kuai <yukuai1@xxxxxxxxxxxxxxx> wrote:
>
> Hi,
>
> 在 2023/06/28 9:29, Yu Kuai 写道:
> > From: Yu Kuai <yukuai3@xxxxxxxxxx>
> >
> > Some levels doesn't implement "pers->quiesce", for example
> > raid0_quiesce() is empty, and now that all levels will drop 'active_io'
> > until io is done, wait for 'active_io' to be 0 is enough to make sure all
> > normal io is done, and percpu_ref_kill() for 'active_io' will make sure
> > no new normal io can be dispatched. There is no need to call
> > "pers->quiesce" anymore from mddev_suspend().
>
> Just found that this patch actually prevent null_ptr_deref in some cases
> that "pers->quiesce" is NULl for some personalities, and caller of
> mddev_suspend() doesn't check this. For example, suspend_lo_store()
> checks "pers->quiesce" is not NULL before calling mddev_suspend(), while
> suspend_hi_store() doesn't.

Let's refactor the code so that suspend_lo_store() and suspend_hi_store()
share code for this logic.

Thanks,
Song