summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRafael Gieschke2025-10-14 20:25:24 +0200
committerRafael Gieschke2025-10-14 20:25:24 +0200
commit41b93d028cd850c010d12a72952b01656fb45235 (patch)
treefd40e7513d6e7cba0b25f1ed541bf19a45690291 /src
parent[server] Vendor SPDK headers (diff)
downloaddnbd3-41b93d028cd850c010d12a72952b01656fb45235.tar.gz
dnbd3-41b93d028cd850c010d12a72952b01656fb45235.tar.xz
dnbd3-41b93d028cd850c010d12a72952b01656fb45235.zip
[server] Support READ (16) SCSI command
Diffstat (limited to 'src')
-rw-r--r--src/server/net.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/server/net.c b/src/server/net.c
index 462d9eb..f892bc2 100644
--- a/src/server/net.c
+++ b/src/server/net.c
@@ -309,6 +309,11 @@ static inline bool translate_iscsi_to_dndb3( dnbd3_client_t *client, struct iscs
request->size = ( req->cdb[7] << 8 | req->cdb[8] ) * 512;
request->offset = ( (uint64_t)req->cdb[2] << 24 | (uint64_t)req->cdb[3] << 16 | (uint64_t)req->cdb[4] << 8 | (uint64_t)req->cdb[5] ) * 512;
return true;
+ case SPDK_SBC_READ_16:
+ request->cmd = CMD_GET_BLOCK;
+ request->size = ( req->cdb[10] << 24 | req->cdb[11] << 16 | req->cdb[12] << 8 | req->cdb[13] ) * 512;
+ request->offset = ( (uint64_t)req->cdb[2] << 56 | (uint64_t)req->cdb[3] << 48 | (uint64_t)req->cdb[4] << 40 | (uint64_t)req->cdb[5] << 32 | (uint64_t)req->cdb[6] << 24 | (uint64_t)req->cdb[7] << 16 | (uint64_t)req->cdb[8] << 8 | (uint64_t)req->cdb[9] ) * 512;
+ return true;
}
logadd( LOG_WARNING, "Unsupported SCSI command 0x%02x 0x%02x received from iSCSI client %s", req->cdb[0], req->cdb[1], client->hostName );
resp.opcode = ISCSI_OP_SCSI_RSP;