svn commit: r257534 - head/sys/dev/nvme

Jim Harris jimharris at FreeBSD.org
Fri Nov 1 23:30:55 UTC 2013


Author: jimharris
Date: Fri Nov  1 23:30:54 2013
New Revision: 257534
URL: http://svnweb.freebsd.org/changeset/base/257534

Log:
  Create a unique unit number for each controller and namespace cdev.
  
  Sponsored by:	Intel
  MFC after:	3 days

Modified:
  head/sys/dev/nvme/nvme_ctrlr.c
  head/sys/dev/nvme/nvme_ns.c

Modified: head/sys/dev/nvme/nvme_ctrlr.c
==============================================================================
--- head/sys/dev/nvme/nvme_ctrlr.c	Fri Nov  1 22:55:11 2013	(r257533)
+++ head/sys/dev/nvme/nvme_ctrlr.c	Fri Nov  1 23:30:54 2013	(r257534)
@@ -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: head/sys/dev/nvme/nvme_ns.c
==============================================================================
--- head/sys/dev/nvme/nvme_ns.c	Fri Nov  1 22:55:11 2013	(r257533)
+++ head/sys/dev/nvme/nvme_ns.c	Fri Nov  1 23:30:54 2013	(r257534)
@@ -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


More information about the svn-src-head mailing list