Revision 7d8406be hw/scsi-disk.c

b/hw/scsi-disk.c
245 245
        s->buf_len = 4;
246 246
        break;
247 247
    case 0x12:
248
	DPRINTF("Inquiry (len %d)\n", len);
248
        DPRINTF("Inquiry (len %d)\n", len);
249 249
        if (len < 36) {
250 250
            BADF("Inquiry buffer too small (%d)\n", len);
251 251
        }
......
253 253
	if (bdrv_get_type_hint(s->bdrv) == BDRV_TYPE_CDROM) {
254 254
	    s->buf[0] = 5;
255 255
            s->buf[1] = 0x80;
256
	    memcpy(&s->buf[16], "QEMU CDROM     ", 16);
256
	    memcpy(&s->buf[16], "QEMU CD-ROM    ", 16);
257 257
	} else {
258 258
	    s->buf[0] = 0;
259 259
	    memcpy(&s->buf[16], "QEMU HARDDISK  ", 16);
260 260
	}
261 261
	memcpy(&s->buf[8], "QEMU   ", 8);
262
        memcpy(&s->buf[32], QEMU_VERSION, 4);
262 263
	s->buf[2] = 3; /* SCSI-3 */
263 264
	s->buf[3] = 2; /* Format 2 */
264 265
	s->buf[4] = 32;
......
275 276
            goto fail;
276 277
        break;
277 278
    case 0x1a:
278
	DPRINTF("Mode Sense(6) (page %d, len %d)\n", buf[2], len);
279
        memset(s->buf, 0, 4);
280
        s->buf[0] = 0x16; /* Mode data length (4 + 0x12).  */
281
        s->buf[1] = 0; /* Default media type.  */
282
        s->buf[2] = 0; /* Write enabled.  */
283
        s->buf[3] = 0; /* Block descriptor length.  */
284
        /* Caching page.  */
285
        s->buf[4 + 0] = 8;
286
        s->buf[4 + 1] = 0x12;
287
        s->buf[4 + 2] = 4; /* WCE */
288
        if (len > 0x16)
289
            len = 0x16;
279
    case 0x5a:
280
	DPRINTF("Mode Sense (page %d, len %d)\n", buf[2], len);
281
        if (bdrv_get_type_hint(s->bdrv) == BDRV_TYPE_CDROM) {
282
            memset(s->buf, 0, 4);
283
            s->buf[0] = 4; /* Mode data length.  */
284
            s->buf[1] = 0; /* Default media type.  */
285
            s->buf[2] = 0x80; /* Readonly.  */
286
            s->buf[3] = 0; /* Block descriptor length.  */
287
        } else {
288
            memset(s->buf, 0, 0x16);
289
            s->buf[0] = 0x16; /* Mode data length (4 + 0x12).  */
290
            s->buf[1] = 0; /* Default media type.  */
291
            s->buf[2] = 0; /* Write enabled.  */
292
            s->buf[3] = 0; /* Block descriptor length.  */
293
            /* Caching page.  */
294
            s->buf[4 + 0] = 8;
295
            s->buf[4 + 1] = 0x12;
296
            s->buf[4 + 2] = 4; /* WCE */
297
            if (len > 0x16)
298
                len = 0x16;
299
        }
290 300
        s->buf_len = len;
291 301
	break;
292 302
    case 0x25:
......
317 327
        s->sector_count = len * s->cluster_size;
318 328
        is_write = 1;
319 329
        break;
330
    case 0x35:
331
        DPRINTF("Syncronise cache (sector %d, count %d)\n", lba, len);
332
        /* ??? Extend block layer and use fsync to implement this.  */
333
        break;
320 334
    case 0x43:
321 335
        {
322 336
            int start_track, format, msf, toclen;

Also available in: Unified diff