diff mbox series

[v2,2/4] net: Deprecate the "name" parameter of -net

Message ID 1537433416-4262-3-git-send-email-thuth@redhat.com (mailing list archive)
State New, archived
Headers show
Series Deprecation patches net and enforce-config-section | expand

Commit Message

Thomas Huth Sept. 20, 2018, 8:50 a.m. UTC
In early times, network backends were specified by a "vlan" and "name"
tuple. With the introduction of netdevs, the "name" was replaced by an
"id" (which is supposed to be unique), but the "name" parameter stayed
as an alias which could be used instead of "id". Unfortunately, we miss
the duplication check for "name":

 $ qemu-system-x86_64 -net user,name=n1 -net user,name=n1

... starts without an error, while "id" correctly complains:

 $ qemu-system-x86_64 -net user,id=n1 -net user,id=n1
 qemu-system-x86_64: -net user,id=n1: Duplicate ID 'n1' for net

Instead of trying to fix the code for the legacy "name" parameter, let's
rather get rid of this old interface and deprecate the "name" parameter
now - this will also be less confusing for the users in the long run.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 net/net.c            | 4 ++++
 qemu-deprecated.texi | 5 +++++
 2 files changed, 9 insertions(+)

Comments

Philippe Mathieu-Daudé Sept. 20, 2018, 10:14 a.m. UTC | #1
On 9/20/18 10:50 AM, Thomas Huth wrote:
>  In early times, network backends were specified by a "vlan" and "name"
> tuple. With the introduction of netdevs, the "name" was replaced by an
> "id" (which is supposed to be unique), but the "name" parameter stayed
> as an alias which could be used instead of "id". Unfortunately, we miss
> the duplication check for "name":
> 
>  $ qemu-system-x86_64 -net user,name=n1 -net user,name=n1
> 
> ... starts without an error, while "id" correctly complains:
> 
>  $ qemu-system-x86_64 -net user,id=n1 -net user,id=n1
>  qemu-system-x86_64: -net user,id=n1: Duplicate ID 'n1' for net
> 
> Instead of trying to fix the code for the legacy "name" parameter, let's
> rather get rid of this old interface and deprecate the "name" parameter
> now - this will also be less confusing for the users in the long run.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  net/net.c            | 4 ++++
>  qemu-deprecated.texi | 5 +++++
>  2 files changed, 9 insertions(+)
> 
> diff --git a/net/net.c b/net/net.c
> index 2a31339..cdcd5cf 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -984,6 +984,10 @@ static int net_client_init1(const void *object, bool is_netdev, Error **errp)
>          /* missing optional values have been initialized to "all bits zero" */
>          name = net->has_id ? net->id : net->name;
>  
> +        if (net->has_name) {
> +            warn_report("The 'name' parameter is deprecated, use 'id' instead");
> +        }
> +
>          /* Map the old options to the new flat type */
>          switch (opts->type) {
>          case NET_LEGACY_OPTIONS_TYPE_NONE:
> diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
> index 8a2e399..60fd7f7 100644
> --- a/qemu-deprecated.texi
> +++ b/qemu-deprecated.texi
> @@ -83,6 +83,11 @@ The 'file' driver for drives is no longer appropriate for character or host
>  devices and will only accept regular files (S_IFREG). The correct driver
>  for these file types is 'host_cdrom' or 'host_device' as appropriate.
>  
> +@subsection -net ...,name=@var{name} (since 3.1)
> +
> +The @option{name} parameter of the @option{-net} option is a synonym
> +for the @option{id} parameter, which should now be used instead.
> +
>  @section QEMU Machine Protocol (QMP) commands
>  
>  @subsection block-dirty-bitmap-add "autoload" parameter (since 2.12.0)
>
Markus Armbruster Sept. 20, 2018, 6:15 p.m. UTC | #2
Thomas Huth <thuth@redhat.com> writes:

>  In early times, network backends were specified by a "vlan" and "name"
> tuple. With the introduction of netdevs, the "name" was replaced by an
> "id" (which is supposed to be unique), but the "name" parameter stayed
> as an alias which could be used instead of "id". Unfortunately, we miss
> the duplication check for "name":
>
>  $ qemu-system-x86_64 -net user,name=n1 -net user,name=n1
>
> ... starts without an error, while "id" correctly complains:
>
>  $ qemu-system-x86_64 -net user,id=n1 -net user,id=n1
>  qemu-system-x86_64: -net user,id=n1: Duplicate ID 'n1' for net
>
> Instead of trying to fix the code for the legacy "name" parameter, let's

Has been that way for a long time without anyone complaining, so leaving
it that way for a little longer is okay.

> rather get rid of this old interface and deprecate the "name" parameter
> now - this will also be less confusing for the users in the long run.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>

Reviewed-by: Markus Armbruster <armbru@redhat.com>
diff mbox series

Patch

diff --git a/net/net.c b/net/net.c
index 2a31339..cdcd5cf 100644
--- a/net/net.c
+++ b/net/net.c
@@ -984,6 +984,10 @@  static int net_client_init1(const void *object, bool is_netdev, Error **errp)
         /* missing optional values have been initialized to "all bits zero" */
         name = net->has_id ? net->id : net->name;
 
+        if (net->has_name) {
+            warn_report("The 'name' parameter is deprecated, use 'id' instead");
+        }
+
         /* Map the old options to the new flat type */
         switch (opts->type) {
         case NET_LEGACY_OPTIONS_TYPE_NONE:
diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
index 8a2e399..60fd7f7 100644
--- a/qemu-deprecated.texi
+++ b/qemu-deprecated.texi
@@ -83,6 +83,11 @@  The 'file' driver for drives is no longer appropriate for character or host
 devices and will only accept regular files (S_IFREG). The correct driver
 for these file types is 'host_cdrom' or 'host_device' as appropriate.
 
+@subsection -net ...,name=@var{name} (since 3.1)
+
+The @option{name} parameter of the @option{-net} option is a synonym
+for the @option{id} parameter, which should now be used instead.
+
 @section QEMU Machine Protocol (QMP) commands
 
 @subsection block-dirty-bitmap-add "autoload" parameter (since 2.12.0)