• Tejun Heo's avatar
    libata: fix shutdown warning message printing · da071b42
    Tejun Heo authored
    Unlocking ap->lock and ssleeping don't work because SCSI commands can
    be issued from completion path without context.  Reimplement delayed
    completion by allowing translation functions to override
    qc->scsidone(), storing the original completion function to
    scmd->scsi_done() and overriding qc->scsidone() with a function which
    schedules delayed invocation of scmd->scsi_done().
    
    This isn't pretty at all but all the ugly parts are thankfully
    contained in the stop translation path where the compat feature is
    implemented.
    Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    da071b42
libata-scsi.c 83.5 KB