NVMe: Add a character device for each nvme device

Registers a miscellaneous device for each nvme controller probed. This
creates character device files as /dev/nvmeN, where N is the device
instance, and supports nvme admin ioctl commands so devices without
namespaces can be managed.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
diff --git a/include/linux/nvme.h b/include/linux/nvme.h
index 7ae7ecf..9b6fba8 100644
--- a/include/linux/nvme.h
+++ b/include/linux/nvme.h
@@ -507,6 +507,8 @@
 
 #ifdef __KERNEL__
 #include <linux/pci.h>
+#include <linux/miscdevice.h>
+#include <linux/kref.h>
 
 #define NVME_IO_TIMEOUT	(5 * HZ)
 
@@ -527,6 +529,9 @@
 	struct msix_entry *entry;
 	struct nvme_bar __iomem *bar;
 	struct list_head namespaces;
+	struct kref kref;
+	struct miscdevice miscdev;
+	char name[12];
 	char serial[20];
 	char model[40];
 	char firmware_rev[8];