~ubuntu-branches/ubuntu/vivid/qemu/vivid

« back to all changes in this revision

Viewing changes to hw/scsi/scsi-bus.c

  • Committer: Package Import Robot
  • Author(s): Serge Hallyn
  • Date: 2014-02-25 22:31:43 UTC
  • mfrom: (1.8.5)
  • Revision ID: package-import@ubuntu.com-20140225223143-odhqxfc60wxrjl15
Tags: 2.0.0~rc1+dfsg-0ubuntu1
* Merge 2.0.0-rc1
* debian/rules: consolidate ppc filter entries.
* Move qemu-system-arch64 into qemu-system-arm
* debian/patches/define-trusty-machine-type.patch: define a trusty machine
  type, currently the same as pc-i440fx-2.0, to put is in a better position
  to enable live migrations from trusty onward.  (LP: #1294823)
* debian/control: build-dep on libfdt >= 1.4.0  (LP: #1295072)
* Merge latest upstream git to commit dc9528f
* Debian/rules:
  - remove -enable-uname-release=2.6.32
  - don't make the aarch64 target Ubuntu-specific.
* Remove patches which are now upstream:
  - fix-smb-security-share.patch
  - slirp-smb-redirect-port-445-too.patch 
  - linux-user-Implement-sendmmsg-syscall.patch (better version is upstream)
  - signal-added-a-wrapper-for-sigprocmask-function.patch
  - ubuntu/signal-sigsegv-protection-on-do_sigprocmask.patch
  - ubuntu/Don-t-block-SIGSEGV-at-more-places.patch
  - ubuntu/ppc-force-cpu-threads-count-to-be-power-of-2.patch
* add link for /usr/share/qemu/bios-256k.bin
* Remove all linaro patches.
* Remove all arm64/ patches.  Many but not all are upstream.
* Remove CVE-2013-4377.patch which is upstream.
* debian/control-in: don't make qemu-system-aarch64 ubuntu-specific

Show diffs side-by-side

added added

removed removed

Lines of Context:
101
101
                scsi_req_continue(req);
102
102
                break;
103
103
            case SCSI_XFER_NONE:
104
 
                assert(!req->sg);
105
104
                scsi_req_dequeue(req);
106
105
                scsi_req_enqueue(req);
107
106
                break;
469
468
            r->req.dev->sense_is_ua = false;
470
469
        }
471
470
        break;
 
471
    case TEST_UNIT_READY:
 
472
        break;
472
473
    default:
473
474
        scsi_req_build_sense(req, SENSE_CODE(LUN_NOT_SUPPORTED));
474
475
        scsi_req_complete(req, CHECK_CONDITION);
886
887
    case RELEASE:
887
888
    case ERASE:
888
889
    case ALLOW_MEDIUM_REMOVAL:
889
 
    case VERIFY_10:
890
890
    case SEEK_10:
891
891
    case SYNCHRONIZE_CACHE:
892
892
    case SYNCHRONIZE_CACHE_16:
903
903
    case ALLOW_OVERWRITE:
904
904
        cmd->xfer = 0;
905
905
        break;
 
906
    case VERIFY_10:
 
907
    case VERIFY_12:
 
908
    case VERIFY_16:
 
909
        if ((buf[1] & 2) == 0) {
 
910
            cmd->xfer = 0;
 
911
        } else if ((buf[1] & 4) != 0) {
 
912
            cmd->xfer = 1;
 
913
        }
 
914
        cmd->xfer *= dev->blocksize;
 
915
        break;
906
916
    case MODE_SENSE:
907
917
        break;
908
918
    case WRITE_SAME_10:
1100
1110
    case WRITE_VERIFY_12:
1101
1111
    case WRITE_16:
1102
1112
    case WRITE_VERIFY_16:
 
1113
    case VERIFY_10:
 
1114
    case VERIFY_12:
 
1115
    case VERIFY_16:
1103
1116
    case COPY:
1104
1117
    case COPY_VERIFY:
1105
1118
    case COMPARE:
1293
1306
    .key = ILLEGAL_REQUEST, .asc = 0x53, .ascq = 0x02
1294
1307
};
1295
1308
 
 
1309
/* Illegal request, Invalid Transfer Tag */
 
1310
const struct SCSISense sense_code_INVALID_TAG = {
 
1311
    .key = ILLEGAL_REQUEST, .asc = 0x4b, .ascq = 0x01
 
1312
};
 
1313
 
1296
1314
/* Command aborted, I/O process terminated */
1297
1315
const struct SCSISense sense_code_IO_ERROR = {
1298
1316
    .key = ABORTED_COMMAND, .asc = 0x00, .ascq = 0x06
1308
1326
    .key = ABORTED_COMMAND, .asc = 0x3e, .ascq = 0x01
1309
1327
};
1310
1328
 
 
1329
/* Command aborted, Overlapped Commands Attempted */
 
1330
const struct SCSISense sense_code_OVERLAPPED_COMMANDS = {
 
1331
    .key = ABORTED_COMMAND, .asc = 0x4e, .ascq = 0x00
 
1332
};
 
1333
 
1311
1334
/* Unit attention, Capacity data has changed */
1312
1335
const struct SCSISense sense_code_CAPACITY_CHANGED = {
1313
1336
    .key = UNIT_ATTENTION, .asc = 0x2a, .ascq = 0x09
1343
1366
    .key = DATA_PROTECT, .asc = 0x27, .ascq = 0x00
1344
1367
};
1345
1368
 
 
1369
/* Data Protection, Space Allocation Failed Write Protect */
 
1370
const struct SCSISense sense_code_SPACE_ALLOC_FAILED = {
 
1371
    .key = DATA_PROTECT, .asc = 0x27, .ascq = 0x07
 
1372
};
 
1373
 
1346
1374
/*
1347
1375
 * scsi_build_sense
1348
1376
 *
1876
1904
    .put  = put_scsi_requests,
1877
1905
};
1878
1906
 
 
1907
static bool scsi_sense_state_needed(void *opaque)
 
1908
{
 
1909
    SCSIDevice *s = opaque;
 
1910
 
 
1911
    return s->sense_len > SCSI_SENSE_BUF_SIZE_OLD;
 
1912
}
 
1913
 
 
1914
static const VMStateDescription vmstate_scsi_sense_state = {
 
1915
    .name = "SCSIDevice/sense",
 
1916
    .version_id = 1,
 
1917
    .minimum_version_id = 1,
 
1918
    .minimum_version_id_old = 1,
 
1919
    .fields      = (VMStateField []) {
 
1920
        VMSTATE_UINT8_SUB_ARRAY(sense, SCSIDevice,
 
1921
                                SCSI_SENSE_BUF_SIZE_OLD,
 
1922
                                SCSI_SENSE_BUF_SIZE - SCSI_SENSE_BUF_SIZE_OLD),
 
1923
        VMSTATE_END_OF_LIST()
 
1924
    }
 
1925
};
 
1926
 
1879
1927
const VMStateDescription vmstate_scsi_device = {
1880
1928
    .name = "SCSIDevice",
1881
1929
    .version_id = 1,
1886
1934
        VMSTATE_UINT8(unit_attention.asc, SCSIDevice),
1887
1935
        VMSTATE_UINT8(unit_attention.ascq, SCSIDevice),
1888
1936
        VMSTATE_BOOL(sense_is_ua, SCSIDevice),
1889
 
        VMSTATE_UINT8_ARRAY(sense, SCSIDevice, SCSI_SENSE_BUF_SIZE),
 
1937
        VMSTATE_UINT8_SUB_ARRAY(sense, SCSIDevice, 0, SCSI_SENSE_BUF_SIZE_OLD),
1890
1938
        VMSTATE_UINT32(sense_len, SCSIDevice),
1891
1939
        {
1892
1940
            .name         = "requests",
1898
1946
            .offset       = 0,
1899
1947
        },
1900
1948
        VMSTATE_END_OF_LIST()
 
1949
    },
 
1950
    .subsections = (VMStateSubsection []) {
 
1951
        {
 
1952
            .vmsd = &vmstate_scsi_sense_state,
 
1953
            .needed = scsi_sense_state_needed,
 
1954
        }, {
 
1955
            /* empty */
 
1956
        }
1901
1957
    }
1902
1958
};
1903
1959