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

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/intel/io/scsi/adapters/pvscsi/pvscsi.c
          +++ new/usr/src/uts/intel/io/scsi/adapters/pvscsi/pvscsi.c
↓ open down ↓ 2 lines elided ↑ open up ↑
   3    3   * Common Development and Distribution License ("CDDL"), version 1.0.
   4    4   * You may only use this file in accordance with the terms of version
   5    5   * 1.0 of the CDDL.
   6    6   *
   7    7   * A full copy of the text of the CDDL should have accompanied this
   8    8   * source.  A copy of the CDDL is also available via the Internet at
   9    9   * http://www.illumos.org/license/CDDL.
  10   10   */
  11   11  
  12   12  /*
  13      - * Copyright 2016 Nexenta Systems, Inc.
       13 + * Copyright 2018 Nexenta Systems, Inc.
  14   14   */
  15   15  
  16   16  #include <sys/atomic.h>
  17   17  #include <sys/cmn_err.h>
  18   18  #include <sys/conf.h>
  19   19  #include <sys/cpuvar.h>
  20   20  #include <sys/ddi.h>
  21   21  #include <sys/errno.h>
  22      -#include <sys/fs/dv_node.h>
  23   22  #include <sys/kmem.h>
  24   23  #include <sys/kmem_impl.h>
  25   24  #include <sys/list.h>
  26   25  #include <sys/modctl.h>
  27   26  #include <sys/pci.h>
  28   27  #include <sys/scsi/scsi.h>
  29   28  #include <sys/sunddi.h>
  30   29  #include <sys/sysmacros.h>
  31   30  #include <sys/time.h>
  32   31  #include <sys/types.h>
↓ open down ↓ 84 lines elided ↑ open up ↑
 117  116          pvs->cmd_queue_len++;
 118  117  }
 119  118  
 120  119  static void
 121  120  pvscsi_remove_from_queue(pvscsi_cmd_t *cmd)
 122  121  {
 123  122          pvscsi_softc_t  *pvs = cmd->cmd_pvs;
 124  123  
 125  124          ASSERT(pvs != NULL);
 126  125          ASSERT(mutex_owned(&pvs->mutex));
 127      -        ASSERT(list_link_active(&cmd->cmd_queue_node));
 128      -        ASSERT(pvs->cmd_queue_len > 0);
 129  126  
 130  127          if (list_link_active(&cmd->cmd_queue_node)) {
      128 +                ASSERT(pvs->cmd_queue_len > 0);
 131  129                  list_remove(&pvs->cmd_queue, cmd);
 132  130                  pvs->cmd_queue_len--;
 133  131          }
 134  132  }
 135  133  
 136  134  static uint64_t
 137  135  pvscsi_map_ctx(pvscsi_softc_t *pvs, pvscsi_cmd_ctx_t *io_ctx)
 138  136  {
 139  137          return (io_ctx - pvs->cmd_ctx + 1);
 140  138  }
↓ open down ↓ 212 lines elided ↑ open up ↑
 353  351  
 354  352          /* Find devnode */
 355  353          for (devnode = list_head(&pvs->devnodes); devnode != NULL;
 356  354              devnode = list_next(&pvs->devnodes, devnode)) {
 357  355                  if (devnode->target == target)
 358  356                          break;
 359  357          }
 360  358  
 361  359          if (devnode != NULL) {
 362  360                  if (inqrc != 0) {
 363      -                        /* Target disappeared, drop devnode */
 364      -                        if (i_ddi_devi_attached(devnode->pdip)) {
 365      -                                char    *devname;
 366      -                                /* Get full devname */
 367      -                                devname = kmem_alloc(MAXPATHLEN, KM_SLEEP);
 368      -                                (void) ddi_deviname(devnode->pdip, devname);
 369      -                                /* Clean cache and name */
 370      -                                (void) devfs_clean(devnode->parent, devname + 1,
 371      -                                    DV_CLEAN_FORCE);
 372      -                                kmem_free(devname, MAXPATHLEN);
 373      -                        }
 374      -
 375      -                        (void) ndi_devi_offline(devnode->pdip, NDI_DEVI_REMOVE);
 376      -
      361 +                        (void) ndi_devi_offline(devnode->pdip,
      362 +                            NDI_DEVFS_CLEAN | NDI_DEVI_REMOVE);
 377  363                          list_remove(&pvs->devnodes, devnode);
 378  364                          kmem_free(devnode, sizeof (*devnode));
 379  365                  } else if (childp != NULL) {
 380  366                          /* Target exists */
 381  367                          *childp = devnode->pdip;
 382  368                  }
 383  369                  return (NDI_SUCCESS);
 384  370          } else if (inqrc != 0) {
 385  371                  /* Target doesn't exist */
 386  372                  return (NDI_FAILURE);
↓ open down ↓ 2314 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX