Message ID | 20161011141235.95730-1-pasic@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Oct 11, 2016 at 04:12:35PM +0200, Halil Pasic wrote: > Make raw_open for POSIX more consistent in handling errors by setting > the error object also when qemu_open fails. The error object was set > generally set in case of errors, but I guess this case was overlooked. > Do the same for win32. > > Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com> > Reviewed-by: Sascha Silbe <silbe@linux.vnet.ibm.com> > Tested-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com> (POSIX only) > > --- > > Stumbled upon this (POSIX) while testing VMs with too many SCSI disks in > respect to my nofile limit. When open hits the nofile limit while trying > to hotplug yet another SCSI disk via libvirt we end up with no adequate > error message (one stating too many files). Sadly this patch in not > sufficient to fix this problem because drive_new (/qemu/blockdev.c) > handles errors using error_report_err which is documented as not to be > used in QMP context. > > The win32 part was not tested, and the sole reason I touched it is > to not introduce unnecessary divergence. > > v4 -> v5: > * fix qemu-iotests by adding the filename to the message This patch doesn't modify any iotests golden master files. Does this mean the iotests output is unchanged? > v3 -> v4: > * rebased on current master > v2 -> v3: > * first save errno then error_setg_errno > v1 -> v2: > * fixed win32 by the correct error_setg_* > * use the original errno consequently > --- > block/raw-posix.c | 1 + > block/raw-win32.c | 1 + > 2 files changed, 2 insertions(+) Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
On 10/14/2016 05:59 PM, Stefan Hajnoczi wrote: > On Tue, Oct 11, 2016 at 04:12:35PM +0200, Halil Pasic wrote: >> > Make raw_open for POSIX more consistent in handling errors by setting >> > the error object also when qemu_open fails. The error object was set >> > generally set in case of errors, but I guess this case was overlooked. >> > Do the same for win32. >> > >> > Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com> >> > Reviewed-by: Sascha Silbe <silbe@linux.vnet.ibm.com> >> > Tested-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com> (POSIX only) >> > >> > --- >> > >> > Stumbled upon this (POSIX) while testing VMs with too many SCSI disks in >> > respect to my nofile limit. When open hits the nofile limit while trying >> > to hotplug yet another SCSI disk via libvirt we end up with no adequate >> > error message (one stating too many files). Sadly this patch in not >> > sufficient to fix this problem because drive_new (/qemu/blockdev.c) >> > handles errors using error_report_err which is documented as not to be >> > used in QMP context. >> > >> > The win32 part was not tested, and the sole reason I touched it is >> > to not introduce unnecessary divergence. >> > >> > v4 -> v5: >> > * fix qemu-iotests by adding the filename to the message > This patch doesn't modify any iotests golden master files. Does this > mean the iotests output is unchanged? > Exactly. Instead of modifying the golden masters I choose to modify the message generated by me and make it more verbose by appending the filename in question. Thanks for the review! Halil
Am 14.10.2016 um 17:59 hat Stefan Hajnoczi geschrieben: > On Tue, Oct 11, 2016 at 04:12:35PM +0200, Halil Pasic wrote: > > Make raw_open for POSIX more consistent in handling errors by setting > > the error object also when qemu_open fails. The error object was set > > generally set in case of errors, but I guess this case was overlooked. > > Do the same for win32. > > > > Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com> > > Reviewed-by: Sascha Silbe <silbe@linux.vnet.ibm.com> > > Tested-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com> (POSIX only) > > > > --- > > > > Stumbled upon this (POSIX) while testing VMs with too many SCSI disks in > > respect to my nofile limit. When open hits the nofile limit while trying > > to hotplug yet another SCSI disk via libvirt we end up with no adequate > > error message (one stating too many files). Sadly this patch in not > > sufficient to fix this problem because drive_new (/qemu/blockdev.c) > > handles errors using error_report_err which is documented as not to be > > used in QMP context. > > > > The win32 part was not tested, and the sole reason I touched it is > > to not introduce unnecessary divergence. > > > > v4 -> v5: > > * fix qemu-iotests by adding the filename to the message > > This patch doesn't modify any iotests golden master files. Does this > mean the iotests output is unchanged? > > > v3 -> v4: > > * rebased on current master > > v2 -> v3: > > * first save errno then error_setg_errno > > v1 -> v2: > > * fixed win32 by the correct error_setg_* > > * use the original errno consequently > > --- > > block/raw-posix.c | 1 + > > block/raw-win32.c | 1 + > > 2 files changed, 2 insertions(+) > > Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Thanks, applied to the block branch. Kevin
diff --git a/block/raw-posix.c b/block/raw-posix.c index 166e9d1..f481e57 100644 --- a/block/raw-posix.c +++ b/block/raw-posix.c @@ -443,6 +443,7 @@ static int raw_open_common(BlockDriverState *bs, QDict *options, fd = qemu_open(filename, s->open_flags, 0644); if (fd < 0) { ret = -errno; + error_setg_errno(errp, errno, "Could not open '%s'", filename); if (ret == -EROFS) { ret = -EACCES; } diff --git a/block/raw-win32.c b/block/raw-win32.c index 734bb10..800fabd 100644 --- a/block/raw-win32.c +++ b/block/raw-win32.c @@ -373,6 +373,7 @@ static int raw_open(BlockDriverState *bs, QDict *options, int flags, if (s->hfile == INVALID_HANDLE_VALUE) { int err = GetLastError(); + error_setg_win32(errp, err, "Could not open '%s'", filename); if (err == ERROR_ACCESS_DENIED) { ret = -EACCES; } else {