On Mon, Jul 30, 2018 at 9:23 PM Eric Blake <eblake@redhat.com> wrote:
On 07/30/2018 12:02 PM, Nir Soffer wrote:
> Fix issues Eric found in the original patch:
> https://www.redhat.com/archives/libguestfs/2018-July/msg00072.html
>
> - When handling ENODEV, the caller is expecting EOPNOTSUPP to trigger
>    fallback.
> - ENODEV should be ignored in file_trim.
>
> Tested only on Fedora 28 and RHEL 7.5.
> ---
>   plugins/file/file.c | 33 ++++++++++++++++++++++++---------
>   1 file changed, 24 insertions(+), 9 deletions(-)
>

> +#if defined(FALLOC_FL_PUNCH_HOLE) || defined(FALLOC_FL_ZERO_RANGE)
> +static int
> +do_fallocate(int fd, int mode, off_t offset, off_t len)
> +{
> +  int r = -1;
> +  r = fallocate (fd, mode, offset, len);

Dead assignment to r in the declaration. Could merge these two lines
into one.  Not necessarily worth a respin just for that.

I tried to keep the style used in this file, but here it is indeed never needed.
 

> +  /* kernel 3.10 fails with ENODEV for block device. Kernel >= 4.9 fails
> +     with EOPNOTSUPP in this case. Normalize errno to simplify callers. */

Comment is slightly misleading - new enough kernels coupled with decent
enough block device drivers actually succeed rather than failing. But
I'm fine with checking in the comment as worded.

The comment is only about the error flow. Moving it into the block would
avoid the confusion.
 

ACK

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org