* [Qemu-devel] [PATCH] Improve error reporting on file access
@ 2009-10-01 14:42 Justin M. Forbes
2009-10-01 16:12 ` Mark McLoughlin
0 siblings, 1 reply; 6+ messages in thread
From: Justin M. Forbes @ 2009-10-01 14:42 UTC (permalink / raw)
To: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 1 bytes --]
[-- Attachment #2: qemu-accurate-error-reporting.patch --]
[-- Type: text/plain, Size: 4471 bytes --]
commit 1755cdcf9c6328bdcc8558a38af774e31421a145
Author: Justin M. Forbes <jforbes@redhat.com>
Date: Thu Oct 1 09:34:56 2009 -0500
Improve error reporting on file access
By making the error reporting include strerror(errno), it gives the user
a bit more indication as to why qemu failed. This is particularly
important for people running qemu as a non root user.
Signed-off-by: Justin M. Forbes <jforbes@redhat.com>
diff --git a/hw/pc.c b/hw/pc.c
index bc2875e..8e54fa4 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -844,8 +844,8 @@ static void load_linux(void *fw_cfg,
if (!f || !(kernel_size = get_file_size(f)) ||
fread(header, 1, MIN(ARRAY_SIZE(header), kernel_size), f) !=
MIN(ARRAY_SIZE(header), kernel_size)) {
- fprintf(stderr, "qemu: could not load kernel '%s'\n",
- kernel_filename);
+ fprintf(stderr, "qemu: could not load kernel '%s': %s\n",
+ kernel_filename, strerror(errno));
exit(1);
}
@@ -950,8 +950,8 @@ static void load_linux(void *fw_cfg,
fi = fopen(initrd_filename, "rb");
if (!fi) {
- fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
- initrd_filename);
+ fprintf(stderr, "qemu: could not load initial ram disk '%s': %s\n",
+ initrd_filename, strerror(errno));
exit(1);
}
@@ -959,8 +959,8 @@ static void load_linux(void *fw_cfg,
initrd_addr = (initrd_max-initrd_size) & ~4095;
if (!fread_targphys_ok(initrd_addr, initrd_size, fi)) {
- fprintf(stderr, "qemu: read error on initial ram disk '%s'\n",
- initrd_filename);
+ fprintf(stderr, "qemu: read error on initial ram disk '%s': %s\n",
+ initrd_filename, strerror(errno));
exit(1);
}
fclose(fi);
diff --git a/vl.c b/vl.c
index 7bfd415..70fd2ca 100644
--- a/vl.c
+++ b/vl.c
@@ -2232,8 +2232,8 @@ DriveInfo *drive_init(QemuOpts *opts, void *opaque,
}
if (bdrv_open2(dinfo->bdrv, file, bdrv_flags, drv) < 0) {
- fprintf(stderr, "qemu: could not open disk image %s\n",
- file);
+ fprintf(stderr, "qemu: could not open disk image %s: %s\n",
+ file, strerror(errno));
return NULL;
}
@@ -5487,7 +5487,7 @@ int main(int argc, char **argv, char **envp)
if (len != 1)
exit(1);
else if (status == 1) {
- fprintf(stderr, "Could not acquire pidfile\n");
+ fprintf(stderr, "Could not acquire pidfile: %s\n", strerror(errno));
exit(1);
} else
exit(0);
@@ -5514,7 +5514,7 @@ int main(int argc, char **argv, char **envp)
uint8_t status = 1;
write(fds[1], &status, 1);
} else
- fprintf(stderr, "Could not acquire pid file\n");
+ fprintf(stderr, "Could not acquire pid file: %s\n", strerror(errno));
exit(1);
}
#endif
@@ -5699,8 +5699,8 @@ int main(int argc, char **argv, char **envp)
snprintf(label, sizeof(label), "serial%d", i);
serial_hds[i] = qemu_chr_open(label, devname, NULL);
if (!serial_hds[i]) {
- fprintf(stderr, "qemu: could not open serial device '%s'\n",
- devname);
+ fprintf(stderr, "qemu: could not open serial device '%s': %s\n",
+ devname, strerror(errno));
exit(1);
}
}
@@ -5713,8 +5713,8 @@ int main(int argc, char **argv, char **envp)
snprintf(label, sizeof(label), "parallel%d", i);
parallel_hds[i] = qemu_chr_open(label, devname, NULL);
if (!parallel_hds[i]) {
- fprintf(stderr, "qemu: could not open parallel device '%s'\n",
- devname);
+ fprintf(stderr, "qemu: could not open parallel device '%s': %s\n",
+ devname, strerror(errno));
exit(1);
}
}
@@ -5727,8 +5727,8 @@ int main(int argc, char **argv, char **envp)
snprintf(label, sizeof(label), "virtcon%d", i);
virtcon_hds[i] = qemu_chr_open(label, devname, NULL);
if (!virtcon_hds[i]) {
- fprintf(stderr, "qemu: could not open virtio console '%s'\n",
- devname);
+ fprintf(stderr, "qemu: could not open virtio console '%s': %s\n",
+ devname, strerror(errno));
exit(1);
}
}
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] Improve error reporting on file access
2009-10-01 14:42 [Qemu-devel] [PATCH] Improve error reporting on file access Justin M. Forbes
@ 2009-10-01 16:12 ` Mark McLoughlin
2009-10-27 16:51 ` Markus Armbruster
0 siblings, 1 reply; 6+ messages in thread
From: Mark McLoughlin @ 2009-10-01 16:12 UTC (permalink / raw)
To: Justin M. Forbes; +Cc: qemu-devel
On Thu, 2009-10-01 at 09:42 -0500, Justin M. Forbes wrote:
> Author: Justin M. Forbes <jforbes@redhat.com>
> Date: Thu Oct 1 09:34:56 2009 -0500
>
> Improve error reporting on file access
>
> By making the error reporting include strerror(errno), it gives the user
> a bit more indication as to why qemu failed. This is particularly
> important for people running qemu as a non root user.
>
> Signed-off-by: Justin M. Forbes <jforbes@redhat.com>
Certainly looks sensible to me
Not having this is hurting us in Fedora 12 because we've started running
qemu as an unprivileged user and people are having a hard time figuring
out the various errors they're seeing caused by the change. This should
help them.
Only concern is that errno might not be getting propagated correctly by
some of these functions, but we can fix that later if so.
Cheers,
Mark.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] Improve error reporting on file access
2009-10-01 16:12 ` Mark McLoughlin
@ 2009-10-27 16:51 ` Markus Armbruster
2009-10-27 17:38 ` malc
0 siblings, 1 reply; 6+ messages in thread
From: Markus Armbruster @ 2009-10-27 16:51 UTC (permalink / raw)
To: Mark McLoughlin; +Cc: Justin M. Forbes, qemu-devel
Mark McLoughlin <markmc@redhat.com> writes:
> On Thu, 2009-10-01 at 09:42 -0500, Justin M. Forbes wrote:
>> Author: Justin M. Forbes <jforbes@redhat.com>
>> Date: Thu Oct 1 09:34:56 2009 -0500
>>
>> Improve error reporting on file access
>>
>> By making the error reporting include strerror(errno), it gives the user
>> a bit more indication as to why qemu failed. This is particularly
>> important for people running qemu as a non root user.
>>
>> Signed-off-by: Justin M. Forbes <jforbes@redhat.com>
>
> Certainly looks sensible to me
>
> Not having this is hurting us in Fedora 12 because we've started running
> qemu as an unprivileged user and people are having a hard time figuring
> out the various errors they're seeing caused by the change. This should
> help them.
>
> Only concern is that errno might not be getting propagated correctly by
> some of these functions, but we can fix that later if so.
Here's one:
diff --git a/vl.c b/vl.c
index 7bfd415..70fd2ca 100644
--- a/vl.c
+++ b/vl.c
@@ -2232,8 +2232,8 @@ DriveInfo *drive_init(QemuOpts *opts, void *opaque,
}
if (bdrv_open2(dinfo->bdrv, file, bdrv_flags, drv) < 0) {
- fprintf(stderr, "qemu: could not open disk image %s\n",
- file);
+ fprintf(stderr, "qemu: could not open disk image %s: %s\n",
+ file, strerror(errno));
return NULL;
}
bdrv_open2() returns the error code. Usually, it also leaves it in
errno, but not always. Try:
$ >mt.img
$ ~/work/qemu/bld/qemu-img create -f qcow2 -b mt.img mt.qcow2
Formatting 'mt.qcow2', fmt=qcow2 size=0 backing_file='mt.img' encryption=off cluster_size=0
$ qemu [...] -drive file=mt.qcow2
qemu: could not open disk image mt.qcow2: Success
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] Improve error reporting on file access
2009-10-27 16:51 ` Markus Armbruster
@ 2009-10-27 17:38 ` malc
2009-11-29 12:20 ` Andreas Färber
0 siblings, 1 reply; 6+ messages in thread
From: malc @ 2009-10-27 17:38 UTC (permalink / raw)
To: Markus Armbruster; +Cc: Mark McLoughlin, Justin M. Forbes, qemu-devel
On Tue, 27 Oct 2009, Markus Armbruster wrote:
> Mark McLoughlin <markmc@redhat.com> writes:
>
> > On Thu, 2009-10-01 at 09:42 -0500, Justin M. Forbes wrote:
> >> Author: Justin M. Forbes <jforbes@redhat.com>
> >> Date: Thu Oct 1 09:34:56 2009 -0500
> >>
> >> Improve error reporting on file access
> >>
> >> By making the error reporting include strerror(errno), it gives the user
> >> a bit more indication as to why qemu failed. This is particularly
> >> important for people running qemu as a non root user.
> >>
> >> Signed-off-by: Justin M. Forbes <jforbes@redhat.com>
> >
> > Certainly looks sensible to me
> >
> > Not having this is hurting us in Fedora 12 because we've started running
> > qemu as an unprivileged user and people are having a hard time figuring
> > out the various errors they're seeing caused by the change. This should
> > help them.
> >
> > Only concern is that errno might not be getting propagated correctly by
> > some of these functions, but we can fix that later if so.
>
> Here's one:
>
> diff --git a/vl.c b/vl.c
> index 7bfd415..70fd2ca 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -2232,8 +2232,8 @@ DriveInfo *drive_init(QemuOpts *opts, void *opaque,
> }
>
> if (bdrv_open2(dinfo->bdrv, file, bdrv_flags, drv) < 0) {
> - fprintf(stderr, "qemu: could not open disk image %s\n",
> - file);
> + fprintf(stderr, "qemu: could not open disk image %s: %s\n",
> + file, strerror(errno));
> return NULL;
> }
>
bdrv_open2 is not guaranteed to use POSIX functions for it's file
manipulation, hence the patch is wrong.
--
mailto:av1474@comtv.ru
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] Improve error reporting on file access
2009-10-27 17:38 ` malc
@ 2009-11-29 12:20 ` Andreas Färber
2010-01-18 17:43 ` Markus Armbruster
0 siblings, 1 reply; 6+ messages in thread
From: Andreas Färber @ 2009-11-29 12:20 UTC (permalink / raw)
To: QEMU Developers; +Cc: Mark McLoughlin, Justin M. Forbes, Markus Armbruster
Hello,
Am 27.10.2009 um 18:38 schrieb malc:
> On Tue, 27 Oct 2009, Markus Armbruster wrote:
>
>> Mark McLoughlin <markmc@redhat.com> writes:
>>
>>> On Thu, 2009-10-01 at 09:42 -0500, Justin M. Forbes wrote:
>>>> Author: Justin M. Forbes <jforbes@redhat.com>
>>>> Date: Thu Oct 1 09:34:56 2009 -0500
>>>>
>>>> Improve error reporting on file access
>>>>
>>>> By making the error reporting include strerror(errno), it
>>>> gives the user
>>>> a bit more indication as to why qemu failed. This is
>>>> particularly
>>>> important for people running qemu as a non root user.
>>>>
>>>> Signed-off-by: Justin M. Forbes <jforbes@redhat.com>
>>> Only concern is that errno might not be getting propagated
>>> correctly by
>>> some of these functions, but we can fix that later if so.
>>
>> Here's one:
>>
>> diff --git a/vl.c b/vl.c
>> index 7bfd415..70fd2ca 100644
>> --- a/vl.c
>> +++ b/vl.c
>> @@ -2232,8 +2232,8 @@ DriveInfo *drive_init(QemuOpts *opts, void
>> *opaque,
>> }
>>
>> if (bdrv_open2(dinfo->bdrv, file, bdrv_flags, drv) < 0) {
>> - fprintf(stderr, "qemu: could not open disk image %s\n",
>> - file);
>> + fprintf(stderr, "qemu: could not open disk image %s: %s\n",
>> + file, strerror(errno));
>> return NULL;
>> }
>>
>
> bdrv_open2 is not guaranteed to use POSIX functions for it's file
> manipulation, hence the patch is wrong.
It appears, the patch was applied in
850810d01b45e6ce99ac6696773e967890db2937 (Oct 5).
On OpenSolaris 2009.06 amd64 I now get:
qemu: could not open disk image /[...].iso: Not owner
I am owner though. If I run it with pfexec (priviledged), I get:
qemu: could not open disk image /[...].iso: No such file or directory
The file is there and my script used to work before Juan's Makefile
reorganization with the --whole-archive workaround I posted.
So my guess is, we do see a stray errno here?
Andreas
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] Improve error reporting on file access
2009-11-29 12:20 ` Andreas Färber
@ 2010-01-18 17:43 ` Markus Armbruster
0 siblings, 0 replies; 6+ messages in thread
From: Markus Armbruster @ 2010-01-18 17:43 UTC (permalink / raw)
To: Andreas Färber; +Cc: Mark McLoughlin, Justin M. Forbes, QEMU Developers
Andreas Färber <andreas.faerber@web.de> writes:
> Hello,
>
> Am 27.10.2009 um 18:38 schrieb malc:
>
>> On Tue, 27 Oct 2009, Markus Armbruster wrote:
>>
>>> Mark McLoughlin <markmc@redhat.com> writes:
>>>
>>>> On Thu, 2009-10-01 at 09:42 -0500, Justin M. Forbes wrote:
>>>>> Author: Justin M. Forbes <jforbes@redhat.com>
>>>>> Date: Thu Oct 1 09:34:56 2009 -0500
>>>>>
>>>>> Improve error reporting on file access
>>>>>
>>>>> By making the error reporting include strerror(errno), it
>>>>> gives the user
>>>>> a bit more indication as to why qemu failed. This is
>>>>> particularly
>>>>> important for people running qemu as a non root user.
>>>>>
>>>>> Signed-off-by: Justin M. Forbes <jforbes@redhat.com>
>
>>>> Only concern is that errno might not be getting propagated
>>>> correctly by
>>>> some of these functions, but we can fix that later if so.
>>>
>>> Here's one:
>>>
>>> diff --git a/vl.c b/vl.c
>>> index 7bfd415..70fd2ca 100644
>>> --- a/vl.c
>>> +++ b/vl.c
>>> @@ -2232,8 +2232,8 @@ DriveInfo *drive_init(QemuOpts *opts, void
>>> *opaque,
>>> }
>>>
>>> if (bdrv_open2(dinfo->bdrv, file, bdrv_flags, drv) < 0) {
>>> - fprintf(stderr, "qemu: could not open disk image %s\n",
>>> - file);
>>> + fprintf(stderr, "qemu: could not open disk image %s: %s\n",
>>> + file, strerror(errno));
>>> return NULL;
>>> }
>>>
>>
>> bdrv_open2 is not guaranteed to use POSIX functions for it's file
>> manipulation, hence the patch is wrong.
>
> It appears, the patch was applied in
> 850810d01b45e6ce99ac6696773e967890db2937 (Oct 5).
>
> On OpenSolaris 2009.06 amd64 I now get:
>
> qemu: could not open disk image /[...].iso: Not owner
>
> I am owner though. If I run it with pfexec (priviledged), I get:
>
> qemu: could not open disk image /[...].iso: No such file or directory
>
> The file is there and my script used to work before Juan's Makefile
> reorganization with the --whole-archive workaround I posted.
>
> So my guess is, we do see a stray errno here?
>
> Andreas
As malc said, the patch is wrong. It should be reverted until somebody
comes up with a fix.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-01-18 17:43 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-01 14:42 [Qemu-devel] [PATCH] Improve error reporting on file access Justin M. Forbes
2009-10-01 16:12 ` Mark McLoughlin
2009-10-27 16:51 ` Markus Armbruster
2009-10-27 17:38 ` malc
2009-11-29 12:20 ` Andreas Färber
2010-01-18 17:43 ` Markus Armbruster
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).