summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan McDonald <danmcd@joyent.com>2022-02-04 10:38:56 -0500
committerDan McDonald <danmcd@joyent.com>2022-02-04 10:38:56 -0500
commitb57791dd2ad47157c6f0aedb7c1a3dc1abd4bfb3 (patch)
tree15d9b767cc031fac8a05a90c688af75867efc6ed
parentd17f64dace0684de9710c41b5d8b6b76dd82a5ce (diff)
parentc2270953142194d5f260d803d60104fad12ab076 (diff)
downloadillumos-joyent-b57791dd2ad47157c6f0aedb7c1a3dc1abd4bfb3.tar.gz
[illumos-gate merge]
commit c2270953142194d5f260d803d60104fad12ab076 6779 kernel panic in zfs_readdir shortly after mount commit b8aa3def2e2531e693fba6d1f00a74339a4a663d 11174 new driver for Smart Array storage controllers Conflicts (whitespace only): usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c usr/src/uts/common/sys/scsi/adapters/smrt/smrt_scsi.h usr/src/uts/intel/smrt/Makefile
-rw-r--r--usr/src/pkg/manifests/driver-storage-smrt.p5m74
-rw-r--r--usr/src/uts/common/fs/zfs/zfs_dir.c1
-rw-r--r--usr/src/uts/common/fs/zfs/zfs_znode.c2
-rw-r--r--usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c16
-rw-r--r--usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c2
-rw-r--r--usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c1
-rw-r--r--usr/src/uts/common/sys/scsi/adapters/smrt/smrt_scsi.h8
-rw-r--r--usr/src/uts/intel/smrt/Makefile2
8 files changed, 91 insertions, 15 deletions
diff --git a/usr/src/pkg/manifests/driver-storage-smrt.p5m b/usr/src/pkg/manifests/driver-storage-smrt.p5m
new file mode 100644
index 0000000000..8ef3e50718
--- /dev/null
+++ b/usr/src/pkg/manifests/driver-storage-smrt.p5m
@@ -0,0 +1,74 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2019 Joyent, Inc.
+#
+
+<include global_zone_only_component>
+set name=pkg.fmri value=pkg:/driver/storage/smrt@$(PKGVERS)
+set name=pkg.summary value="HP SmartArray SAS HBA Driver"
+set name=pkg.description value="HP SmartArray SAS HBA Driver"
+set name=info.classification value=org.opensolaris.category.2008:Drivers/Storage
+set name=variant.arch value=i386
+dir path=kernel group=sys
+dir path=kernel/drv group=sys
+dir path=kernel/drv/$(ARCH64) group=sys
+file path=kernel/drv/$(ARCH64)/smrt group=sys
+file path=kernel/drv/smrt.conf group=sys
+driver name=smrt class=scsi-self-identifying
+#
+# The smrt driver overlaps with cpqary3 and supports several of the same
+# devices. To ensure that folks can still boot existing systems we have
+# left all the devices supported by smrt commented out as they all
+# overlay with cpqary3. In this form, users may swap over and the driver
+# also provides a useful reference for SCSAv3. When adding these
+# aliases, please make sure to remember to add the appropriate '\' to
+# the driver line above and below as needed.
+#
+# alias=pci103c,1920
+# alias=pci103c,1921
+# alias=pci103c,1922
+# alias=pci103c,1923
+# alias=pci103c,1924
+# alias=pci103c,1926
+# alias=pci103c,1928
+# alias=pci103c,21bd
+# alias=pci103c,21be
+# alias=pci103c,21bf
+# alias=pci103c,21c0
+# alias=pci103c,21c1
+# alias=pci103c,21c2
+# alias=pci103c,21c3
+# alias=pci103c,21c5
+# alias=pci103c,21c6
+# alias=pci103c,21c7
+# alias=pci103c,21c8
+# alias=pci103c,21ca
+# alias=pci103c,21cb
+# alias=pci103c,21cc
+# alias=pci103c,21cd
+# alias=pci103c,21ce
+# alias=pci103c,3241
+# alias=pci103c,3243
+# alias=pci103c,3245
+# alias=pci103c,3247
+# alias=pci103c,3249
+# alias=pci103c,324a
+# alias=pci103c,324b
+# alias=pci103c,3350
+# alias=pci103c,3351
+# alias=pci103c,3352
+# alias=pci103c,3353
+# alias=pci103c,3354
+# alias=pci103c,3355
+# alias=pci103c,3356
+license lic_CDDL license=lic_CDDL
diff --git a/usr/src/uts/common/fs/zfs/zfs_dir.c b/usr/src/uts/common/fs/zfs/zfs_dir.c
index 3841c11d11..5d377a109e 100644
--- a/usr/src/uts/common/fs/zfs/zfs_dir.c
+++ b/usr/src/uts/common/fs/zfs/zfs_dir.c
@@ -717,6 +717,7 @@ zfs_rmnode(znode_t *zp)
dmu_tx_hold_free(tx, acl_obj, 0, DMU_OBJECT_END);
zfs_sa_upgrade_txholds(tx, zp);
+ dmu_tx_mark_netfree(tx);
error = dmu_tx_assign(tx, TXG_WAIT);
if (error) {
/*
diff --git a/usr/src/uts/common/fs/zfs/zfs_znode.c b/usr/src/uts/common/fs/zfs/zfs_znode.c
index 257d5b2a35..84ba5947fa 100644
--- a/usr/src/uts/common/fs/zfs/zfs_znode.c
+++ b/usr/src/uts/common/fs/zfs/zfs_znode.c
@@ -1246,6 +1246,8 @@ zfs_zget(zfsvfs_t *zfsvfs, uint64_t obj_num, znode_t **zpp)
if (zp == NULL) {
err = SET_ERROR(ENOENT);
} else {
+ if (zp->z_links == 0)
+ zp->z_unlinked = B_TRUE;
*zpp = zp;
}
ZFS_OBJ_HOLD_EXIT(zfsvfs, obj_num);
diff --git a/usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c b/usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
index b4cdd5607e..8da9ac9038 100644
--- a/usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
+++ b/usr/src/uts/common/io/scsi/adapters/smrt/smrt_ciss.c
@@ -123,15 +123,15 @@
* The CISS specification allows for three different kinds of attributes that
* describe how requests are queued to the controller. These are:
*
- * HEAD OF QUEUE The request should go to the head of the
- * controller queue. This is used for resets and
- * aborts to ensure that they're not blocked behind
- * additional I/O.
+ * HEAD OF QUEUE The request should go to the head of the
+ * controller queue. This is used for resets and
+ * aborts to ensure that they're not blocked behind
+ * additional I/O.
*
- * SIMPLE This queues the request for normal processing.
- * Commands queued this way are not special with
- * respect to one another. We use this for all I/O
- * and discovery commands.
+ * SIMPLE This queues the request for normal processing.
+ * Commands queued this way are not special with
+ * respect to one another. We use this for all I/O
+ * and discovery commands.
*
* ORDERED This attribute is used to indicate that commands
* should be submitted and processed in some order.
diff --git a/usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c b/usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
index 9e27448b68..433b2ea2ee 100644
--- a/usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
+++ b/usr/src/uts/common/io/scsi/adapters/smrt/smrt_device.c
@@ -58,7 +58,7 @@ smrt_locate_cfgtbl(smrt_t *smrt, pci_regspec_t *regs, unsigned nregs,
/*
* Locate the Configuration Table. Three different values read
* from two I2O registers allow us to determine the location:
- * - the correct PCI BAR offset is in the low 16 bits of
+ * - the correct PCI BAR offset is in the low 16 bits of
* CISS_I2O_CFGTBL_CFG_OFFSET
* - bit 16 is 0 for a 32-bit space, and 1 for 64-bit
* - the memory offset from the base of this BAR is
diff --git a/usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c b/usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
index 8ab3927673..88ed57bc7d 100644
--- a/usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
+++ b/usr/src/uts/common/io/scsi/adapters/smrt/smrt_physical.c
@@ -606,7 +606,6 @@ smrt_phys_teardown(smrt_t *smrt)
{
smrt_physical_t *smpt;
- VERIFY(MUTEX_HELD(&smrt->smrt_mutex));
while ((smpt = list_remove_head(&smrt->smrt_physicals)) != NULL) {
smrt_physical_free(smpt);
}
diff --git a/usr/src/uts/common/sys/scsi/adapters/smrt/smrt_scsi.h b/usr/src/uts/common/sys/scsi/adapters/smrt/smrt_scsi.h
index 47ef99b2e0..45c4c84407 100644
--- a/usr/src/uts/common/sys/scsi/adapters/smrt/smrt_scsi.h
+++ b/usr/src/uts/common/sys/scsi/adapters/smrt/smrt_scsi.h
@@ -26,10 +26,10 @@ extern "C" {
#endif
/* CISS LUN Addressing MODEs */
-#define PERIPHERIAL_DEV_ADDR 0x0
-#define LOGICAL_VOL_ADDR 0x1
-#define MASK_PERIPHERIAL_DEV_ADDR 0x3
-#define CISS_PHYS_MODE 0x0
+#define PERIPHERIAL_DEV_ADDR 0x0
+#define LOGICAL_VOL_ADDR 0x1
+#define MASK_PERIPHERIAL_DEV_ADDR 0x3
+#define CISS_PHYS_MODE 0x0
/*
* Vendor-specific SCSI Commands
diff --git a/usr/src/uts/intel/smrt/Makefile b/usr/src/uts/intel/smrt/Makefile
index ce78cddb11..37d47e1395 100644
--- a/usr/src/uts/intel/smrt/Makefile
+++ b/usr/src/uts/intel/smrt/Makefile
@@ -38,7 +38,7 @@ ALL_TARGET = $(BINARY) $(CONFMOD)
INSTALL_TARGET = $(BINARY) $(ROOTMODULE) $(ROOT_CONFFILE)
#
-# Kernel Module Dependencies
+# Kernel Module Dependencies
#
LDFLAGS += -Nmisc/scsi