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

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