[libvirt] [libvirt-perl][PATCH 3/7] Introduce Stream::recvHole() and Stream::sendHole()
Daniel P. Berrange
berrange at redhat.com
Tue May 23 15:49:54 UTC 2017
On Tue, May 23, 2017 at 05:05:37PM +0200, Michal Privoznik wrote:
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> Changes | 1 +
> Virt.xs | 28 ++++++++++++++++++++++++++++
> lib/Sys/Virt/Stream.pm | 17 +++++++++++++++++
> 3 files changed, 46 insertions(+)
>
> diff --git a/Changes b/Changes
> index b4a493c..c92c271 100644
> --- a/Changes
> +++ b/Changes
> @@ -6,6 +6,7 @@ Revision history for perl module Sys::Virt
> - Fix send_all() callback helper
> - Introduce flags to Stream::recv() and
> register RECV_STOP_AT_HOLE constant
> + - Introduce Stream::recvHole() and Stream::sendHole()
>
> 3.3.0 2017-05-08
>
> diff --git a/Virt.xs b/Virt.xs
> index 498e711..d112708 100644
> --- a/Virt.xs
> +++ b/Virt.xs
> @@ -7900,6 +7900,34 @@ recv(st, data, nbytes, flags=0)
> RETVAL
>
>
> +SV *
> +recvHole(st, flags=0)
> + virStreamPtr st;
> + unsigned int flags;
> + PREINIT:
> + long long length;
> + CODE:
> + if (virStreamRecvHole(st, &length, flags) < 0)
> + _croak_error();
> +
> + RETVAL = virt_newSVll(length);
> + OUTPUT:
> + RETVAL
> +
> +
> +void
> +sendHole(st, lengthSV, flags=0)
> + virStreamPtr st;
> + SV *lengthSV;
> + unsigned int flags;
> + PREINIT:
> + long long length;
> + PPCODE:
> + length = virt_SvIVll(lengthSV);
> + if (virStreamSendHole(st, length, flags) < 0)
> + _croak_error();
> +
> +
> void
> send_all(stref, handler)
> SV *stref;
> diff --git a/lib/Sys/Virt/Stream.pm b/lib/Sys/Virt/Stream.pm
> index 069895e..5984fb6 100644
> --- a/lib/Sys/Virt/Stream.pm
> +++ b/lib/Sys/Virt/Stream.pm
> @@ -93,6 +93,23 @@ Send upto C<$nbytes> worth of data, copying from C<$data>.
> Returns the number of bytes sent, or -2 if I/O would block,
> or -1 on error.
>
> +=item $rv = $st->recvHole($flags=0)
> +
> +Determine the amount of the empty space (in bytes) to be created
> +in a stream's target file when uploading or downloading sparsely
> +populated files. This is the counterpart to C<sendHole>. The
> +optional C<$flags> parameter is currently unused and defaults to
> +zero if omitted.
> +
> +=item $st->sendHole($length, $flags=0)
> +
> +Rather than transmitting empty file space, this method directs
> +the stream target to create C<$length> bytes of empty space.
> +This method would be used when uploading or downloading sparsely
> +populated files to avoid the needless copy of empty file space.
> +The optional C<$flags> parameter is currently unused and defaults
> +to zero if omitted.
These methods should use '_' rather than camelCase in naming.
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 :|
More information about the libvir-list
mailing list