Skip to content
  • Ming Lei's avatar
    dm rq: do not update rq partially in each ending bio · dc6364b5
    Ming Lei authored
    We don't need to update the original dm request partially when ending
    each cloned bio: just update original dm request once when the whole
    cloned request is finished.  This still allows full support for partial
    completion because a new 'completed' counter accounts for incremental
    progress as the clone bios complete.
    
    Partial request update can be a bit expensive, so we should try to avoid
    it, especially because it is run in softirq context.
    
    Avoiding all the partial request updates fixes both hard lockup and
    soft lockups that were easily reproduced while running Laurence's
    test[1] on IB/SRP.
    
    BTW, after d4acf365 ("block: Make blk_mq_delay_kick_requeue_list()
    rerun the queue at a quiet time"), we need to make the test more
    aggressive for reproducing the lockup:
    
    	1) run hammer_write.sh 32 or 64 concurrently.
    	2) write 8M each time
    
    [1] https://marc.info/?l=linux-block&m=150220185510245&w=2
    
    
    
    Signed-off-by: default avatarMing Lei <ming.lei@redhat.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    dc6364b5