qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: Alberto Garcia <berto@igalia.com>,
	qemu-block@nongnu.org, John Snow <jsnow@redhat.com>,
	qemu-devel@nongnu.org, Markus Armbruster <armbru@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v7 32/39] blockdev: Implement eject with basic operations
Date: Fri, 23 Oct 2015 16:42:14 +0200	[thread overview]
Message-ID: <562A4746.5090008@redhat.com> (raw)
In-Reply-To: <20151023135435.GH3797@noname.redhat.com>

[-- Attachment #1: Type: text/plain, Size: 2449 bytes --]

On 23.10.2015 15:54, Kevin Wolf wrote:
> Am 19.10.2015 um 17:53 hat Max Reitz geschrieben:
>> Implement 'eject' by calling blockdev-open-tray and
>> blockdev-remove-medium.
>>
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>>  blockdev.c | 11 +++++------
>>  1 file changed, 5 insertions(+), 6 deletions(-)
>>
>> diff --git a/blockdev.c b/blockdev.c
>> index a4c278f..0481686 100644
>> --- a/blockdev.c
>> +++ b/blockdev.c
>> @@ -1941,16 +1941,15 @@ out:
>>  
>>  void qmp_eject(const char *device, bool has_force, bool force, Error **errp)
>>  {
>> -    BlockBackend *blk;
>> +    Error *local_err = NULL;
>>  
>> -    blk = blk_by_name(device);
>> -    if (!blk) {
>> -        error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND,
>> -                  "Device '%s' not found", device);
>> +    qmp_blockdev_open_tray(device, has_force, force, &local_err);
>> +    if (local_err) {
>> +        error_propagate(errp, local_err);
>>          return;
>>      }
> 
> This changes the behaviour, in the current patch series in two ways if
> the device is locked:
> 
> 1. With force, the qmp_blockdev_remove_medium() call will fail because
>    we only unlocked the device, but didn't actually open the tray (I
>    commented on this in the qmp_blockdev_open_tray() patch). This breaks
>    the API, obviously.

Yep, will fix.

> 2. Without force, eject previously sent an eject request and also
>    returned a "Device is locked" error. Now it fails with "Tray of
>    device is not open". Regression in the message quality, but not an
>    API breakage because tools must not parse the message.

I think this should be fine. The previous message wasn't too good in my
opinion either, because the most likely scenario is this: User issues
eject, management tool reports qemu's message: "Device is locked!" and
then the tray opens. So that's strange, too. Maybe "Tray of device is
not open" is actually the better message here, I don't know. It better
describes the state, but it does not describe the reason...

But in addition to that, there is no easy way around this. I could put a
check into qmp_eject() which returns a "Device is locked" message if the
tray is still closed after a successful qmp_blockdev_open_tray(), but I
don't know whether that's worth it.

Max

>> -    eject_device(blk, force, errp);
>> +    qmp_blockdev_remove_medium(device, errp);
>>  }
> 
> Kevin
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

  reply	other threads:[~2015-10-23 14:42 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-19 15:53 [Qemu-devel] [PATCH v7 00/39] blockdev: BlockBackend and media Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 01/39] block: Remove host floppy support Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 02/39] block: Set BDRV_O_INCOMING in bdrv_fill_options() Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 03/39] blockdev: Allow creation of BDS trees without BB Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 04/39] iotests: Only create BB if necessary Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 05/39] block: Make bdrv_is_inserted() return a bool Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 06/39] block: Add blk_is_available() Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 07/39] block: Make bdrv_is_inserted() recursive Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 08/39] block/raw_bsd: Drop raw_is_inserted() Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 09/39] block: Invoke change media CB before NULLing drv Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 10/39] hw/block/fdc: Implement tray status Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 11/39] hw/usb-storage: Check whether BB is inserted Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 12/39] block: Fix BB AIOCB AioContext without BDS Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 13/39] block: Move guest_block_size into BlockBackend Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 14/39] block: Remove wr_highest_sector from BlockAcctStats Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 15/39] block: Move BlockAcctStats into BlockBackend Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 16/39] block: Move I/O status and error actions into BB Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 17/39] block/throttle-groups: Make incref/decref public Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 18/39] block: Add BlockBackendRootState Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 19/39] block: Make some BB functions fall back to BBRS Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 20/39] block: Fail requests to empty BlockBackend Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 21/39] block: Prepare remaining BB functions for NULL BDS Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 22/39] block: Add blk_insert_bs() Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 23/39] block: Prepare for NULL BDS Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 24/39] blockdev: Do not create BDS for empty drive Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 25/39] blockdev: Pull out blockdev option extraction Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 26/39] blockdev: Allow more options for BB-less BDS tree Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 27/39] block: Add blk_remove_bs() Max Reitz
2015-10-20  8:33   ` Kevin Wolf
2015-10-21 13:47     ` Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 28/39] blockdev: Add blockdev-open-tray Max Reitz
2015-10-23 13:22   ` Kevin Wolf
2015-10-23 14:22     ` Max Reitz
2015-10-23 13:26   ` Kevin Wolf
2015-10-23 14:26     ` Max Reitz
2015-10-23 14:45       ` Kevin Wolf
2015-10-23 15:25         ` Max Reitz
2015-10-23 15:44           ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 29/39] blockdev: Add blockdev-close-tray Max Reitz
2015-10-23 13:43   ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 30/39] blockdev: Add blockdev-remove-medium Max Reitz
2015-10-23 13:45   ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 31/39] blockdev: Add blockdev-insert-medium Max Reitz
2015-10-21 11:49   ` Alberto Garcia
2015-10-21 13:47     ` Max Reitz
2015-10-23 13:39       ` Kevin Wolf
2015-10-23 14:04         ` Max Reitz
2015-10-23 13:42   ` Kevin Wolf
2015-10-23 14:35     ` Max Reitz
2015-10-23 14:52       ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 32/39] blockdev: Implement eject with basic operations Max Reitz
2015-10-23 13:54   ` Kevin Wolf
2015-10-23 14:42     ` Max Reitz [this message]
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 33/39] blockdev: Implement change " Max Reitz
2015-10-23 14:11   ` Kevin Wolf
2015-10-23 14:43     ` Max Reitz
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 34/39] block: Inquire tray state before tray-moved events Max Reitz
2015-10-23 14:16   ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 35/39] qmp: Introduce blockdev-change-medium Max Reitz
2015-10-23 14:25   ` Kevin Wolf
2015-10-23 15:08     ` Max Reitz
2015-10-26 12:14   ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 36/39] hmp: Use blockdev-change-medium for change command Max Reitz
2015-10-26 12:13   ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 37/39] blockdev: read-only-mode for blockdev-change-medium Max Reitz
2015-10-26 12:13   ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 38/39] hmp: Add read-only-mode option to change command Max Reitz
2015-10-26 12:12   ` Kevin Wolf
2015-10-19 15:53 ` [Qemu-devel] [PATCH v7 39/39] iotests: Add test for change-related QMP commands Max Reitz
2015-10-26 13:46   ` Kevin Wolf
2015-10-20 11:10 ` [Qemu-devel] [PATCH v7 00/39] blockdev: BlockBackend and media Kevin Wolf

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=562A4746.5090008@redhat.com \
    --to=mreitz@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berto@igalia.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).