Merge git://git.infradead.org/users/willy/linux-nvme
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 11 Apr 2014 23:45:59 +0000 (16:45 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 11 Apr 2014 23:45:59 +0000 (16:45 -0700)
Pull NVMe driver updates from Matthew Wilcox:
 "Various updates to the NVMe driver.  The most user-visible change is
  that drive hotplugging now works and CPU hotplug while an NVMe drive
  is installed should also work better"

* git://git.infradead.org/users/willy/linux-nvme:
  NVMe: Retry failed commands with non-fatal errors
  NVMe: Add getgeo to block ops
  NVMe: Start-stop nvme_thread during device add-remove.
  NVMe: Make I/O timeout a module parameter
  NVMe: CPU hot plug notification
  NVMe: per-cpu io queues
  NVMe: Replace DEFINE_PCI_DEVICE_TABLE
  NVMe: Fix divide-by-zero in nvme_trans_io_get_num_cmds
  NVMe: IOCTL path RCU protect queue access
  NVMe: RCU protected access to io queues
  NVMe: Initialize device reference count earlier
  NVMe: Add CONFIG_PM_SLEEP to suspend/resume functions

1  2 
drivers/block/nvme-core.c
include/linux/nvme.h

index da085ff10d25159b7233c98771fe1964adb7cbde,efa9c8f4a7a76b320840250c6f73b3a0bb9705c9..7c64fa756cced628807e70fb873b532964ea39d9
@@@ -2441,10 -2725,12 +2715,13 @@@ static int nvme_probe(struct pci_dev *p
                                                                GFP_KERNEL);
        if (!dev->queues)
                goto free;
+       dev->io_queue = alloc_percpu(unsigned short);
+       if (!dev->io_queue)
+               goto free;
  
        INIT_LIST_HEAD(&dev->namespaces);
 -      INIT_WORK(&dev->reset_work, nvme_reset_failed_dev);
 +      dev->reset_workfn = nvme_reset_failed_dev;
 +      INIT_WORK(&dev->reset_work, nvme_reset_workfn);
        dev->pci_dev = pdev;
        pci_set_drvdata(pdev, dev);
        result = nvme_set_instance(dev);
index 6b9aafed225fcd9a48228ac9f6044c7a956cc325,b95431d0338bf21902316e30e2866781b1b750f4..a50173ca1d729aba84bc00c2572b40a91ec93140
@@@ -87,8 -92,8 +92,9 @@@ struct nvme_dev 
        struct list_head namespaces;
        struct kref kref;
        struct miscdevice miscdev;
 +      work_func_t reset_workfn;
        struct work_struct reset_work;
+       struct notifier_block nb;
        char name[12];
        char serial[20];
        char model[40];