summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorKeith Busch <keith.busch@intel.com>2013-12-10 13:10:36 -0700
committerMatthew Wilcox <matthew.r.wilcox@intel.com>2013-12-16 15:54:39 -0500
commit9a6b94584de1a0467d85b435df9c744c5c45a270 (patch)
treeeab218e65ce9e224b48b4d721819f871d909efe1 /include/linux
parent68608c268bf265b039daeaafee6c902dfef32024 (diff)
downloadlinux-9a6b94584de1a0467d85b435df9c744c5c45a270.tar.gz
linux-9a6b94584de1a0467d85b435df9c744c5c45a270.tar.bz2
linux-9a6b94584de1a0467d85b435df9c744c5c45a270.zip
NVMe: Device resume error handling
Adds controller error handling on resume power management. If the device fails to initialize, the device is queued for a reset. If the reset fails, a thread is spawned to remove the pci device. If the device resumes as "busy", the device is responding to admin commands but will not create IO queues. In this case, we need to remove the gendisks and free the IO queues since they can't be used and may be holding bios in their lists. From testing, the dma pools require a pci device so this had to change the pci driver 'remove' to release the dma resources in line with that call instead of after all references to the device are released. Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/nvme.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/nvme.h b/include/linux/nvme.h
index 5bc29197d90e..eed81cc56d7e 100644
--- a/include/linux/nvme.h
+++ b/include/linux/nvme.h
@@ -87,6 +87,7 @@ struct nvme_dev {
struct list_head namespaces;
struct kref kref;
struct miscdevice miscdev;
+ struct work_struct reset_work;
char name[12];
char serial[20];
char model[40];