• Yu Kuai's avatar
    dm-raid: delay flushing event_work() after reconfig_mutex is released · db29d79b
    Yu Kuai authored
    After commit db5e653d ("md: delay choosing sync action to
    md_start_sync()"), md_start_sync() will hold 'reconfig_mutex', however,
    in order to make sure event_work is done, __md_stop() will flush
    workqueue with reconfig_mutex grabbed, hence if sync_work is still
    pending, deadlock will be triggered.
    
    Fortunately, former pacthes to fix stopping sync_thread already make sure
    all sync_work is done already, hence such deadlock is not possible
    anymore. However, in order not to cause confusions for people by this
    implicit dependency, delay flushing event_work to dm-raid where
    'reconfig_mutex' is not held, and add some comments to emphasize that
    the workqueue can't be flushed with 'reconfig_mutex'.
    
    Fixes: db5e653d ("md: delay choosing sync action to md_start_sync()")
    Depends-on: f52f5c71 ("md: fix stopping sync thread")
    Signed-off-by: default avatarYu Kuai <yukuai3@huawei.com>
    Acked-by: default avatarXiao Ni <xni@redhat.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
    db29d79b
dm-raid.c 118 KB