Print this page
NEX-17944 HBA drivers don't need the redundant devfs_clean step
Reviewed by: Dan Fields <dan.fields@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
NEX-7908 useless assert in pvscsi_remove_from_queue()
Reviewed by: Dan Fields <dan.fields@nexenta.com>
NEX-6869 pvscsi`pvscsi_bus_config uses wrong base while configuring targets
NEX-6870 pvscsi panics while simultaneously deleting large number of disks
Reviewed by: Hans Rosenfeld <hans.rosenfeld@nexenta.com>
NEX-6382 rework pvscsi
Reviewed by: Hans Rosenfeld <hans.rosenfeld@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
re #10804 rb3697 Mem-leaks in libsldap (fix lint)
re #10804 rb3697 Mem-leaks in libsldap
Modifications to clean up gcc4 warnings for both with- and without-
closed nza-kernel builds.
re #10787 rb3347 Integrate pvscsi driver to nza-kernel

@@ -8,20 +8,19 @@
  * source.  A copy of the CDDL is also available via the Internet at
  * http://www.illumos.org/license/CDDL.
  */
 
 /*
- * Copyright 2016 Nexenta Systems, Inc.
+ * Copyright 2018 Nexenta Systems, Inc.
  */
 
 #include <sys/atomic.h>
 #include <sys/cmn_err.h>
 #include <sys/conf.h>
 #include <sys/cpuvar.h>
 #include <sys/ddi.h>
 #include <sys/errno.h>
-#include <sys/fs/dv_node.h>
 #include <sys/kmem.h>
 #include <sys/kmem_impl.h>
 #include <sys/list.h>
 #include <sys/modctl.h>
 #include <sys/pci.h>

@@ -122,14 +121,13 @@
 {
         pvscsi_softc_t  *pvs = cmd->cmd_pvs;
 
         ASSERT(pvs != NULL);
         ASSERT(mutex_owned(&pvs->mutex));
-        ASSERT(list_link_active(&cmd->cmd_queue_node));
-        ASSERT(pvs->cmd_queue_len > 0);
 
         if (list_link_active(&cmd->cmd_queue_node)) {
+                ASSERT(pvs->cmd_queue_len > 0);
                 list_remove(&pvs->cmd_queue, cmd);
                 pvs->cmd_queue_len--;
         }
 }
 

@@ -358,24 +356,12 @@
                         break;
         }
 
         if (devnode != NULL) {
                 if (inqrc != 0) {
-                        /* Target disappeared, drop devnode */
-                        if (i_ddi_devi_attached(devnode->pdip)) {
-                                char    *devname;
-                                /* Get full devname */
-                                devname = kmem_alloc(MAXPATHLEN, KM_SLEEP);
-                                (void) ddi_deviname(devnode->pdip, devname);
-                                /* Clean cache and name */
-                                (void) devfs_clean(devnode->parent, devname + 1,
-                                    DV_CLEAN_FORCE);
-                                kmem_free(devname, MAXPATHLEN);
-                        }
-
-                        (void) ndi_devi_offline(devnode->pdip, NDI_DEVI_REMOVE);
-
+                        (void) ndi_devi_offline(devnode->pdip,
+                            NDI_DEVFS_CLEAN | NDI_DEVI_REMOVE);
                         list_remove(&pvs->devnodes, devnode);
                         kmem_free(devnode, sizeof (*devnode));
                 } else if (childp != NULL) {
                         /* Target exists */
                         *childp = devnode->pdip;