summaryrefslogtreecommitdiff
path: root/Documentation/target
diff options
context:
space:
mode:
authorAndy Grover <agrover@redhat.com>2015-05-19 14:44:38 -0700
committerNicholas Bellinger <nab@linux-iscsi.org>2015-05-30 19:57:33 -0700
commitcf87edc6022d1fe7efa6b8ce1a99f2ef6a1b27f9 (patch)
treef2993803793d54c8c0e3548f48fd157e95777ee3 /Documentation/target
parent5a7125c64def3b21f8147eca8b54949a60963942 (diff)
downloadlwn-cf87edc6022d1fe7efa6b8ce1a99f2ef6a1b27f9.tar.gz
lwn-cf87edc6022d1fe7efa6b8ce1a99f2ef6a1b27f9.zip
target/user: Update example code for new ABI requirements
We now require that the userspace handler set a bit if the command is not handled. Update calls to tcmu_hdr_get_op for v2. Signed-off-by: Andy Grover <agrover@redhat.com> Reviewed-by: Ilias Tsitsimpis <iliastsi@arrikto.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'Documentation/target')
-rw-r--r--Documentation/target/tcmu-design.txt8
1 files changed, 6 insertions, 2 deletions
diff --git a/Documentation/target/tcmu-design.txt b/Documentation/target/tcmu-design.txt
index c80bf1ed8981..b495108c433c 100644
--- a/Documentation/target/tcmu-design.txt
+++ b/Documentation/target/tcmu-design.txt
@@ -324,7 +324,7 @@ int handle_device_events(int fd, void *map)
/* Process events from cmd ring until we catch up with cmd_head */
while (ent != (void *)mb + mb->cmdr_off + mb->cmd_head) {
- if (tcmu_hdr_get_op(&ent->hdr) == TCMU_OP_CMD) {
+ if (tcmu_hdr_get_op(ent->hdr.len_op) == TCMU_OP_CMD) {
uint8_t *cdb = (void *)mb + ent->req.cdb_off;
bool success = true;
@@ -339,8 +339,12 @@ int handle_device_events(int fd, void *map)
ent->rsp.scsi_status = SCSI_CHECK_CONDITION;
}
}
+ else if (tcmu_hdr_get_op(ent->hdr.len_op) != TCMU_OP_PAD) {
+ /* Tell the kernel we didn't handle unknown opcodes */
+ ent->hdr.uflags |= TCMU_UFLAG_UNKNOWN_OP;
+ }
else {
- /* Do nothing for PAD entries */
+ /* Do nothing for PAD entries except update cmd_tail */
}
/* update cmd_tail */