summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/common/pci/pci_strings.c3
-rw-r--r--usr/src/common/pci/pci_strings.h2
-rw-r--r--usr/src/lib/fm/topo/libtopo/common/topo_xml.c71
-rw-r--r--usr/src/lib/libipmi/common/ipmi_fru.c2
-rw-r--r--usr/src/uts/common/fs/xattr.c23
-rw-r--r--usr/src/uts/common/fs/zfs/arc.c11
-rw-r--r--usr/src/uts/common/fs/zfs/dsl_scan.c6
-rw-r--r--usr/src/uts/common/sys/pci.h1
-rw-r--r--usr/src/uts/common/sys/sysevent/eventdefs.h3
9 files changed, 56 insertions, 66 deletions
diff --git a/usr/src/common/pci/pci_strings.c b/usr/src/common/pci/pci_strings.c
index fc322641ad..615e3d626c 100644
--- a/usr/src/common/pci/pci_strings.c
+++ b/usr/src/common/pci/pci_strings.c
@@ -47,6 +47,9 @@ const pci_class_strings_t class_pci[] = {
1, 6, 2, "Serial Storage Bus Interface", "sata",
1, 7, 0, "Serial Attached SCSI Controller", "sas",
1, 7, 1, "Serial Storage Bus Interface", "sas",
+ 1, 8, 0, "Non-Volatile memory controller", "unknown",
+ 1, 8, 1, "NVMHCI", "unknown",
+ 1, 8, 2, "NVM Express", "nvme",
1, 0x80, 0, "Mass storage controller", "unknown",
2, 0, 0, "Ethernet controller", "etherne",
diff --git a/usr/src/common/pci/pci_strings.h b/usr/src/common/pci/pci_strings.h
index 351d18da81..bea94aad68 100644
--- a/usr/src/common/pci/pci_strings.h
+++ b/usr/src/common/pci/pci_strings.h
@@ -28,8 +28,6 @@
#ifndef _PCI_STRINGS_H
#define _PCI_STRINGS_H
-#pragma ident "%Z%%M% %I% %E% SMI"
-
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/usr/src/lib/fm/topo/libtopo/common/topo_xml.c b/usr/src/lib/fm/topo/libtopo/common/topo_xml.c
index bbac0d17f1..228755c953 100644
--- a/usr/src/lib/fm/topo/libtopo/common/topo_xml.c
+++ b/usr/src/lib/fm/topo/libtopo/common/topo_xml.c
@@ -244,35 +244,7 @@ const char *name)
case TOPO_TYPE_UINT32_ARRAY:
case TOPO_TYPE_INT64_ARRAY:
case TOPO_TYPE_UINT64_ARRAY:
- for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next)
- if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
- (xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0))
- nelems++;
-
- if (nelems < 1) {
- topo_dprintf(mp->tm_hdl, TOPO_DBG_ERR, "No <propitem> "
- "or <argitem> elements found for array val");
- return (-1);
- }
- if ((arrbuf = topo_mod_alloc(mp, (nelems * sizeof (uint64_t))))
- == NULL)
- return (topo_mod_seterrno(mp, ETOPO_NOMEM));
- break;
case TOPO_TYPE_STRING_ARRAY:
- for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next)
- if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
- (xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0))
- nelems++;
-
- if (nelems < 1) {
- topo_dprintf(mp->tm_hdl, TOPO_DBG_ERR, "No <propitem> "
- "or <argitem> elements found for array val");
- return (-1);
- }
- if ((strarrbuf = topo_mod_alloc(mp, (nelems * sizeof (char *))))
- == NULL)
- return (topo_mod_seterrno(mp, ETOPO_NOMEM));
- break;
case TOPO_TYPE_FMRI_ARRAY:
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next)
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
@@ -281,12 +253,9 @@ const char *name)
if (nelems < 1) {
topo_dprintf(mp->tm_hdl, TOPO_DBG_ERR, "No <propitem> "
- "elements found for array prop");
+ "or <argitem> elements found for array val");
return (-1);
}
- if ((nvlarrbuf = topo_mod_alloc(mp, (nelems *
- sizeof (nvlist_t *)))) == NULL)
- return (topo_mod_seterrno(mp, ETOPO_NOMEM));
break;
default:
topo_dprintf(mp->tm_hdl, TOPO_DBG_ERR,
@@ -296,11 +265,14 @@ const char *name)
switch (ptype) {
case TOPO_TYPE_INT32_ARRAY:
+ if ((arrbuf = topo_mod_alloc(mp, (nelems * sizeof (int32_t))))
+ == NULL)
+ return (topo_mod_seterrno(mp, ETOPO_NOMEM));
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next) {
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
(xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0)) {
- if ((str = xmlGetProp(xn, (xmlChar *)Value))
+ if ((str = xmlGetProp(cn, (xmlChar *)Value))
== NULL)
return (-1);
@@ -312,14 +284,17 @@ const char *name)
rv = nvlist_add_int32_array(nvl, name, (int32_t *)arrbuf,
nelems);
- free(arrbuf);
+ topo_mod_free(mp, arrbuf, (nelems * sizeof (int32_t)));
break;
case TOPO_TYPE_UINT32_ARRAY:
+ if ((arrbuf = topo_mod_alloc(mp, (nelems * sizeof (uint32_t))))
+ == NULL)
+ return (topo_mod_seterrno(mp, ETOPO_NOMEM));
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next) {
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
(xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0)) {
- if ((str = xmlGetProp(xn, (xmlChar *)Value))
+ if ((str = xmlGetProp(cn, (xmlChar *)Value))
== NULL)
return (-1);
@@ -331,14 +306,17 @@ const char *name)
rv = nvlist_add_uint32_array(nvl, name, (uint32_t *)arrbuf,
nelems);
- free(arrbuf);
+ topo_mod_free(mp, arrbuf, (nelems * sizeof (uint32_t)));
break;
case TOPO_TYPE_INT64_ARRAY:
+ if ((arrbuf = topo_mod_alloc(mp, (nelems * sizeof (int64_t))))
+ == NULL)
+ return (topo_mod_seterrno(mp, ETOPO_NOMEM));
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next) {
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
(xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0)) {
- if ((str = xmlGetProp(xn, (xmlChar *)Value))
+ if ((str = xmlGetProp(cn, (xmlChar *)Value))
== NULL)
return (-1);
@@ -350,14 +328,17 @@ const char *name)
rv = nvlist_add_int64_array(nvl, name, (int64_t *)arrbuf,
nelems);
- free(arrbuf);
+ topo_mod_free(mp, arrbuf, (nelems * sizeof (int64_t)));
break;
case TOPO_TYPE_UINT64_ARRAY:
+ if ((arrbuf = topo_mod_alloc(mp, (nelems * sizeof (uint64_t))))
+ == NULL)
+ return (topo_mod_seterrno(mp, ETOPO_NOMEM));
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next) {
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
(xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0)) {
- if ((str = xmlGetProp(xn, (xmlChar *)Value))
+ if ((str = xmlGetProp(cn, (xmlChar *)Value))
== NULL)
return (-1);
@@ -369,9 +350,12 @@ const char *name)
rv = nvlist_add_uint64_array(nvl, name, arrbuf,
nelems);
- free(arrbuf);
+ topo_mod_free(mp, arrbuf, (nelems * sizeof (uint64_t)));
break;
case TOPO_TYPE_STRING_ARRAY:
+ if ((strarrbuf = topo_mod_alloc(mp, (nelems * sizeof (char *))))
+ == NULL)
+ return (topo_mod_seterrno(mp, ETOPO_NOMEM));
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next) {
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
(xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0)) {
@@ -390,11 +374,14 @@ const char *name)
strarr_free(mp, strarrbuf, nelems);
break;
case TOPO_TYPE_FMRI_ARRAY:
+ if ((nvlarrbuf = topo_mod_alloc(mp, (nelems *
+ sizeof (nvlist_t *)))) == NULL)
+ return (topo_mod_seterrno(mp, ETOPO_NOMEM));
for (cn = xn->xmlChildrenNode; cn != NULL; cn = cn->next) {
if ((xmlStrcmp(cn->name, (xmlChar *)Propitem) == 0) ||
(xmlStrcmp(cn->name, (xmlChar *)Argitem) == 0)) {
- if ((str = xmlGetProp(xn, (xmlChar *)Value))
+ if ((str = xmlGetProp(cn, (xmlChar *)Value))
== NULL)
return (-1);
@@ -409,7 +396,7 @@ const char *name)
rv = nvlist_add_nvlist_array(nvl, name, nvlarrbuf,
nelems);
- free(nvlarrbuf);
+ topo_mod_free(mp, nvlarrbuf, (nelems * sizeof (nvlist_t *)));
break;
}
diff --git a/usr/src/lib/libipmi/common/ipmi_fru.c b/usr/src/lib/libipmi/common/ipmi_fru.c
index b429f91934..b03198b614 100644
--- a/usr/src/lib/libipmi/common/ipmi_fru.c
+++ b/usr/src/lib/libipmi/common/ipmi_fru.c
@@ -108,7 +108,7 @@ ipmi_fru_read(ipmi_handle_t *ihp, ipmi_sdr_fru_locator_t *fru_loc, char **buf)
/*
* The FRU area must be read in chunks as its total size will
- * be larger that what would fit in a single message. The
+ * be larger than what would fit in a single message. The
* maximum size of a message can vary between platforms so
* if while attempting to read a chunk we receive an error code
* indicating that the requested chunk size is invalid, we will
diff --git a/usr/src/uts/common/fs/xattr.c b/usr/src/uts/common/fs/xattr.c
index 7373aaddbe..0c5ddde20d 100644
--- a/usr/src/uts/common/fs/xattr.c
+++ b/usr/src/uts/common/fs/xattr.c
@@ -1457,22 +1457,15 @@ xattr_dir_readdir(vnode_t *dvp, uio_t *uiop, cred_t *cr, int *eofp,
static void
xattr_dir_inactive(vnode_t *vp, cred_t *cr, caller_context_t *ct)
{
- gfs_file_t *fp;
- xattr_dir_t *xattr_dir;
- vnode_t *real_vp = NULL;
+ xattr_dir_t *dp;
- mutex_enter(&vp->v_lock);
- xattr_dir = vp->v_data;
- if (xattr_dir->xattr_realvp) {
- real_vp = xattr_dir->xattr_realvp;
- xattr_dir->xattr_realvp = NULL;
- }
- mutex_exit(&vp->v_lock);
- if (real_vp != NULL)
- VN_RELE(real_vp);
- fp = gfs_dir_inactive(vp);
- if (fp != NULL) {
- kmem_free(fp, fp->gfs_size);
+ dp = gfs_dir_inactive(vp); /* will track v_count */
+ if (dp != NULL) {
+ /* vp was freed */
+ if (dp->xattr_realvp != NULL)
+ VN_RELE(dp->xattr_realvp);
+
+ kmem_free(dp, ((gfs_file_t *)dp)->gfs_size);
}
}
diff --git a/usr/src/uts/common/fs/zfs/arc.c b/usr/src/uts/common/fs/zfs/arc.c
index aceb530967..9b1f0b0ed8 100644
--- a/usr/src/uts/common/fs/zfs/arc.c
+++ b/usr/src/uts/common/fs/zfs/arc.c
@@ -23,7 +23,7 @@
* Copyright (c) 2017, Joyent, Inc.
* Copyright (c) 2011, 2017 by Delphix. All rights reserved.
* Copyright (c) 2014 by Saso Kiselkov. All rights reserved.
- * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2017 Nexenta Systems, Inc. All rights reserved.
*/
/*
@@ -1551,8 +1551,9 @@ arc_cksum_is_equal(arc_buf_hdr_t *hdr, zio_t *zio)
uint64_t lsize = HDR_GET_LSIZE(hdr);
uint64_t csize;
- void *cbuf = zio_buf_alloc(HDR_GET_PSIZE(hdr));
- csize = zio_compress_data(compress, zio->io_abd, cbuf, lsize);
+ abd_t *cdata = abd_alloc_linear(HDR_GET_PSIZE(hdr), B_TRUE);
+ csize = zio_compress_data(compress, zio->io_abd,
+ abd_to_buf(cdata), lsize);
ASSERT3U(csize, <=, HDR_GET_PSIZE(hdr));
if (csize < HDR_GET_PSIZE(hdr)) {
@@ -1568,10 +1569,10 @@ arc_cksum_is_equal(arc_buf_hdr_t *hdr, zio_t *zio)
* and zero out any part that should not contain
* data.
*/
- bzero((char *)cbuf + csize, HDR_GET_PSIZE(hdr) - csize);
+ abd_zero_off(cdata, csize, HDR_GET_PSIZE(hdr) - csize);
csize = HDR_GET_PSIZE(hdr);
}
- zio_push_transform(zio, cbuf, csize, HDR_GET_PSIZE(hdr), NULL);
+ zio_push_transform(zio, cdata, csize, HDR_GET_PSIZE(hdr), NULL);
}
/*
diff --git a/usr/src/uts/common/fs/zfs/dsl_scan.c b/usr/src/uts/common/fs/zfs/dsl_scan.c
index 9d950d853d..f1a6649199 100644
--- a/usr/src/uts/common/fs/zfs/dsl_scan.c
+++ b/usr/src/uts/common/fs/zfs/dsl_scan.c
@@ -364,6 +364,7 @@ dsl_scan_cancel_sync(void *arg, dmu_tx_t *tx)
dsl_scan_done(scn, B_FALSE, tx);
dsl_scan_sync_state(scn, tx);
+ spa_event_notify(scn->scn_dp->dp_spa, NULL, NULL, ESC_ZFS_SCRUB_ABORT);
}
int
@@ -418,6 +419,7 @@ dsl_scrub_pause_resume_sync(void *arg, dmu_tx_t *tx)
spa->spa_scan_pass_scrub_pause = gethrestime_sec();
scn->scn_phys.scn_flags |= DSF_SCRUB_PAUSED;
dsl_scan_sync_state(scn, tx);
+ spa_event_notify(spa, NULL, NULL, ESC_ZFS_SCRUB_PAUSED);
} else {
ASSERT3U(*cmd, ==, POOL_SCRUB_NORMAL);
if (dsl_scan_is_paused_scrub(scn)) {
@@ -2027,8 +2029,10 @@ dsl_scan(dsl_pool_t *dp, pool_scan_func_t func)
/* got scrub start cmd, resume paused scrub */
int err = dsl_scrub_set_pause_resume(scn->scn_dp,
POOL_SCRUB_NORMAL);
- if (err == 0)
+ if (err == 0) {
+ spa_event_notify(spa, NULL, NULL, ESC_ZFS_SCRUB_RESUME);
return (ECANCELED);
+ }
return (SET_ERROR(err));
}
diff --git a/usr/src/uts/common/sys/pci.h b/usr/src/uts/common/sys/pci.h
index de0cb3e808..364fd0f37e 100644
--- a/usr/src/uts/common/sys/pci.h
+++ b/usr/src/uts/common/sys/pci.h
@@ -235,6 +235,7 @@ extern "C" {
#define PCI_MASS_ATA 0x5 /* ATA Controller */
#define PCI_MASS_SATA 0x6 /* Serial ATA */
#define PCI_MASS_SAS 0x7 /* Serial Attached SCSI (SAS) Cntrlr */
+#define PCI_MASS_NVME 0x8 /* Non-Volatile memory controller */
#define PCI_MASS_OTHER 0x80 /* Other Mass Storage Controller */
/*
diff --git a/usr/src/uts/common/sys/sysevent/eventdefs.h b/usr/src/uts/common/sys/sysevent/eventdefs.h
index 1a13dacef6..8995ba4aa0 100644
--- a/usr/src/uts/common/sys/sysevent/eventdefs.h
+++ b/usr/src/uts/common/sys/sysevent/eventdefs.h
@@ -203,6 +203,9 @@ extern "C" {
#define ESC_ZFS_CONFIG_SYNC "ESC_ZFS_config_sync"
#define ESC_ZFS_SCRUB_START "ESC_ZFS_scrub_start"
#define ESC_ZFS_SCRUB_FINISH "ESC_ZFS_scrub_finish"
+#define ESC_ZFS_SCRUB_ABORT "ESC_ZFS_scrub_abort"
+#define ESC_ZFS_SCRUB_RESUME "ESC_ZFS_scrub_resume"
+#define ESC_ZFS_SCRUB_PAUSED "ESC_ZFS_scrub_paused"
#define ESC_ZFS_VDEV_SPARE "ESC_ZFS_vdev_spare"
#define ESC_ZFS_BOOTFS_VDEV_ATTACH "ESC_ZFS_bootfs_vdev_attach"
#define ESC_ZFS_POOL_REGUID "ESC_ZFS_pool_reguid"