summaryrefslogtreecommitdiff
path: root/usr/src/uts/intel/io/scsi
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/intel/io/scsi')
-rw-r--r--usr/src/uts/intel/io/scsi/targets/sd.conf33
1 files changed, 32 insertions, 1 deletions
diff --git a/usr/src/uts/intel/io/scsi/targets/sd.conf b/usr/src/uts/intel/io/scsi/targets/sd.conf
index 1863937888..b0aebdb5b1 100644
--- a/usr/src/uts/intel/io/scsi/targets/sd.conf
+++ b/usr/src/uts/intel/io/scsi/targets/sd.conf
@@ -42,7 +42,7 @@ name="sd" class="scsi" target=15 lun=0;
#
# The following stub node is needed for pathological bottom-up
-# devid resolution on a self-identifying transport.
+# devid resolution on a self-identifying transport.
#
name="sd" class="scsi-self-identifying";
@@ -50,3 +50,34 @@ name="sd" class="scsi-self-identifying";
# Associate the driver with devid resolution.
#
ddi-devid-registrant=1;
+
+#
+# Certain hardware RAID controllers have nonvolatile caches but do not
+# support the SYNC_NV bit to restrict flushes to the volatile portion of
+# the cache, if any. In order to get acceptable performance out of these
+# devices, we need to suppress cache flushing on them. In most (hopefully
+# all) cases, if the battery fails or the cache otherwise becomes volatile,
+# the controller will switch to write-through mode, and ensure that any
+# underlying drive cache is off. In this case, it should still be safe to
+# dispense with cache flush commands. Controllers for which this is not the
+# case should have cache-nonvolatile set unless data loss and corruption are
+# acceptable.
+#
+# In addition, *all* devices have their retries capped at 1. There are an
+# additional 2 retries for "victim" IOs if a reset is needed. Retrying is
+# very rarely successful, and it is preferable to let ZFS do it where needed.
+#
+# For the Samsung client drives, users have seen data corruption when they use
+# the advertised 512 byte sectors. The actual sector size of the flash
+# translation layer is 4K, so it's relatively safe to make this change which
+# annecdotally solves that problem.
+#
+sd-config-list=
+ "", "retries-timeout:1,retries-busy:1,retries-reset:1,retries-victim:2",
+ "DELL PERC H710", "cache-nonvolatile:true",
+ "DELL PERC H700", "cache-nonvolatile:true",
+ "DELL PERC/6i", "cache-nonvolatile:true",
+ "ATA Samsung SSD 830", "physical-block-size:4096",
+ "ATA Samsung SSD 840", "physical-block-size:4096",
+ "ATA Samsung SSD 850", "physical-block-size:4096",
+ "ATA Samsung SSD 860", "physical-block-size:4096";