On Thu, May 05, 2022 at 02:52:17PM +0200, Claudio Fontana wrote:
> where it can be reused by other helpers.
> No changes other than the move.
> 
> Note that this makes iohelper now dependent on -lutil, because unused
> (for iohelper) parts of virfile.c contain calls to openpty(3).

Needs -lacl too on F35 at least.

> Signed-off-by: Claudio Fontana <cfont...@suse.de>
> ---
>  src/util/iohelper.c  | 175 -------------------------------------------
>  src/util/meson.build |   4 +
>  src/util/virfile.c   | 172 ++++++++++++++++++++++++++++++++++++++++++
>  src/util/virfile.h   |   2 +
>  4 files changed, 178 insertions(+), 175 deletions(-)
> 

> diff --git a/src/util/meson.build b/src/util/meson.build
> index 24350a3e67..84ef13ba32 100644
> --- a/src/util/meson.build
> +++ b/src/util/meson.build
> @@ -175,6 +175,7 @@ keycode_dep = declare_dependency(
>  
>  io_helper_sources = [
>    'iohelper.c',
> +  'virfile.c',
>  ]
>  
>  virt_util_lib = static_library(
> @@ -213,6 +214,9 @@ if conf.has('WITH_LIBVIRTD')
>        files(io_helper_sources),
>        dtrace_gen_headers,
>      ],
> +    'deps': [

Adding   'acl_dep' here is needed

> +      libutil_dep,
> +    ],
>    }
>  endif
>  
> diff --git a/src/util/virfile.c b/src/util/virfile.c
> index 130b0fbace..b033a27264 100644
> --- a/src/util/virfile.c
> +++ b/src/util/virfile.c
> @@ -4577,3 +4577,175 @@ virFileSetCOW(const char *path,
>      return 0;
>  #endif /* ! __linux__ */
>  }
> +
> +struct runIOParams {
> +    bool isBlockDev;
> +    bool isDirect;
> +    bool isWrite;
> +    int fdin;
> +    const char *fdinname;
> +    int fdout;
> +    const char *fdoutname;
> +};
> +
> +/**
> + * runIOCopy: execute the IO copy based on the passed parameters
> + * @p: the IO parameters
> + *
> + * Execute the copy based on the passed parameters.
> + *
> + * Returns: size transfered, or < 0 on error.
> + */
> +
> +static off_t
> +runIOCopy(const struct runIOParams p)
> +{
> +    g_autofree void *base = NULL; /* Location to be freed */
> +    char *buf = NULL; /* Aligned location within base */
> +    size_t buflen = 1024*1024;
> +    intptr_t alignMask = 64*1024 - 1;
> +    off_t total = 0;
> +
> +#if WITH_POSIX_MEMALIGN
> +    if (posix_memalign(&base, alignMask + 1, buflen))
> +        abort();
> +    buf = base;
> +#else
> +    buf = g_new0(char, buflen + alignMask);
> +    base = buf;
> +    buf = (char *) (((intptr_t) base + alignMask) & ~alignMask);
> +#endif

For reasons I don't understand 'WITH_POSIX_MEMALIGN' is defined
on mingw, but posix_memalign doesn't exist in header files and
thus we fail to compile.

THe original iohelper.c file is not compiled at all unless
WITH_LIBVIRTD is set, which is not on mingw, so we didn't
see this problem before WITH_POSIX_MEMALIGN.


With 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 :|

Reply via email to