• K
    NVMe: Surprise removal handling · 0e53d180
    Keith Busch 提交于
    This adds checks to see if the nvme pci device was removed. The check
    reads the status register for the value of -1, which it should never be
    unless the device is no longer present.
    
    If a user performs a surprise removal on an nvme device, the driver will
    be notified either by the pci driver remove callback if the platform's
    slot is capable of this event, or via reading the device BAR status
    register, which will indicate controller failure and trigger a reset.
    
    Either way, the device is not present so all outstanding commands would
    timeout. This will not send queue deletion commands to a drive that
    isn't present and fail after ioremap, significantly speeding up surprise
    removal; previously this took over 2 minutes per IO queue pair created,
    but this will complete removing the device within a few seconds.
    Signed-off-by: NKeith Busch <keith.busch@intel.com>
    Signed-off-by: NMatthew Wilcox <matthew.r.wilcox@intel.com>
    0e53d180
nvme-core.c 60.9 KB