aboutsummaryrefslogtreecommitdiff
path: root/sys/cam/ctl/ctl_ser_table.c
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2014-09-13 10:34:23 +0000
committerAlexander Motin <mav@FreeBSD.org>2014-09-13 10:34:23 +0000
commitab55ae255a5d1bcb9f55ae52e9616974f3f15c57 (patch)
tree83ea7686199afb2c0ffff8134b93c74ec8ade911 /sys/cam/ctl/ctl_ser_table.c
parent87684766b0cf3ca74dddc74808b53d2e21db46a4 (diff)
downloadsrc-ab55ae255a5d1bcb9f55ae52e9616974f3f15c57.tar.gz
src-ab55ae255a5d1bcb9f55ae52e9616974f3f15c57.zip
Implement control over command reordering via options and control mode page.
It allows to bypass range checks between UNMAP and READ/WRITE commands, which may introduce additional delays while waiting for UNMAP parameters. READ and WRITE commands are always processed in safe order since their range checks are almost free.
Notes
Notes: svn path=/head/; revision=271507
Diffstat (limited to 'sys/cam/ctl/ctl_ser_table.c')
-rw-r--r--sys/cam/ctl/ctl_ser_table.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/cam/ctl/ctl_ser_table.c b/sys/cam/ctl/ctl_ser_table.c
index 0b0bbf9e5116..d3693ce9c194 100644
--- a/sys/cam/ctl/ctl_ser_table.c
+++ b/sys/cam/ctl/ctl_ser_table.c
@@ -54,17 +54,19 @@
/****************************************************************************/
#define sK CTL_SER_SKIP /* Skip */
-#define pS CTL_SER_PASS /* pS */
+#define pS CTL_SER_PASS /* Pass */
#define bK CTL_SER_BLOCK /* Blocked */
+#define bO CTL_SER_BLOCKOPT /* Optional block */
#define xT CTL_SER_EXTENT /* Extent check */
+#define xO CTL_SER_EXTENTOPT /* Optional extent check */
static ctl_serialize_action
ctl_serialize_table[CTL_SERIDX_COUNT][CTL_SERIDX_COUNT] = {
/**>IDX_ :: 2nd:TUR RD WRT UNM MDSN MDSL RQSN INQ RDCP RES LSNS FMT STR*/
/*TUR */{ pS, pS, pS, pS, bK, bK, bK, pS, pS, bK, pS, bK, bK},
-/*READ */{ pS, pS, xT, bK, bK, bK, bK, pS, pS, bK, pS, bK, bK},
-/*WRITE */{ pS, xT, xT, bK, bK, bK, bK, pS, pS, bK, pS, bK, bK},
-/*UNMAP */{ pS, xT, xT, pS, bK, bK, bK, pS, pS, bK, pS, bK, bK},
+/*READ */{ pS, pS, xT, bO, bK, bK, bK, pS, pS, bK, pS, bK, bK},
+/*WRITE */{ pS, xT, xT, bO, bK, bK, bK, pS, pS, bK, pS, bK, bK},
+/*UNMAP */{ pS, xO, xO, pS, bK, bK, bK, pS, pS, bK, pS, bK, bK},
/*MD_SNS */{ bK, bK, bK, bK, pS, bK, bK, pS, pS, bK, pS, bK, bK},
/*MD_SEL */{ bK, bK, bK, bK, bK, bK, bK, pS, pS, bK, pS, bK, bK},
/*RQ_SNS */{ pS, pS, pS, pS, pS, pS, bK, pS, pS, bK, pS, bK, bK},