[Libguestfs] [PATCH v2v] vddk: Use blocksize filter to split very large requests

Laszlo Ersek lersek at redhat.com
Tue Feb 15 13:53:59 UTC 2022


On 02/15/22 14:43, Richard W.M. Jones wrote:
> We know that VDDK has problems handling very large single requests.
> It may cause out of memory errors on the server unless a relatively
> obscure server-side configuration change is made.  With modular
> virt-v2v we won't necessarily have fine control over who is connecting
> to the input socket and what sized requests they may make, eg if we
> delegate copying to a third party.
> 
> nbdkit-blocksize-filter offers a simple solution.  It will split
> requests larger than a certain size, ensuring that whatever NBD
> requests come in, we shouldn't cause problems on the VMware server.
> I chose 2M as the maximum request size, but this could be fine-tuned
> later.
> 
> For a longer explanation, see:
> https://gitlab.com/nbdkit/nbdkit/-/commit/6f4746af9ac65c779d6afda9459e9f862a26d145
> ---
>  input/nbdkit_vddk.ml | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/input/nbdkit_vddk.ml b/input/nbdkit_vddk.ml
> index 40dae9baa7..9609c4423f 100644
> --- a/input/nbdkit_vddk.ml
> +++ b/input/nbdkit_vddk.ml
> @@ -144,6 +144,16 @@ See also the virt-v2v-input-vmware(1) manual.") libNN
>     *)
>    Nbdkit.add_filter_if_available cmd "cacheextents";
>  
> +  (* Split very large requests to avoid out of memory errors on the
> +   * server.  Since we're using this filter, also add minblock=512
> +   * although it will make no difference.
> +   *)
> +  if Nbdkit.probe_filter "blocksize" then (
> +    Nbdkit.add_filter cmd "blocksize";
> +    Nbdkit.add_arg cmd "minblock" "512";
> +    Nbdkit.add_arg cmd "maxdata" "2M"
> +  );
> +
>    (* IMPORTANT! Add the COW filter.  It must be furthest away
>     * except for the multi-conn and rate filters.
>     *)
> 

Acked-by: Laszlo Ersek <lersek at redhat.com>




More information about the Libguestfs mailing list