Features/LegacyRemoval: Difference between revisions

From QEMU
(Add some more legacy options)
m (Update URLs)
 
(22 intermediate revisions by 5 users not shown)
Line 1: Line 1:
=== Problem description ===
QEMU has a lot of interfaces (like command line options or HMP commands) and old features (like certain machine types) which are considered as deprecated since other more generic interfaces/features have been established instead. We cannot carry the old code around forever. But we also do not want to remove it immediately to give the users and upper layer software stacks (like libvirt) a chance to migrate to the new interfaces step by step.


QEMU has a lot of interfaces (like command line options or HMP commands) and old features (like certain machine types) which are considered as deprecated since other more generic interfaces/features have been established instead. We likely don't want to carry the old code around forever. But we also do not want to remove it immediately to give the users and upper layer software stacks (like libvirt) a chance to migrate to the new interfaces step by step. So this page is about collecting information and ideas about which interfaces/features are considered as obsolete and when they should be removed.
This page was used to gather ideas about such deprecated features and interfaces, which finally culminated in the official deprecation chapter of the QEMU documentation. Since this page here was quickly out of date afterwards, its content has been removed now. Please visit https://qemu-project.gitlab.io/qemu/about/deprecated.html for the current official list instead.


=== Rules for removing an interface ===
For information about features that have already been removed, please consult the https://qemu-project.gitlab.io/qemu/about/removed-features.html page.
 
Before an interface can be removed, there needs to be a clear transition plan for doing so. This means it should be added to this wiki page, and that there have to be at least two public releases of QEMU where the interface still works, but issues a warning when used. Two public releases are required so that the users have at least one development cycle to complain if they think that there is a good reason that the interface should <em>not</em> be removed. The warning should say that the interface is deprecated / going away soon, with a pointer to documentation or similar information about its replacement syntax.
 
== Deprecated command line parameters ==
 
{| class="wikitable" border="1"
!  Parameter
!  Rationale
!  Deprecated in
!  Removal in
|-
| -net channel
| Replaced by "-netdev user,guestfwd=..."
(and is even not documented, i.e. hardly used in the wild)
| v2.6.0
| v3.0.0
|-
| -net dump
| Replaced by "-object filter-dump,..."
| v2.10.0
| v3.0.0
|-
| -smb
| Replaced by "-netdev user,smb=..."
| v2.6.0
| v3.0.0
|-
| -tftp
| Replaced by "-netdev user,tftp=..."
| v2.6.0
| v3.0.0
|-
| -bootp
| Replaced by "-netdev user,bootfile=..."
| v2.6.0
| v3.0.0
|-
| -redir
| Replaced by "-netdev user,hostfwd=..."
| v2.6.0
| v3.0.0
|-
| -hdachs
| Replaced by options on "-device"
| v2.10.0
| v3.0.0
|-
| -drive&nbsp;boot=
| Dummy legacy option from qemu-kvm
| v1.3.0
| v3.0.0
|-
| -no-kvm-pit
| Dummy legacy option from qemu-kvm
| v1.3.0
| v3.0.0
|-
| -no-kvm-pit-reinjection
| Legacy option from qemu-kvm
| v1.3.0
| v3.0.0
|-
| -tdf
| Dummy legacy option from qemu-kvm
| v1.3.0
| v3.0.0
|-
| -drive&nbsp;media=<br>-drive&nbsp;serial=<br>-drive&nbsp;trans=<br>-drive&nbsp;secs=<br>-drive&nbsp;heads=<br>-drive&nbsp;cyls=<br>-drive&nbsp;addr=
| Replaced by options on "-device".
| up to v1.2.0
| v3.0.0 ?
|-
| -no-kvm
| Not necessary anymore, TCG is default
| not yet
| ?
|}
 
=== Future candidates ===
 
{| class="wikitable" border="1"
!  Parameter
!  Rationale
!  Deprecated in
!  Removal in
|-
| -net
| Replaced by "-netdev id=netdev0 -device e1000,netdev=netdev0".  There are several loose ends: what about machine type built-in NICs that use nd_table[]?  Can vlan command-line options be removed in some places?
| not yet
| ?
|-
| -usbdevice
| Replaced by the generic -device parameter
| not yet
| ?
|-
| -drive
| Replaced by "-blockdev" and "-device". Need to check that all devices automatically created by machines are still configurable.
| not yet
| ?
|-
| -enable-kvm
| Use "-M accel=kvm" instead
| not yet
| ?
|-
| -enable-hax
| Use "-M accel=hax" instead
| not yet
| ?
|}
 
== Deprecated qemu-img parameters ==
 
{| class="wikitable" border="1"
!  Parameter
!  Rationale
!  Deprecated in
!  Removal in
|-
| snapshot_id_or_name
| Use snapshot_param instead
| v2.0.0
| ?
|-
| -e
| -o encryption
| v0.14
| v3.0.0 ?
|-
| -6
| -o compat6
| v0.14
| v3.0.0 ?
|}
 
== Deprecated HMP commands ==
 
{| class="wikitable" border="1"
!  Command
!  Rationale
!  Deprecated in
!  Removal in
|-
| usb_add, usb_remove
| Replaced by "device_add" and "device_del"
| not yet
| v3.0.0 ?
|-
| host_net_add, host_net_remove
| Replaced by "netdev_add" and "netdev_del"
| not yet
| v3.0.0 ?
|}
 
=== Future candidates ===
 
{| class="wikitable" border="1"
!  Parameter
!  Rationale
!  Deprecated in
!  Removal in
|-
| migrate_set_downtime, migrate_set_speed
| Replaced by "migrate_set_parameter"
| 2.8
| ?
|}
 
== Deprecated machines ==
 
{| class="wikitable" border="1"
!  Machine
!  Rationale
!  Deprecated in
!  Removal in
|-
| prep (ppc)
| Obsoleted by the "40p" machine
| not yet
| ?
|-
| isapc (x86)
| guests should be able to use "pc" instead (but firmware code paths would be different, do we care?)
| not yet
| ?
|-
| pc-0.10 and pc-0.11
| Oldest QEMU version that is likely still used in the wild is 0.12 (CentOS 6)
| not yet
| ?
|}
 
== Deprecated devices ==
 
{| class="wikitable" border="1"
!  Device
!  Rationale
!  Deprecated in
!  Removal in
|-
| spapr-pci-vfio-host-bridge
| See commit [http://git.qemu-project.org/?p=qemu.git;a=commitdiff;h=72700d7e733948fa7fbb735ccdf2209931c88476 72700d7e733948fa]
| v2.6.0
| ?
|-
| ide-device
| Replaced by "ide-cd" and "ide-hd"
| v0.15.0
| v3.0.0 ?
|-
| scsi-disk
| Replaced by "scsi-cd" and "scsi-hd"
| v0.15.0
| v3.0.0 ?
|-
| isa-vga
| unused when isapc machine type goes away
| not yet
| ?
|-
| isa-cirrus-vga
| unused when isapc machine type goes away
| not yet
| ?
|-
| ne2k_isa
| unused when isapc machine type goes away
| not yet
| ?
|-
|}
 
Alternatively: drop media=cdrom, make ide-hd and scsi-hd synonyms for ide-disk and scsi-disk.
 
== Miscellaneous ==
 
* Should we deprecate support for AIX and Solaris as host OS? (there is no build machine available for those)
* Should we deprecate the ia64 TCG backend?

Latest revision as of 10:45, 4 August 2021

QEMU has a lot of interfaces (like command line options or HMP commands) and old features (like certain machine types) which are considered as deprecated since other more generic interfaces/features have been established instead. We cannot carry the old code around forever. But we also do not want to remove it immediately to give the users and upper layer software stacks (like libvirt) a chance to migrate to the new interfaces step by step.

This page was used to gather ideas about such deprecated features and interfaces, which finally culminated in the official deprecation chapter of the QEMU documentation. Since this page here was quickly out of date afterwards, its content has been removed now. Please visit https://qemu-project.gitlab.io/qemu/about/deprecated.html for the current official list instead.

For information about features that have already been removed, please consult the https://qemu-project.gitlab.io/qemu/about/removed-features.html page.