diff options
author | Alexander Motin <mav@FreeBSD.org> | 2014-09-13 10:34:23 +0000 |
---|---|---|
committer | Alexander Motin <mav@FreeBSD.org> | 2014-09-13 10:34:23 +0000 |
commit | ab55ae255a5d1bcb9f55ae52e9616974f3f15c57 (patch) | |
tree | 83ea7686199afb2c0ffff8134b93c74ec8ade911 /sys/cam/ctl/ctl_ser_table.c | |
parent | 87684766b0cf3ca74dddc74808b53d2e21db46a4 (diff) | |
download | src-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.c | 10 |
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}, |