diff --git a/tools/virsh.c b/tools/virsh.c index 8c123bb689e06ca8f79ca386c6f895425c34e52a..55e2a688ea04cf7e71697e93326a197fde02ebcf 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -8293,6 +8293,7 @@ static const vshCmdOptDef opts_update_device[] = { {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or uuid")}, {"file", VSH_OT_DATA, VSH_OFLAG_REQ, N_("XML file")}, {"persistent", VSH_OT_BOOL, 0, N_("persist device update")}, + {"force", VSH_OT_BOOL, 0, N_("force device update")}, {NULL, 0, 0, NULL} }; @@ -8331,6 +8332,10 @@ cmdUpdateDevice(vshControl *ctl, const vshCmd *cmd) } else { flags = VIR_DOMAIN_DEVICE_MODIFY_LIVE; } + + if (vshCommandOptBool(cmd, "force")) + flags |= VIR_DOMAIN_DEVICE_MODIFY_FORCE; + ret = virDomainUpdateDeviceFlags(dom, buffer, flags); VIR_FREE(buffer); diff --git a/tools/virsh.pod b/tools/virsh.pod index 9cb6829738a6f28766de5d54adbc302f06d605e4..9c45a6119932cede76449536b77d7914fc3458a5 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -731,12 +731,14 @@ I can be either I to indicate a physical network device or I option to distinguish between the interfaces if more than one are present on the domain. -=item B I I optional I<--persistent> - -Update the characteristics of a device associated with I, -based on the device definition in an XML I. If the I<--persistent> -option is used, the changes will affect the next boot of the domain. -See the documentation to learn about libvirt XML format for a device. +=item B I I optional I<--persistent> I<--force> + +Update the characteristics of a device associated with I, based on +the device definition in an XML I. If the I<--persistent> option is +used, the changes will affect the next boot of the domain. The I<--force> +option can be used to force device update, e.g., to eject a CD-ROM even if it +is locked/mounted in the domain. See the documentation to learn about libvirt +XML format for a device. =back