Blame SOURCES/0006-v2v-it-vddk-Don-t-use-nbdkit-readahead-filter-with-V.patch

62f9b7
From 4e0b3de57486613c8f28ef7726df728cccd7624b Mon Sep 17 00:00:00 2001
62f9b7
From: "Richard W.M. Jones" <rjones@redhat.com>
62f9b7
Date: Thu, 28 May 2020 10:59:57 +0100
62f9b7
Subject: [PATCH] v2v: -it vddk: Don't use nbdkit readahead filter with VDDK
62f9b7
 (RHBZ#1832805).
62f9b7
62f9b7
This filter deliberately tries to coalesce reads into larger requests.
62f9b7
Unfortunately VMware has low limits on the size of requests it can
62f9b7
serve to a VDDK client and the larger requests would break with errors
62f9b7
like this:
62f9b7
62f9b7
  nbdkit: vddk[3]: error: [NFC ERROR] NfcFssrvrProcessErrorMsg: received NFC error 5 from server: Failed to allocate the requested 33554456 bytes
62f9b7
62f9b7
We already increase the maximum request size by changing the
62f9b7
configuration on the VMware server, but it's not sufficient for VDDK
62f9b7
with the readahead filter.
62f9b7
62f9b7
As readahead is only an optimization, the simplest solution is to
62f9b7
disable this filter when we're using nbdkit-vddk-plugin.
62f9b7
62f9b7
Thanks: Ming Xie
62f9b7
(cherry picked from commit 1438174488f111fa24420758ba3bf0218dc9ee2a)
62f9b7
---
62f9b7
 v2v/nbdkit_sources.ml | 8 ++++++--
62f9b7
 1 file changed, 6 insertions(+), 2 deletions(-)
62f9b7
62f9b7
diff --git a/v2v/nbdkit_sources.ml b/v2v/nbdkit_sources.ml
62f9b7
index 402dfd0e..bfda91a7 100644
62f9b7
--- a/v2v/nbdkit_sources.ml
62f9b7
+++ b/v2v/nbdkit_sources.ml
62f9b7
@@ -97,9 +97,13 @@ let common_create ?bandwidth ?extra_debug ?extra_env plugin_name plugin_args =
62f9b7
   let cmd = Nbdkit.add_filter_if_available cmd "retry" in
62f9b7
 
62f9b7
   (* Adding the readahead filter is always a win for our access
62f9b7
-   * patterns.  However if it doesn't exist don't worry.
62f9b7
+   * patterns.  If it doesn't exist don't worry.  However it
62f9b7
+   * breaks VMware servers (RHBZ#1832805).
62f9b7
    *)
62f9b7
-  let cmd = Nbdkit.add_filter_if_available cmd "readahead" in
62f9b7
+  let cmd =
62f9b7
+    if plugin_name <> "vddk" then
62f9b7
+      Nbdkit.add_filter_if_available cmd "readahead"
62f9b7
+    else cmd in
62f9b7
 
62f9b7
   (* Caching extents speeds up qemu-img, especially its consecutive
62f9b7
    * block_status requests with req_one=1.