From a6832beba45b3e69c51f46eafee549d9ed9c6059 Mon Sep 17 00:00:00 2001 From: Vladislav Bolkhovitin Date: Wed, 30 Apr 2014 01:04:27 +0000 Subject: [PATCH] Extended INQUIRY page added git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@5496 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- scst/src/dev_handlers/scst_vdisk.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/scst/src/dev_handlers/scst_vdisk.c b/scst/src/dev_handlers/scst_vdisk.c index d8c3dd36f..0e101c721 100644 --- a/scst/src/dev_handlers/scst_vdisk.c +++ b/scst/src/dev_handlers/scst_vdisk.c @@ -3215,17 +3215,18 @@ static enum compl_status_e vdisk_exec_inquiry(struct vdisk_cmd_params *p) if (cmd->cdb[1] & EVPD) { if (0 == cmd->cdb[2]) { /* supported vital product data pages */ - buf[3] = 3; + buf[3] = 4; buf[4] = 0x0; /* this page */ buf[5] = 0x80; /* unit serial number */ buf[6] = 0x83; /* device identification */ + buf[7] = 0x86; /* extended inquiry */ if (dev->type == TYPE_DISK) { buf[3] += 2; - buf[7] = 0xB0; /* block limits */ - buf[8] = 0xB1; /* block limits */ + buf[8] = 0xB0; /* block limits */ + buf[9] = 0xB1; /* block device charachteristics */ if (virt_dev->thin_provisioned) { buf[3] += 1; - buf[9] = 0xB2; /* thin provisioning */ + buf[10] = 0xB2; /* thin provisioning */ } } resp_len = buf[3] + 4; @@ -3336,6 +3337,14 @@ static enum compl_status_e vdisk_exec_inquiry(struct vdisk_cmd_params *p) resp_len = num; put_unaligned_be16(resp_len, &buf[2]); resp_len += 4; + } else if (0x86 == cmd->cdb[2]) { + /* Extended INQUIRY */ + buf[1] = 0x86; + buf[3] = 0x3C; + buf[5] = 7; /* HEADSUP=1, ORDSUP=1, SIMPSUP=1 */ + buf[6] = (virt_dev->wt_flag || virt_dev->nv_cache) ? 0 : 1; /* V_SUP */ + buf[7] = 1; /* LUICLR=1 */ + resp_len = buf[3] + 4; } else if ((0xB0 == cmd->cdb[2]) && (dev->type == TYPE_DISK)) { /* Block Limits */ int max_transfer;