From 09896e0ae2684761b52225b132a2ada0b7980ca4 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Fri, 29 Aug 2014 16:41:55 +0300 Subject: [PATCH] Missing vhd type check, log scsi hd emulation. --- hardfile.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/hardfile.cpp b/hardfile.cpp index e611c039..d5dc0baa 100644 --- a/hardfile.cpp +++ b/hardfile.cpp @@ -52,6 +52,8 @@ #define scsi_log write_log #endif +extern int log_scsiemu; + #define MAX_ASYNC_REQUESTS 50 #define ASYNC_REQUEST_NONE 0 #define ASYNC_REQUEST_TEMP 1 @@ -511,10 +513,10 @@ int hdf_open (struct hardfiledata *hfd, const TCHAR *pname) } if (chd_readonly) hfd->ci.readonly = true; - hfd->virtsize = cf->logical_bytes (); + hfd->virtsize = cf->logical_bytes(); hfd->handle_valid = -1; write_log(_T("CHD '%s' mounted as %s, %s.\n"), pname, chdf ? _T("HD") : _T("OTHER"), hfd->ci.readonly ? _T("read only") : _T("read/write")); - goto nonvhd; + return 1; } } #endif @@ -573,6 +575,7 @@ int hdf_open (struct hardfiledata *hfd, const TCHAR *pname) hdf_init_cache (hfd); return 1; nonvhd: + hfd->hfd_type = 0; return 1; end: hdf_close_target (hfd); @@ -1200,6 +1203,13 @@ int scsi_hd_emulate (struct hardfiledata *hfd, struct hd_hardfiledata *hdhfd, ua int i, lun; char *ss; + if (log_scsiemu) { + write_log (_T("SCSIEMU HD %d: %02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X.%02X CMDLEN=%d DATA=%p\n"), hfd->unitnum, + cmdbuf[0], cmdbuf[1], cmdbuf[2], cmdbuf[3], cmdbuf[4], cmdbuf[5], cmdbuf[6], + cmdbuf[7], cmdbuf[8], cmdbuf[9], cmdbuf[10], cmdbuf[11], + scsi_cmd_len, scsi_data); + } + *reply_len = *sense_len = 0; lun = cmdbuf[1] >> 5; if (cmdbuf[0] != 0x03 && cmdbuf[0] != 0x12 && lun) { @@ -1555,6 +1565,14 @@ miscompare: ls = 0x12; break; } + + if (log_scsiemu && ls) { + write_log (_T("-> SENSE STATUS: KEY=%d ASC=%02X ASCQ=%02X\n"), s[2], s[12], s[13]); + } + + if (cmdbuf[0] && log_scsiemu) + write_log (_T("-> DATAOUT=%d ST=%d SENSELEN=%d REPLYLEN=%d\n"), scsi_len, status, ls, lr); + *data_len = scsi_len; *reply_len = lr; *sense_len = ls; -- 2.47.3