Revert "block: Remove deprecated -drive option addr"

This reverts commit eae3bd1eb7.

Reverted to avoid conflicts for geometry options revert.

Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Cornelia Huck 2018-07-06 15:06:19 +02:00 committed by Kevin Wolf
parent 44e8b4689c
commit 75f4cd2979
5 changed files with 30 additions and 2 deletions

View File

@ -730,6 +730,10 @@ QemuOptsList qemu_legacy_drive_opts = {
.name = "if", .name = "if",
.type = QEMU_OPT_STRING, .type = QEMU_OPT_STRING,
.help = "interface (ide, scsi, sd, mtd, floppy, pflash, virtio)", .help = "interface (ide, scsi, sd, mtd, floppy, pflash, virtio)",
},{
.name = "addr",
.type = QEMU_OPT_STRING,
.help = "pci address (virtio only)",
},{ },{
.name = "serial", .name = "serial",
.type = QEMU_OPT_STRING, .type = QEMU_OPT_STRING,
@ -773,6 +777,7 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type)
DriveMediaType media = MEDIA_DISK; DriveMediaType media = MEDIA_DISK;
BlockInterfaceType type; BlockInterfaceType type;
int max_devs, bus_id, unit_id, index; int max_devs, bus_id, unit_id, index;
const char *devaddr;
const char *werror, *rerror; const char *werror, *rerror;
bool read_only = false; bool read_only = false;
bool copy_on_read; bool copy_on_read;
@ -781,7 +786,7 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type)
Error *local_err = NULL; Error *local_err = NULL;
int i; int i;
const char *deprecated[] = { const char *deprecated[] = {
"serial" "serial", "addr"
}; };
/* Change legacy command line options into QMP ones */ /* Change legacy command line options into QMP ones */
@ -971,6 +976,12 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type)
} }
/* Add virtio block device */ /* Add virtio block device */
devaddr = qemu_opt_get(legacy_opts, "addr");
if (devaddr && type != IF_VIRTIO) {
error_report("addr is not supported by this bus type");
goto fail;
}
if (type == IF_VIRTIO) { if (type == IF_VIRTIO) {
QemuOpts *devopts; QemuOpts *devopts;
devopts = qemu_opts_create(qemu_find_opts("device"), NULL, 0, devopts = qemu_opts_create(qemu_find_opts("device"), NULL, 0,
@ -982,6 +993,9 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type)
} }
qemu_opt_set(devopts, "drive", qdict_get_str(bs_opts, "id"), qemu_opt_set(devopts, "drive", qdict_get_str(bs_opts, "id"),
&error_abort); &error_abort);
if (devaddr) {
qemu_opt_set(devopts, "addr", devaddr, &error_abort);
}
} }
filename = qemu_opt_get(legacy_opts, "file"); filename = qemu_opt_get(legacy_opts, "file");
@ -1026,6 +1040,7 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type)
dinfo->type = type; dinfo->type = type;
dinfo->bus = bus_id; dinfo->bus = bus_id;
dinfo->unit = unit_id; dinfo->unit = unit_id;
dinfo->devaddr = devaddr;
dinfo->serial = g_strdup(serial); dinfo->serial = g_strdup(serial);
blk_set_legacy_dinfo(blk, dinfo); blk_set_legacy_dinfo(blk, dinfo);

View File

@ -69,6 +69,10 @@ void hmp_drive_add(Monitor *mon, const QDict *qdict)
if (!dinfo) { if (!dinfo) {
goto err; goto err;
} }
if (dinfo->devaddr) {
monitor_printf(mon, "Parameter addr not supported\n");
goto err;
}
switch (dinfo->type) { switch (dinfo->type) {
case IF_NONE: case IF_NONE:

View File

@ -28,6 +28,7 @@ typedef enum {
} BlockInterfaceType; } BlockInterfaceType;
struct DriveInfo { struct DriveInfo {
const char *devaddr;
BlockInterfaceType type; BlockInterfaceType type;
int bus; int bus;
int unit; int unit;

View File

@ -2892,6 +2892,11 @@ provided per NIC.
The drive serial argument is replaced by the the serial argument The drive serial argument is replaced by the the serial argument
that can be specified with the ``-device'' parameter. that can be specified with the ``-device'' parameter.
@subsection -drive addr=... (since 2.10.0)
The drive addr argument is replaced by the the addr argument
that can be specified with the ``-device'' parameter.
@subsection -usbdevice (since 2.10.0) @subsection -usbdevice (since 2.10.0)
The ``-usbdevice DEV'' argument is now a synonym for setting The ``-usbdevice DEV'' argument is now a synonym for setting

View File

@ -805,7 +805,7 @@ ETEXI
DEF("drive", HAS_ARG, QEMU_OPTION_drive, DEF("drive", HAS_ARG, QEMU_OPTION_drive,
"-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]\n" "-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]\n"
" [,cache=writethrough|writeback|none|directsync|unsafe][,format=f]\n" " [,cache=writethrough|writeback|none|directsync|unsafe][,format=f]\n"
" [,snapshot=on|off][,serial=s][,rerror=ignore|stop|report]\n" " [,snapshot=on|off][,serial=s][,addr=A][,rerror=ignore|stop|report]\n"
" [,werror=ignore|stop|report|enospc][,id=name][,aio=threads|native]\n" " [,werror=ignore|stop|report|enospc][,id=name][,aio=threads|native]\n"
" [,readonly=on|off][,copy-on-read=on|off]\n" " [,readonly=on|off][,copy-on-read=on|off]\n"
" [,discard=ignore|unmap][,detect-zeroes=on|off|unmap]\n" " [,discard=ignore|unmap][,detect-zeroes=on|off|unmap]\n"
@ -883,6 +883,9 @@ an untrusted format header.
This option specifies the serial number to assign to the device. This This option specifies the serial number to assign to the device. This
parameter is deprecated, use the corresponding parameter of @code{-device} parameter is deprecated, use the corresponding parameter of @code{-device}
instead. instead.
@item addr=@var{addr}
Specify the controller's PCI address (if=virtio only). This parameter is
deprecated, use the corresponding parameter of @code{-device} instead.
@item werror=@var{action},rerror=@var{action} @item werror=@var{action},rerror=@var{action}
Specify which @var{action} to take on write and read errors. Valid actions are: Specify which @var{action} to take on write and read errors. Valid actions are:
"ignore" (ignore the error and try to continue), "stop" (pause QEMU), "ignore" (ignore the error and try to continue), "stop" (pause QEMU),