• Christoph Hellwig's avatar
    target: use a workqueue for I/O completions · 35e0e757
    Christoph Hellwig authored
    Instead of abusing the target processing thread for offloading I/O
    completion in the backends to user context add a new workqueue.  This means
    completions can be processed as fast as available CPU time allows it,
    including in parallel with other completions and more importantly I/O
    submission or QUEUE FULL retries.  This should give much better performance
    especially on loaded systems.
    
    As a fallout we can merge all the completed states into a single
    one.
    
    On the downside this change complicates lun reset handling a bit by
    requiring us to cancel a work item only for those states that have it
    initialized.  The alternative would be to either always initialize the work
    item to a dummy handler, or always use the same handler and do a switch on
    the state. The long term solution will be a flag that says that the command
    has an initialized work item, but that's only going to be useful once we
    have more users.
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    35e0e757
target_core_tmr.c 13 KB