Author: jimharris
Date: Tue Nov  5 15:54:52 2013
New Revision: 257707
URL: http://svnweb.freebsd.org/changeset/base/257707

Log:
  MFC r257534:
  
  Create a unique unit number for each controller and namespace cdev.
  
  Sponsored by: Intel
  Approved by:  re (glebius)

Modified:
  stable/10/sys/dev/nvme/nvme_ctrlr.c
  stable/10/sys/dev/nvme/nvme_ns.c
Directory Properties:
  stable/10/sys/   (props changed)

Modified: stable/10/sys/dev/nvme/nvme_ctrlr.c
==============================================================================
--- stable/10/sys/dev/nvme/nvme_ctrlr.c Tue Nov  5 15:52:38 2013        
(r257706)
+++ stable/10/sys/dev/nvme/nvme_ctrlr.c Tue Nov  5 15:54:52 2013        
(r257707)
@@ -1150,8 +1150,8 @@ intx:
        if (status != 0)
                return (status);
 
-       ctrlr->cdev = make_dev(&nvme_ctrlr_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600,
-           "nvme%d", device_get_unit(dev));
+       ctrlr->cdev = make_dev(&nvme_ctrlr_cdevsw, device_get_unit(dev),
+           UID_ROOT, GID_WHEEL, 0600, "nvme%d", device_get_unit(dev));
 
        if (ctrlr->cdev == NULL)
                return (ENXIO);

Modified: stable/10/sys/dev/nvme/nvme_ns.c
==============================================================================
--- stable/10/sys/dev/nvme/nvme_ns.c    Tue Nov  5 15:52:38 2013        
(r257706)
+++ stable/10/sys/dev/nvme/nvme_ns.c    Tue Nov  5 15:54:52 2013        
(r257707)
@@ -492,6 +492,7 @@ nvme_ns_construct(struct nvme_namespace 
     struct nvme_controller *ctrlr)
 {
        struct nvme_completion_poll_status      status;
+       int                                     unit;
 
        ns->ctrlr = ctrlr;
        ns->id = id;
@@ -553,6 +554,12 @@ nvme_ns_construct(struct nvme_namespace 
        if (ns->cdev != NULL)
                return (0);
 
+       /*
+        * Namespace IDs start at 1, so we need to subtract 1 to create a
+        *  correct unit number.
+        */
+       unit = device_get_unit(ctrlr->dev) * NVME_MAX_NAMESPACES + ns->id - 1;
+
 /*
  * MAKEDEV_ETERNAL was added in r210923, for cdevs that will never
  *  be destroyed.  This avoids refcounting on the cdev object.
@@ -560,11 +567,11 @@ nvme_ns_construct(struct nvme_namespace 
  *  surprise removal nor namespace deletion.
  */
 #ifdef MAKEDEV_ETERNAL_KLD
-       ns->cdev = make_dev_credf(MAKEDEV_ETERNAL_KLD, &nvme_ns_cdevsw, 0,
+       ns->cdev = make_dev_credf(MAKEDEV_ETERNAL_KLD, &nvme_ns_cdevsw, unit,
            NULL, UID_ROOT, GID_WHEEL, 0600, "nvme%dns%d",
            device_get_unit(ctrlr->dev), ns->id);
 #else
-       ns->cdev = make_dev_credf(0, &nvme_ns_cdevsw, 0,
+       ns->cdev = make_dev_credf(0, &nvme_ns_cdevsw, unit,
            NULL, UID_ROOT, GID_WHEEL, 0600, "nvme%dns%d",
            device_get_unit(ctrlr->dev), ns->id);
 #endif
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to