Patchwork [STABLE] Add qerror message if the 'change' target filename can't be opened

login
register
mail settings
Submitter Ryan Harper
Date April 9, 2010, 12:46 p.m.
Message ID <20100409124638.GY24351@us.ibm.com>
Download mbox | patch
Permalink /patch/49843/
State New
Headers show

Comments

Ryan Harper - April 9, 2010, 12:46 p.m.
Currently when using the change command to switch the file in the cd drive
the command doesn't complain if the file doesn't exit or can't be opened
and the drive keeps the existing image.  This patch adds a qerror_report
call to print a message out indicating the failure.  This error message
can be used to catch failures.

Current behavior:

QEMU 0.12.50 monitor - type 'help' for more information
(qemu) info block
ide0-hd0: type=hd removable=0 file=/dev/null ro=0 drv=host_device encrypted=0
ide1-cd0: type=cdrom removable=1 locked=0 [not inserted]
floppy0: type=floppy removable=1 locked=0 [not inserted]
sd0: type=floppy removable=1 locked=0 [not inserted]
(qemu) change ide1-cd0 /home/rharper/work/isos/Fedora-9-i386-DVD.iso 
(qemu) info block
ide0-hd0: type=hd removable=0 file=/dev/null ro=0 drv=host_device encrypted=0
ide1-cd0: type=cdrom removable=1 locked=0
file=/home/rharper/work/isos/Fedora-9-i386-DVD.iso ro=0 drv=raw encrypted=0
floppy0: type=floppy removable=1 locked=0 [not inserted]
sd0: type=floppy removable=1 locked=0 [not inserted]
(qemu) change ide1-cd0 /tmp/non_existent_file.iso
(qemu) info block
ide0-hd0: type=hd removable=0 file=/dev/null ro=0 drv=host_device encrypted=0
ide1-cd0: type=cdrom removable=1 locked=0 [not inserted]
floppy0: type=floppy removable=1 locked=0 [not inserted]
sd0: type=floppy removable=1 locked=0 [not inserted]
(qemu)

With patch:
QEMU 0.12.50 monitor - type 'help' for more information
(qemu) change ide1-cd0 /tmp/non_existent_file.iso
Could not open '/tmp/non_existent_file.iso'
(qemu) 


Signed-off-by: Ryan Harper <ryanh@us.ibm.com>
---
 monitor.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
Aurelien Jarno - April 18, 2010, 8:47 p.m.
On Fri, Apr 09, 2010 at 07:46:38AM -0500, Ryan Harper wrote:
> Currently when using the change command to switch the file in the cd drive
> the command doesn't complain if the file doesn't exit or can't be opened
> and the drive keeps the existing image.  This patch adds a qerror_report
> call to print a message out indicating the failure.  This error message
> can be used to catch failures.

Applied to HEAD, however it doesn't apply to stable. Is it really needed
here?

> Current behavior:
> 
> QEMU 0.12.50 monitor - type 'help' for more information
> (qemu) info block
> ide0-hd0: type=hd removable=0 file=/dev/null ro=0 drv=host_device encrypted=0
> ide1-cd0: type=cdrom removable=1 locked=0 [not inserted]
> floppy0: type=floppy removable=1 locked=0 [not inserted]
> sd0: type=floppy removable=1 locked=0 [not inserted]
> (qemu) change ide1-cd0 /home/rharper/work/isos/Fedora-9-i386-DVD.iso 
> (qemu) info block
> ide0-hd0: type=hd removable=0 file=/dev/null ro=0 drv=host_device encrypted=0
> ide1-cd0: type=cdrom removable=1 locked=0
> file=/home/rharper/work/isos/Fedora-9-i386-DVD.iso ro=0 drv=raw encrypted=0
> floppy0: type=floppy removable=1 locked=0 [not inserted]
> sd0: type=floppy removable=1 locked=0 [not inserted]
> (qemu) change ide1-cd0 /tmp/non_existent_file.iso
> (qemu) info block
> ide0-hd0: type=hd removable=0 file=/dev/null ro=0 drv=host_device encrypted=0
> ide1-cd0: type=cdrom removable=1 locked=0 [not inserted]
> floppy0: type=floppy removable=1 locked=0 [not inserted]
> sd0: type=floppy removable=1 locked=0 [not inserted]
> (qemu)
> 
> With patch:
> QEMU 0.12.50 monitor - type 'help' for more information
> (qemu) change ide1-cd0 /tmp/non_existent_file.iso
> Could not open '/tmp/non_existent_file.iso'
> (qemu) 
> 
> 
> Signed-off-by: Ryan Harper <ryanh@us.ibm.com>
> ---
>  monitor.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/monitor.c b/monitor.c
> index 0448a70..196c7a6 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -1099,6 +1099,7 @@ static int do_change_block(Monitor *mon, const char *device,
>          return -1;
>      }
>      if (bdrv_open2(bs, filename, BDRV_O_RDWR, drv) < 0) {
> +        qerror_report(QERR_OPEN_FILE_FAILED, filename);
>          return -1;
>      }
>      return monitor_read_bdrv_key_start(mon, bs, NULL, NULL);
> -- 
> 1.6.3.3
> 
> -- 
> Ryan Harper
> Software Engineer; Linux Technology Center
> IBM Corp., Austin, Tx
> ryanh@us.ibm.com
> 
> 
>
Ryan Harper - April 19, 2010, 2:37 a.m.
* Aurelien Jarno <aurelien@aurel32.net> [2010-04-18 15:55]:
> On Fri, Apr 09, 2010 at 07:46:38AM -0500, Ryan Harper wrote:
> > Currently when using the change command to switch the file in the cd drive
> > the command doesn't complain if the file doesn't exit or can't be opened
> > and the drive keeps the existing image.  This patch adds a qerror_report
> > call to print a message out indicating the failure.  This error message
> > can be used to catch failures.
> 
> Applied to HEAD, however it doesn't apply to stable. Is it really needed
> here?

No, you're right.  Qemu doesnt' segfault or anything bad.  That and the
qerror class for open file failed isn't in stable so we'd have to pull
that new code in (it's small, like 7 lines.  Anyhow, I have the patches,
but I agree that they aren't necessary for stable.

Patch

diff --git a/monitor.c b/monitor.c
index 0448a70..196c7a6 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1099,6 +1099,7 @@  static int do_change_block(Monitor *mon, const char *device,
         return -1;
     }
     if (bdrv_open2(bs, filename, BDRV_O_RDWR, drv) < 0) {
+        qerror_report(QERR_OPEN_FILE_FAILED, filename);
         return -1;
     }
     return monitor_read_bdrv_key_start(mon, bs, NULL, NULL);