• Tejun Heo's avatar
    libata: take advantage of cmwq and remove concurrency limitations · ad72cf98
    Tejun Heo authored
    libata has two concurrency related limitations.
    
    a. ata_wq which is used for polling PIO has single thread per CPU.  If
       there are multiple devices doing polling PIO on the same CPU, they
       can't be executed simultaneously.
    
    b. ata_aux_wq which is used for SCSI probing has single thread.  In
       cases where SCSI probing is stalled for extended period of time
       which is possible for ATAPI devices, this will stall all probing.
    
    #a is solved by increasing maximum concurrency of ata_wq.  Please note
    that polling PIO might be used under allocation path and thus needs to
    be served by a separate wq with a rescuer.
    
    #b is solved by using the default wq instead and achieving exclusion
    via per-port mutex.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarJeff Garzik <jgarzik@pobox.com>
    ad72cf98
libata.h 55.7 KB