• Tejun Heo's avatar
    [SCSI] fcoe: use dedicated workqueue instead of system_wq · 2ca32b48
    Tejun Heo authored
    fcoe uses the system_wq to destroy ports and the work items need to be
    flushed before the driver is unloaded.  As the work items free the
    containing data structure, they can't be flushed directly.  The
    workqueue should be flushed instead.
    
    Also, the destruction works can be chained - ie. destruction of a port
    may lead to destruction of another port where the work item for the
    former queues the work for the latter.  Currently, the depth of chain
    can be at most two and fcoe_exit() makes sure everything is complete
    by calling flush_scheduled_work() twice.
    
    With commit c8efcc25 (workqueue: allow chained queueing during
    destruction), destroy_workqueue() can take care of chained works on
    workqueue destruction.  Add and use fcoe_wq instead.  Simply
    destroying fcoe_wq on driver unload takes care of flushing.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarRobert Love <robert.w.love@intel.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
    2ca32b48
fcoe.c 71.7 KB