All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: "Philippe Mathieu-Daudé" <philmd@redhat.com>
Cc: kwolf@redhat.com, berrange@redhat.com, ehabkost@redhat.com,
	qemu-block@nongnu.org, qemu-devel@nongnu.org, mreitz@redhat.com,
	pbonzini@redhat.com, jsnow@redhat.com
Subject: Re: [PATCH 13/16] qdev: Make qdev_prop_set_drive() match the other helpers
Date: Mon, 08 Jun 2020 07:20:40 +0200	[thread overview]
Message-ID: <87v9k2xhef.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <71a59dd5-9cea-9474-e318-4da3cb4f107b@redhat.com> ("Philippe =?utf-8?Q?Mathieu-Daud=C3=A9=22's?= message of "Fri, 5 Jun 2020 17:33:07 +0200")

Philippe Mathieu-Daudé <philmd@redhat.com> writes:

> On 6/5/20 4:56 PM, Markus Armbruster wrote:
>> qdev_prop_set_drive() can fail.  None of the other qdev_prop_set_FOO()
>> can; they abort on error.
>> 
>> To clean up this inconsistency, rename qdev_prop_set_drive() to
>> qdev_prop_set_drive_err(), and create a qdev_prop_set_drive() that
>> aborts on error.
>> 
>> Coccinelle script to update callers:
>> 
>>     @ depends on !(file in "hw/core/qdev-properties-system.c")@
>>     expression dev, name, value;
>>     symbol error_abort;
>>     @@
>>     -    qdev_prop_set_drive(dev, name, value, &error_abort);
>>     +    qdev_prop_set_drive(dev, name, value);
>
> Why not open-code qdev_prop_set_drive_err(..., &error_abort)?

Consistency with qdev_prop_set_chr() and qdev_prop_set_netdev().

My starting point was "what makes block backends so different that they
need error handling where nothing else does?"

After a considerable amount of digging, my answer is "nothing".
qdev_prop_set_drive(), qdev_prop_set_chr() and qdev_prop_set_netdev()
can all run into errors.  On closer examination, all programming errors
(thus &error_abort), except for "backend is already in use", and to
trigger that one, you have to get creative and steal the backend for
another purpose, e.g. with -global.  This is the abridged version of a
longwinded argument I didn't want to make in this series, so I left the
error handling alone.

In the longer run, I want qdev_prop_set_drive_err() to die.

>
>> 
>>     @@
>>     expression dev, name, value, errp;
>>     @@
>>     -    qdev_prop_set_drive(dev, name, value, errp);
>>     +    qdev_prop_set_drive_err(dev, name, value, errp);
>> 
> [...]



  reply	other threads:[~2020-06-08  5:21 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-05 14:56 [PATCH 00/16] Crazy shit around -global (pardon my french) Markus Armbruster
2020-06-05 14:56 ` [PATCH 01/16] iotests/172: Include "info block" in test output Markus Armbruster
2020-06-05 14:56 ` [PATCH 02/16] iotests/172: Cover empty filename and multiple use of drives Markus Armbruster
2020-06-05 14:56 ` [PATCH 03/16] iotests/172: Cover -global floppy.drive= Markus Armbruster
2020-06-05 14:56 ` [PATCH 04/16] fdc: Reject clash between -drive if=floppy and -global isa-fdc Markus Armbruster
2020-06-05 14:56 ` [PATCH 05/16] fdc: Open-code fdctrl_init_isa() Markus Armbruster
2020-06-05 15:27   ` Philippe Mathieu-Daudé
2020-06-05 14:56 ` [PATCH 06/16] fdc: Deprecate configuring floppies with -global isa-fdc Markus Armbruster
2020-06-10 14:24   ` John Snow
2020-06-05 14:56 ` [PATCH 07/16] docs/qdev-device-use.txt: Update section "Default Devices" Markus Armbruster
2020-06-05 14:56 ` [PATCH 08/16] blockdev: Deprecate -drive with bogus interface type Markus Armbruster
2020-06-05 14:56 ` [PATCH 09/16] qdev: Eliminate get_pointer(), set_pointer() Markus Armbruster
2020-06-05 14:56 ` [PATCH 10/16] qdev: Improve netdev property override error a bit Markus Armbruster
2020-06-08  6:06   ` Philippe Mathieu-Daudé
2020-06-10  6:01     ` Markus Armbruster
2020-06-05 14:56 ` [PATCH 11/16] qdev: Reject drive property override Markus Armbruster
2020-06-05 14:56 ` [PATCH 12/16] qdev: Reject chardev " Markus Armbruster
2020-06-05 14:56 ` [PATCH 13/16] qdev: Make qdev_prop_set_drive() match the other helpers Markus Armbruster
2020-06-05 15:33   ` Philippe Mathieu-Daudé
2020-06-08  5:20     ` Markus Armbruster [this message]
2020-06-08  5:52       ` Philippe Mathieu-Daudé
2020-06-05 14:56 ` [PATCH 14/16] arm/aspeed: Drop aspeed_board_init_flashes() parameter @errp Markus Armbruster
2020-06-05 20:11   ` Cédric Le Goater
2020-06-08  5:53   ` Philippe Mathieu-Daudé
2020-06-05 14:56 ` [PATCH 15/16] sd/pxa2xx_mmci: Don't crash on pxa2xx_mmci_init() error Markus Armbruster
2020-06-05 15:34   ` Philippe Mathieu-Daudé
2020-06-05 14:56 ` [PATCH 16/16] sd/milkymist-memcard: Fix error API violation Markus Armbruster
2020-06-10 14:21 ` [PATCH 00/16] Crazy shit around -global (pardon my french) John Snow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87v9k2xhef.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.