[libvirt RFCv6 03/27] iohelper: move runIO function to virfile.c
Claudio Fontana
cfontana at suse.de
Fri May 6 11:51:53 UTC 2022
On 5/6/22 1:02 PM, Daniel P. Berrangé wrote:
> 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.
do we end up needing the whole of the virt_util_lib dependencies for this?
dependencies: [
acl_dep,
audit_dep,
capng_dep,
devmapper_dep,
gnutls_dep,
intl_dep,
libm_dep,
libnl_dep,
libutil_dep,
numactl_dep,
secdriver_dep,
src_dep,
thread_dep,
win32_dep,
yajl_dep,
]
iohelper did not need -lutil or anything else before, just a file.
going back to just a separate helper_runio.c/h would make sense to me, but let me know.
Thanks,
Claudio
>
>> Signed-off-by: Claudio Fontana <cfontana at 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
>
More information about the libvir-list
mailing list