[PATCH v6 0/8] block: improve error reporting for unsupported O_DIRECT

Daniel P. Berrangé posted 8 patches 3 years, 8 months ago
Test docker-quick@centos7 failed
Test docker-mingw@fedora failed
Test checkpatch failed
Test FreeBSD failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200903152210.1917355-1-berrange@redhat.com
accel/kvm/kvm-all.c            |   2 +-
backends/rng-random.c          |   2 +-
backends/tpm/tpm_passthrough.c |   8 +--
block/file-posix.c             |  16 ++---
block/file-win32.c             |   5 +-
block/vvfat.c                  |   5 +-
chardev/char-fd.c              |   2 +-
chardev/char-pipe.c            |   6 +-
chardev/char.c                 |   2 +-
dump/dump.c                    |   2 +-
hw/s390x/s390-skeys.c          |   2 +-
hw/usb/host-libusb.c           |   2 +-
hw/usb/u2f-passthru.c          |   4 +-
hw/vfio/common.c               |   4 +-
include/monitor/monitor.h      |   3 +-
include/qemu/osdep.h           |   9 ++-
io/channel-file.c              |   2 +-
monitor/misc.c                 |  58 ++++++++----------
net/vhost-vdpa.c               |   2 +-
os-posix.c                     |   2 +-
qga/channel-posix.c            |   4 +-
qga/commands-posix.c           |   6 +-
stubs/fdset.c                  |   8 +--
target/arm/kvm.c               |   2 +-
ui/console.c                   |   2 +-
util/osdep.c                   | 104 +++++++++++++++++++++++----------
util/oslib-posix.c             |   2 +-
27 files changed, 150 insertions(+), 116 deletions(-)
[PATCH v6 0/8] block: improve error reporting for unsupported O_DIRECT
Posted by Daniel P. Berrangé 3 years, 8 months ago
v1: https://lists.gnu.org/archive/html/qemu-devel/2020-07/msg00269.html
v2: https://lists.gnu.org/archive/html/qemu-devel/2020-07/msg00589.html
v3: https://lists.gnu.org/archive/html/qemu-devel/2020-07/msg07098.html
v4: https://lists.gnu.org/archive/html/qemu-devel/2020-08/msg05334.html
v5: https://lists.gnu.org/archive/html/qemu-devel/2020-09/msg00947.html

See patch commit messages for rationale

Ideally we would convert other callers of qemu_open_old to use
qemu_open, and eventually remove qemu_open_old entirely, so every
caller gets use of Error **errp.

Improved in v6:

 - Fix errno regression dup'ing FD
 - Move qapi header to correct patch
 - Fix whitespace and commit messages
 - Converted more use of qemu_open to qemu_open_old after rebase

Improved in v5:

 - Drop reporting of flags in failed open call
 - Split O_CLOEXEC handling off into separate helper
 - Refactor monitor FD set APIs to simplify their use

Improved in v4:

 - Use assert() for programmer mistakes
 - Split second patch into three distinct parts
 - Misc typos
 - Improve commit message

Improved in v3:

 - Re-arrange the patches series, so that the conversion to Error
   takes place first, then the improve O_DIRECT reporting
 - Rename existing method to qemu_open_old
 - Use a pair of new methods qemu_open + qemu_create to improve
   arg checking

Improved in v2:

 - Mention that qemu_open_err is preferred over qemu_open
 - Get rid of obsolete error_report call
 - Simplify O_DIRECT handling
 - Fixup iotests for changed error message text

Daniel P. Berrangé (8):
  monitor: simplify functions for getting a dup'd fdset entry
  util: split off a helper for dealing with O_CLOEXEC flag
  util: rename qemu_open() to qemu_open_old()
  util: refactor qemu_open_old to split off variadic args handling
  util: add Error object for qemu_open_internal error reporting
  util: introduce qemu_open and qemu_create with error reporting
  util: give a specific error message when O_DIRECT doesn't work
  block/file: switch to use qemu_open/qemu_create for improved errors

 accel/kvm/kvm-all.c            |   2 +-
 backends/rng-random.c          |   2 +-
 backends/tpm/tpm_passthrough.c |   8 +--
 block/file-posix.c             |  16 ++---
 block/file-win32.c             |   5 +-
 block/vvfat.c                  |   5 +-
 chardev/char-fd.c              |   2 +-
 chardev/char-pipe.c            |   6 +-
 chardev/char.c                 |   2 +-
 dump/dump.c                    |   2 +-
 hw/s390x/s390-skeys.c          |   2 +-
 hw/usb/host-libusb.c           |   2 +-
 hw/usb/u2f-passthru.c          |   4 +-
 hw/vfio/common.c               |   4 +-
 include/monitor/monitor.h      |   3 +-
 include/qemu/osdep.h           |   9 ++-
 io/channel-file.c              |   2 +-
 monitor/misc.c                 |  58 ++++++++----------
 net/vhost-vdpa.c               |   2 +-
 os-posix.c                     |   2 +-
 qga/channel-posix.c            |   4 +-
 qga/commands-posix.c           |   6 +-
 stubs/fdset.c                  |   8 +--
 target/arm/kvm.c               |   2 +-
 ui/console.c                   |   2 +-
 util/osdep.c                   | 104 +++++++++++++++++++++++----------
 util/oslib-posix.c             |   2 +-
 27 files changed, 150 insertions(+), 116 deletions(-)

-- 
2.26.2



Re: [PATCH v6 0/8] block: improve error reporting for unsupported O_DIRECT
Posted by Daniel P. Berrangé 3 years, 7 months ago
Kevin / Max,

Could you confirm whether you're ok with me sending a pull request for
this, or prefer to funnel it through the block tree for sanity checking.

It changes error messages from the block file driver on non-win32
platforms.

I've tested qemu-iotests with -raw and -qcow2 and didn't see failures

On Thu, Sep 03, 2020 at 04:22:02PM +0100, Daniel P. Berrangé wrote:
> v1: https://lists.gnu.org/archive/html/qemu-devel/2020-07/msg00269.html
> v2: https://lists.gnu.org/archive/html/qemu-devel/2020-07/msg00589.html
> v3: https://lists.gnu.org/archive/html/qemu-devel/2020-07/msg07098.html
> v4: https://lists.gnu.org/archive/html/qemu-devel/2020-08/msg05334.html
> v5: https://lists.gnu.org/archive/html/qemu-devel/2020-09/msg00947.html
> 
> See patch commit messages for rationale
> 
> Ideally we would convert other callers of qemu_open_old to use
> qemu_open, and eventually remove qemu_open_old entirely, so every
> caller gets use of Error **errp.
> 
> Improved in v6:
> 
>  - Fix errno regression dup'ing FD
>  - Move qapi header to correct patch
>  - Fix whitespace and commit messages
>  - Converted more use of qemu_open to qemu_open_old after rebase
> 
> Improved in v5:
> 
>  - Drop reporting of flags in failed open call
>  - Split O_CLOEXEC handling off into separate helper
>  - Refactor monitor FD set APIs to simplify their use
> 
> Improved in v4:
> 
>  - Use assert() for programmer mistakes
>  - Split second patch into three distinct parts
>  - Misc typos
>  - Improve commit message
> 
> Improved in v3:
> 
>  - Re-arrange the patches series, so that the conversion to Error
>    takes place first, then the improve O_DIRECT reporting
>  - Rename existing method to qemu_open_old
>  - Use a pair of new methods qemu_open + qemu_create to improve
>    arg checking
> 
> Improved in v2:
> 
>  - Mention that qemu_open_err is preferred over qemu_open
>  - Get rid of obsolete error_report call
>  - Simplify O_DIRECT handling
>  - Fixup iotests for changed error message text
> 
> Daniel P. Berrangé (8):
>   monitor: simplify functions for getting a dup'd fdset entry
>   util: split off a helper for dealing with O_CLOEXEC flag
>   util: rename qemu_open() to qemu_open_old()
>   util: refactor qemu_open_old to split off variadic args handling
>   util: add Error object for qemu_open_internal error reporting
>   util: introduce qemu_open and qemu_create with error reporting
>   util: give a specific error message when O_DIRECT doesn't work
>   block/file: switch to use qemu_open/qemu_create for improved errors
> 
>  accel/kvm/kvm-all.c            |   2 +-
>  backends/rng-random.c          |   2 +-
>  backends/tpm/tpm_passthrough.c |   8 +--
>  block/file-posix.c             |  16 ++---
>  block/file-win32.c             |   5 +-
>  block/vvfat.c                  |   5 +-
>  chardev/char-fd.c              |   2 +-
>  chardev/char-pipe.c            |   6 +-
>  chardev/char.c                 |   2 +-
>  dump/dump.c                    |   2 +-
>  hw/s390x/s390-skeys.c          |   2 +-
>  hw/usb/host-libusb.c           |   2 +-
>  hw/usb/u2f-passthru.c          |   4 +-
>  hw/vfio/common.c               |   4 +-
>  include/monitor/monitor.h      |   3 +-
>  include/qemu/osdep.h           |   9 ++-
>  io/channel-file.c              |   2 +-
>  monitor/misc.c                 |  58 ++++++++----------
>  net/vhost-vdpa.c               |   2 +-
>  os-posix.c                     |   2 +-
>  qga/channel-posix.c            |   4 +-
>  qga/commands-posix.c           |   6 +-
>  stubs/fdset.c                  |   8 +--
>  target/arm/kvm.c               |   2 +-
>  ui/console.c                   |   2 +-
>  util/osdep.c                   | 104 +++++++++++++++++++++++----------
>  util/oslib-posix.c             |   2 +-
>  27 files changed, 150 insertions(+), 116 deletions(-)
> 
> -- 
> 2.26.2
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|