Revision ebef0bbb
b/hw/scsi-disk.c | ||
---|---|---|
892 | 892 |
break; |
893 | 893 |
case VERIFY: |
894 | 894 |
break; |
895 |
case REZERO_UNIT: |
|
896 |
DPRINTF("Rezero Unit\n"); |
|
897 |
if (!bdrv_is_inserted(s->bs)) { |
|
898 |
goto not_ready; |
|
899 |
} |
|
900 |
break; |
|
895 | 901 |
default: |
896 | 902 |
goto illegal_request; |
897 | 903 |
} |
... | ... | |
1011 | 1017 |
case SERVICE_ACTION_IN: |
1012 | 1018 |
case REPORT_LUNS: |
1013 | 1019 |
case VERIFY: |
1020 |
case REZERO_UNIT: |
|
1014 | 1021 |
rc = scsi_disk_emulate_command(&r->req, outbuf); |
1015 | 1022 |
if (rc > 0) { |
1016 | 1023 |
r->iov.iov_len = rc; |
... | ... | |
1034 | 1041 |
case WRITE_10: |
1035 | 1042 |
case WRITE_12: |
1036 | 1043 |
case WRITE_16: |
1037 |
DPRINTF("Write (sector %" PRId64 ", count %d)\n", lba, len); |
|
1044 |
case WRITE_VERIFY: |
|
1045 |
case WRITE_VERIFY_12: |
|
1046 |
case WRITE_VERIFY_16: |
|
1047 |
DPRINTF("Write %s(sector %" PRId64 ", count %d)\n", |
|
1048 |
(command & 0xe) == 0xe ? "And Verify " : "", lba, len); |
|
1038 | 1049 |
if (lba > s->max_lba) |
1039 | 1050 |
goto illegal_lba; |
1040 | 1051 |
r->sector = lba * s->cluster_size; |
1041 | 1052 |
r->sector_count = len * s->cluster_size; |
1042 | 1053 |
is_write = 1; |
1043 | 1054 |
break; |
1055 |
case MODE_SELECT: |
|
1056 |
DPRINTF("Mode Select(6) (len %d)\n", len); |
|
1057 |
/* We don't support mode parameter changes. |
|
1058 |
Allow the mode parameter header + block descriptors only. */ |
|
1059 |
if (len > 12) { |
|
1060 |
goto fail; |
|
1061 |
} |
|
1062 |
break; |
|
1063 |
case MODE_SELECT_10: |
|
1064 |
DPRINTF("Mode Select(10) (len %d)\n", len); |
|
1065 |
/* We don't support mode parameter changes. |
|
1066 |
Allow the mode parameter header + block descriptors only. */ |
|
1067 |
if (len > 16) { |
|
1068 |
goto fail; |
|
1069 |
} |
|
1070 |
break; |
|
1071 |
case SEEK_6: |
|
1072 |
case SEEK_10: |
|
1073 |
DPRINTF("Seek(%d) (sector %" PRId64 ")\n", command == SEEK_6 ? 6 : 10, lba); |
|
1074 |
if (lba > s->max_lba) { |
|
1075 |
goto illegal_lba; |
|
1076 |
} |
|
1077 |
break; |
|
1044 | 1078 |
default: |
1045 | 1079 |
DPRINTF("Unknown SCSI command (%2.2x)\n", buf[0]); |
1046 | 1080 |
fail: |
Also available in: Unified diff