• J
    dm: remove unnecessary current->bio_list check when submitting split bio · 985eabdc
    Jeffle Xu 提交于
    The depth-first splitting is introduced in commit 18a25da8 ("dm:
    ensure bio submission follows a depth-first tree walk"), which is used
    to fix the potential deadlock in case of the misordering handling of
    bios caused by bio_list. There're two paths submitting split bios,
    dm_wq_work() from worker thread and submit_bio() from application. Back
    upon that time, dm_wq_work() thread calls __split_and_process_bio()
    directly and thus will not trigger this issue since bio_list doesn't
    exist here. So this issue will only be triggered from application
    calling submit_bio(), and the fix has to check if current->bio_list is
    non-NULL to distinguish this case.
    
    However since commit 0c2915b8 ("dm: fix missing imposition of
    queue_limits from dm_wq_work() thread"), dm_wq_work() thread calls
    submit_bio_noacct() and thus also uses bio_list. Since then all entries
    into __split_and_process_bio() are under protection of bio_list, and
    thus the checking of current->bio_list when determinning if the
    depth-first principle should be used, seems kind of nonsense. After all
    the checking always succeeds now.
    
    Fixes: 0c2915b8 ("dm: fix missing imposition of queue_limits from dm_wq_work() thread")
    Signed-off-by: NJeffle Xu <jefflexu@linux.alibaba.com>
    Signed-off-by: NMike Snitzer <snitzer@redhat.com>
    985eabdc
dm.c 71.1 KB