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,27 **** * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. */ /* ! * Copyright 2016 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> --- 8,26 ---- * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. */ /* ! * 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/kmem.h> #include <sys/kmem_impl.h> #include <sys/list.h> #include <sys/modctl.h> #include <sys/pci.h>
*** 122,135 **** { 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)) { list_remove(&pvs->cmd_queue, cmd); pvs->cmd_queue_len--; } } --- 121,133 ---- { pvscsi_softc_t *pvs = cmd->cmd_pvs; ASSERT(pvs != NULL); ASSERT(mutex_owned(&pvs->mutex)); 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,381 **** 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); ! list_remove(&pvs->devnodes, devnode); kmem_free(devnode, sizeof (*devnode)); } else if (childp != NULL) { /* Target exists */ *childp = devnode->pdip; --- 356,367 ---- break; } if (devnode != NULL) { if (inqrc != 0) { ! (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;