block: Assume raw for drives without media

Submitted by Kevin Wolf on June 1, 2010, 4:50 p.m.

Details

Message ID 1275411000-27324-1-git-send-email-kwolf@redhat.com
State New
Headers show

Commit Message

Kevin Wolf June 1, 2010, 4:50 p.m.
qemu -cdrom /dev/cdrom with an empty CD-ROM drive doesn't work any more because
we try to guess the format and when this fails (because there is no medium) we
exit with an error message.

This patch should restore the old behaviour by assuming raw format for such
drives.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Comments

Nicholas A. Bellinger June 1, 2010, 5:15 p.m.
On Tue, 2010-06-01 at 18:50 +0200, Kevin Wolf wrote:
> qemu -cdrom /dev/cdrom with an empty CD-ROM drive doesn't work any more because
> we try to guess the format and when this fails (because there is no medium) we
> exit with an error message.
> 
> This patch should restore the old behaviour by assuming raw format for such
> drives.
> 
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>  block.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/block.c b/block.c
> index d789d02..7dded4e 100644
> --- a/block.c
> +++ b/block.c
> @@ -331,8 +331,8 @@ static BlockDriver *find_image_format(const char *filename)
>      if (ret < 0)
>          return NULL;
>  
> -    /* Return the raw BlockDriver * to scsi-generic devices */
> -    if (bs->sg) {
> +    /* Return the raw BlockDriver * to scsi-generic devices or empty drives */
> +    if (bs->sg || !bdrv_is_inserted(bs)) {
>          bdrv_delete(bs);
>          return bdrv_find_format("raw");
>      }

Makes sense to me.

Acked-by: Nicholas A. Bellinger <nab@linux-iscsi.org>

Patch hide | download patch | download mbox

diff --git a/block.c b/block.c
index d789d02..7dded4e 100644
--- a/block.c
+++ b/block.c
@@ -331,8 +331,8 @@  static BlockDriver *find_image_format(const char *filename)
     if (ret < 0)
         return NULL;
 
-    /* Return the raw BlockDriver * to scsi-generic devices */
-    if (bs->sg) {
+    /* Return the raw BlockDriver * to scsi-generic devices or empty drives */
+    if (bs->sg || !bdrv_is_inserted(bs)) {
         bdrv_delete(bs);
         return bdrv_find_format("raw");
     }