Revision f8b6cc00 hw/usb-msd.c
b/hw/usb-msd.c | ||
---|---|---|
522 | 522 |
static int usb_msd_initfn(USBDevice *dev) |
523 | 523 |
{ |
524 | 524 |
MSDState *s = DO_UPCAST(MSDState, dev, dev); |
525 |
DriveInfo *dinfo = s->conf.dinfo;
|
|
525 |
BlockDriverState *bs = s->conf.bs;
|
|
526 | 526 |
|
527 |
if (!dinfo || !dinfo->bdrv) {
|
|
527 |
if (!bs) {
|
|
528 | 528 |
error_report("usb-msd: drive property not set"); |
529 | 529 |
return -1; |
530 | 530 |
} |
... | ... | |
538 | 538 |
* |
539 | 539 |
* The hack is probably a bad idea. |
540 | 540 |
*/ |
541 |
s->conf.dinfo = NULL;
|
|
541 |
s->conf.bs = NULL;
|
|
542 | 542 |
|
543 | 543 |
s->dev.speed = USB_SPEED_FULL; |
544 | 544 |
scsi_bus_new(&s->bus, &s->dev.qdev, 0, 1, usb_msd_command_complete); |
545 |
s->scsi_dev = scsi_bus_legacy_add_drive(&s->bus, dinfo, 0);
|
|
545 |
s->scsi_dev = scsi_bus_legacy_add_drive(&s->bus, bs, 0);
|
|
546 | 546 |
if (!s->scsi_dev) { |
547 | 547 |
return -1; |
548 | 548 |
} |
549 | 549 |
s->bus.qbus.allow_hotplug = 0; |
550 | 550 |
usb_msd_handle_reset(dev); |
551 | 551 |
|
552 |
if (bdrv_key_required(dinfo->bdrv)) {
|
|
552 |
if (bdrv_key_required(bs)) {
|
|
553 | 553 |
if (cur_mon) { |
554 |
monitor_read_bdrv_key_start(cur_mon, dinfo->bdrv, |
|
555 |
usb_msd_password_cb, s); |
|
554 |
monitor_read_bdrv_key_start(cur_mon, bs, usb_msd_password_cb, s); |
|
556 | 555 |
s->dev.auto_attach = 0; |
557 | 556 |
} else { |
558 | 557 |
autostart = 0; |
... | ... | |
610 | 609 |
if (!dev) { |
611 | 610 |
return NULL; |
612 | 611 |
} |
613 |
qdev_prop_set_drive(&dev->qdev, "drive", dinfo); |
|
612 |
qdev_prop_set_drive(&dev->qdev, "drive", dinfo->bdrv);
|
|
614 | 613 |
if (qdev_init(&dev->qdev) < 0) |
615 | 614 |
return NULL; |
616 | 615 |
|
Also available in: Unified diff