Rebase to new stable branch version 1.30.6
resolves: rhbz#2059289 Backport new scan filter from 1.32. Add new rate filter burstiness setting from 1.32
This commit is contained in:
parent
ad784282b6
commit
9d2dd81620
@ -1,4 +1,4 @@
|
||||
From 90f0cb8f0495ccf71dd3bed89ccb95c0120b5ef7 Mon Sep 17 00:00:00 2001
|
||||
From 3fd637dc2d30cb3001a00ab0f3d5ac0a8875140e Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Fri, 15 Apr 2022 12:08:37 +0100
|
||||
Subject: [PATCH] ssh: Allow the remote file to be created
|
||||
|
@ -1,4 +1,4 @@
|
||||
From af145808cecd18f6f80b672b5988ec1064f9b4a7 Mon Sep 17 00:00:00 2001
|
||||
From 3e21d31621739533b3bdb77350b4107123b5b5ab Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 16 Apr 2022 18:39:13 +0100
|
||||
Subject: [PATCH] readahead: Rewrite this filter so it prefetches using .cache
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 5d679d01417a81a3a981520d2a0332e2370a2536 Mon Sep 17 00:00:00 2001
|
||||
From cbd0205229240f4a01e9ce7ef6ee4ba55d2b958c Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 21 Apr 2022 16:14:46 +0100
|
||||
Subject: [PATCH] readahead: Fix test
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 71755e96c423874e39a2ed85eb5d2e1c12c643f2 Mon Sep 17 00:00:00 2001
|
||||
From 42213b71009e7e5f1f50df78c41ba49beebcf08b Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 30 Apr 2022 12:35:07 +0100
|
||||
Subject: [PATCH] New filter: luks
|
||||
@ -55,7 +55,7 @@ index 4d2a9796..0f5dc41d 100644
|
||||
|
||||
* The filter should open a new connection to the plugin per background
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index e391f110..2349b49e 100644
|
||||
index d958ff2c..45a7baf9 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -127,6 +127,7 @@ filters="\
|
||||
@ -1597,10 +1597,10 @@ index f8f0e198..b95e7349 100644
|
||||
|
||||
=head1 AUTHORS
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index 0e7ce711..fa66a112 100644
|
||||
index b9c1137c..b041b186 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -1590,6 +1590,18 @@ EXTRA_DIST += \
|
||||
@@ -1594,6 +1594,18 @@ EXTRA_DIST += \
|
||||
test-log-script-info.sh \
|
||||
$(NULL)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From ddda62b9faef8cb2cdf4bc4b60bead34f0f143d5 Mon Sep 17 00:00:00 2001
|
||||
From fd5de2f6b2bc4e95e98ca44624d04809d989d1a0 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sun, 8 May 2022 12:13:39 +0100
|
||||
Subject: [PATCH] luks: Disable filter with old GnuTLS in Debian 10
|
||||
@ -36,7 +36,7 @@ Fixes: commit 468919dce6c5eb57503eacac0f67e5dd87c58e6c
|
||||
3 files changed, 7 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 2349b49e..05db668e 100644
|
||||
index 45a7baf9..4c997b5b 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -636,11 +636,14 @@ AS_IF([test "x$GNUTLS_LIBS" != "x"],[
|
||||
@ -79,10 +79,10 @@ index 30089621..622e5c3d 100644
|
||||
filter_LTLIBRARIES = nbdkit-luks-filter.la
|
||||
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index fa66a112..ffeef097 100644
|
||||
index b041b186..937d2919 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -1591,7 +1591,7 @@ EXTRA_DIST += \
|
||||
@@ -1595,7 +1595,7 @@ EXTRA_DIST += \
|
||||
$(NULL)
|
||||
|
||||
# luks filter test.
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 95f27197a7ea2d0fb0f19162152d0d72eeead752 Mon Sep 17 00:00:00 2001
|
||||
From f83c628b420fa38d9a224d2a7296f7386bf1bb70 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sun, 8 May 2022 12:30:09 +0100
|
||||
Subject: [PATCH] luks: Various fixes for Clang
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 6c052a340d7452feae84845965fdc99542da2404 Mon Sep 17 00:00:00 2001
|
||||
From dbf2d150c19b2fdad0ee786ace3ef9d3849069dd Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sun, 8 May 2022 12:38:00 +0100
|
||||
Subject: [PATCH] luks: Link with libcompat on Windows
|
||||
|
@ -1,4 +1,4 @@
|
||||
From c34ec6b17c25f94020c83a18482e8eac8e5fa8c8 Mon Sep 17 00:00:00 2001
|
||||
From 792c7e83ea2e440cd4c3433c2ad01cc509502100 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sun, 8 May 2022 16:13:13 +0100
|
||||
Subject: [PATCH] luks: Refactor the filter
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 64ce47cc59c062cf64cb7bf7a9861f4c5d767514 Mon Sep 17 00:00:00 2001
|
||||
From 8b1ce219c6fc62c848412f6ca1c1b2b94550cc7a Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sun, 8 May 2022 18:05:45 +0100
|
||||
Subject: [PATCH] tests: luks: Reduce time taken to run these tests
|
||||
|
@ -1,4 +1,4 @@
|
||||
From e19ef7726379acf90dcff248e90813898266d2b4 Mon Sep 17 00:00:00 2001
|
||||
From 633cc64db2654a8f64b0a699fb2135130da0b51d Mon Sep 17 00:00:00 2001
|
||||
From: Nikolaus Rath <Nikolaus@rath.org>
|
||||
Date: Mon, 9 May 2022 10:04:30 +0100
|
||||
Subject: [PATCH] Add nbdkit.parse_size() Python function.
|
||||
|
34
0011-cache-Fix-cross-reference-nbdkit-readahead-filter.patch
Normal file
34
0011-cache-Fix-cross-reference-nbdkit-readahead-filter.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From 7150142f1aa19d8ae3ba412583dc2452cb3ab865 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 14 May 2022 13:47:19 +0100
|
||||
Subject: [PATCH] cache: Fix cross-reference nbdkit-readahead-filter
|
||||
|
||||
After the readahead filter was reimplemented so that it only issues
|
||||
cache requests, the two filters should be used together, not as
|
||||
alternatives. Update the documentation of the cache filter to make
|
||||
this clear.
|
||||
|
||||
Fixes: commit 2ff548d66ad3eae87868402ec5b3319edd12090f
|
||||
(cherry picked from commit 894771f39a8fd2632caad00e497146d69cac4bac)
|
||||
---
|
||||
filters/cache/nbdkit-cache-filter.pod | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/filters/cache/nbdkit-cache-filter.pod b/filters/cache/nbdkit-cache-filter.pod
|
||||
index d85fef09..f4234e1a 100644
|
||||
--- a/filters/cache/nbdkit-cache-filter.pod
|
||||
+++ b/filters/cache/nbdkit-cache-filter.pod
|
||||
@@ -28,8 +28,8 @@ loss, as the name suggests).
|
||||
|
||||
This filter only caches image contents. To cache image metadata, use
|
||||
L<nbdkit-cacheextents-filter(1)> between this filter and the plugin.
|
||||
-To accelerate sequential reads, use L<nbdkit-readahead-filter(1)>
|
||||
-instead.
|
||||
+To accelerate sequential reads, use L<nbdkit-readahead-filter(1)> on
|
||||
+top of this filter.
|
||||
|
||||
=head1 PARAMETERS
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
48
0012-curl-Don-t-document-curl-plugin-readahead-filter.patch
Normal file
48
0012-curl-Don-t-document-curl-plugin-readahead-filter.patch
Normal file
@ -0,0 +1,48 @@
|
||||
From 236b50f2c89237de0dc27df7babc0c12cc124cba Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 14 May 2022 14:00:16 +0100
|
||||
Subject: [PATCH] curl: Don't document curl plugin + readahead filter
|
||||
|
||||
nbdkit readahead filter does not support plugins which do not use the
|
||||
parallel thread model.
|
||||
|
||||
Fixes: commit 2ff548d66ad3eae87868402ec5b3319edd12090f
|
||||
(cherry picked from commit 92fbb76d11b9f17c527debd803aa2505f3642783)
|
||||
---
|
||||
docs/nbdkit-captive.pod | 7 -------
|
||||
plugins/curl/nbdkit-curl-plugin.pod | 1 -
|
||||
2 files changed, 8 deletions(-)
|
||||
|
||||
diff --git a/docs/nbdkit-captive.pod b/docs/nbdkit-captive.pod
|
||||
index eafe36d8..d41a824d 100644
|
||||
--- a/docs/nbdkit-captive.pod
|
||||
+++ b/docs/nbdkit-captive.pod
|
||||
@@ -110,13 +110,6 @@ an embedded disk image. To copy it out:
|
||||
|
||||
nbdkit -U - example1 --run 'qemu-img convert $nbd disk.img'
|
||||
|
||||
-If plugin requests have a high overhead (for example making HTTP
|
||||
-requests to a remote server), adding L<nbdkit-readahead-filter(1)> may
|
||||
-help performance:
|
||||
-
|
||||
- nbdkit -U - --filter=readahead curl https://example.com/disk.img \
|
||||
- --run 'qemu-img convert $nbd disk.img'
|
||||
-
|
||||
If the source suffers from temporary network failures
|
||||
L<nbdkit-retry-filter(1)> or L<nbdkit-retry-request-filter(1)> may
|
||||
help.
|
||||
diff --git a/plugins/curl/nbdkit-curl-plugin.pod b/plugins/curl/nbdkit-curl-plugin.pod
|
||||
index 54fce66c..fc422ca2 100644
|
||||
--- a/plugins/curl/nbdkit-curl-plugin.pod
|
||||
+++ b/plugins/curl/nbdkit-curl-plugin.pod
|
||||
@@ -509,7 +509,6 @@ L<CURLOPT_VERBOSE(3)>,
|
||||
L<nbdkit(1)>,
|
||||
L<nbdkit-extentlist-filter(1)>,
|
||||
L<nbdkit-file-plugin(1)>,
|
||||
-L<nbdkit-readahead-filter(1)>,
|
||||
L<nbdkit-retry-filter(1)>,
|
||||
L<nbdkit-retry-request-filter(1)>,
|
||||
L<nbdkit-ssh-plugin(1)>,
|
||||
--
|
||||
2.31.1
|
||||
|
1021
0013-New-filter-scan.patch
Normal file
1021
0013-New-filter-scan.patch
Normal file
File diff suppressed because it is too large
Load Diff
67
0014-scan-Remove-condition-variable.patch
Normal file
67
0014-scan-Remove-condition-variable.patch
Normal file
@ -0,0 +1,67 @@
|
||||
From 6087920696f9f8e727a126093ec85219a9786522 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 14 May 2022 18:54:32 +0100
|
||||
Subject: [PATCH] scan: Remove condition variable
|
||||
|
||||
This was copied in from the readahead filter code, but is not actually
|
||||
needed in this filter because it never has to sleep waiting for a
|
||||
command.
|
||||
|
||||
Fixes: commit 65c20a09ceacb4431986a2982f2c2e746df63fcb
|
||||
(cherry picked from commit 43ad586698347997cdfa1bd56bfed0292f89f134)
|
||||
---
|
||||
filters/scan/scan.c | 6 ------
|
||||
filters/scan/scan.h | 1 -
|
||||
2 files changed, 7 deletions(-)
|
||||
|
||||
diff --git a/filters/scan/scan.c b/filters/scan/scan.c
|
||||
index ac5b18d2..8a966577 100644
|
||||
--- a/filters/scan/scan.c
|
||||
+++ b/filters/scan/scan.c
|
||||
@@ -136,9 +136,6 @@ send_command_to_background_thread (struct bgthread_ctrl *ctrl,
|
||||
ACQUIRE_LOCK_FOR_CURRENT_SCOPE (&ctrl->lock);
|
||||
if (command_queue_append (&ctrl->cmds, cmd) == -1)
|
||||
return -1;
|
||||
- /* Signal the thread if it could be sleeping on an empty queue. */
|
||||
- if (ctrl->cmds.len == 1)
|
||||
- pthread_cond_signal (&ctrl->cond);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -199,13 +196,11 @@ scan_prepare (nbdkit_next *next, void *handle, int readonly)
|
||||
/* Create the background thread. */
|
||||
h->ctrl.cmds = (command_queue) empty_vector;
|
||||
pthread_mutex_init (&h->ctrl.lock, NULL);
|
||||
- pthread_cond_init (&h->ctrl.cond, NULL);
|
||||
|
||||
err = pthread_create (&h->thread, NULL, scan_thread, &h->ctrl);
|
||||
if (err != 0) {
|
||||
errno = err;
|
||||
nbdkit_error ("pthread_create: %m");
|
||||
- pthread_cond_destroy (&h->ctrl.cond);
|
||||
pthread_mutex_destroy (&h->ctrl.lock);
|
||||
return -1;
|
||||
}
|
||||
@@ -227,7 +222,6 @@ scan_finalize (nbdkit_next *next, void *handle)
|
||||
|
||||
send_command_to_background_thread (&h->ctrl, quit_cmd);
|
||||
pthread_join (h->thread, NULL);
|
||||
- pthread_cond_destroy (&h->ctrl.cond);
|
||||
pthread_mutex_destroy (&h->ctrl.lock);
|
||||
command_queue_reset (&h->ctrl.cmds);
|
||||
h->running = false;
|
||||
diff --git a/filters/scan/scan.h b/filters/scan/scan.h
|
||||
index 7ff39310..98c0228b 100644
|
||||
--- a/filters/scan/scan.h
|
||||
+++ b/filters/scan/scan.h
|
||||
@@ -54,7 +54,6 @@ DEFINE_VECTOR_TYPE(command_queue, struct command);
|
||||
struct bgthread_ctrl {
|
||||
command_queue cmds; /* Command queue. */
|
||||
pthread_mutex_t lock; /* Lock for queue. */
|
||||
- pthread_cond_t cond; /* Condition queue size 0 -> 1. */
|
||||
nbdkit_next *next; /* For sending cache operations. */
|
||||
};
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
57
0015-scan-Small-typographical-fix-in-manual.patch
Normal file
57
0015-scan-Small-typographical-fix-in-manual.patch
Normal file
@ -0,0 +1,57 @@
|
||||
From b827d9b373e53468e7c94b4dfee27f0e12310a35 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 14 May 2022 19:02:48 +0100
|
||||
Subject: [PATCH] scan: Small typographical fix in manual
|
||||
|
||||
Fixes: commit 65c20a09ceacb4431986a2982f2c2e746df63fcb
|
||||
(cherry picked from commit 67d4e3437d2e28fa3ce1c4b3818d2b1e7939c5ec)
|
||||
---
|
||||
filters/scan/nbdkit-scan-filter.pod | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/filters/scan/nbdkit-scan-filter.pod b/filters/scan/nbdkit-scan-filter.pod
|
||||
index 4a8d0ef9..2fe9bb80 100644
|
||||
--- a/filters/scan/nbdkit-scan-filter.pod
|
||||
+++ b/filters/scan/nbdkit-scan-filter.pod
|
||||
@@ -26,8 +26,8 @@ below (after) this filter, giving approximately the same effect.
|
||||
L<nbdkit-cow-filter(1)> can be used instead of nbdkit-cache-filter, if
|
||||
you add the C<cow-on-cache=true> option.
|
||||
|
||||
-Various C<scan-*> parameters can be used to tune scanning, although
|
||||
-the defaults should be suitable in most cases.
|
||||
+Various parameters can be used to tune scanning, although the defaults
|
||||
+should be suitable in most cases.
|
||||
|
||||
A similar filter is L<nbdkit-readahead-filter(1)>.
|
||||
|
||||
@@ -38,23 +38,23 @@ filter will print a warning message if this happens.
|
||||
|
||||
=over 4
|
||||
|
||||
-=item Thread model must be parallel *
|
||||
+=item Thread model must be parallel*
|
||||
|
||||
For example L<nbdkit-curl-plugin(1)> only supports
|
||||
C<serialize_requests>, and so this filter cannot perform prefetches in
|
||||
parallel with the read requests.
|
||||
|
||||
-=item Only scans while clients are connected *
|
||||
+=item Only scans while clients are connected*
|
||||
|
||||
The current filter only scans while there is at least one client
|
||||
connected.
|
||||
|
||||
-=item Only scans the default export *
|
||||
+=item Only scans the default export*
|
||||
|
||||
The current filter only scans the default export and ignores all
|
||||
clients connecting to the non-default export name.
|
||||
|
||||
-* We may be able to lift these restrictions in future.
|
||||
+*We may be able to lift these restrictions in future.
|
||||
|
||||
=item Underlying filters or plugin must support C<.cache> (prefetch)
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
@ -0,0 +1,34 @@
|
||||
From 5d74215f62f62dedcbf5750f111cc1af440bbb36 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 14 May 2022 20:57:38 +0100
|
||||
Subject: [PATCH] ssh: Don't reference readahead or scan filters from this
|
||||
plugin
|
||||
|
||||
These filters do not support plugins which do not use the parallel
|
||||
thread model.
|
||||
|
||||
Fixes: commit 2ff548d66ad3eae87868402ec5b3319edd12090f
|
||||
Fixes: commit 65c20a09ceacb4431986a2982f2c2e746df63fcb
|
||||
See-also: commit 92fbb76d11b9f17c527debd803aa2505f3642783
|
||||
(cherry picked from commit 7eb356719376c4d0b2379cea5d39c81602d2d304)
|
||||
---
|
||||
plugins/ssh/nbdkit-ssh-plugin.pod | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/plugins/ssh/nbdkit-ssh-plugin.pod b/plugins/ssh/nbdkit-ssh-plugin.pod
|
||||
index 214957d6..bb922d37 100644
|
||||
--- a/plugins/ssh/nbdkit-ssh-plugin.pod
|
||||
+++ b/plugins/ssh/nbdkit-ssh-plugin.pod
|
||||
@@ -347,9 +347,7 @@ C<nbdkit-ssh-plugin> first appeared in nbdkit 1.12.
|
||||
L<nbdkit(1)>,
|
||||
L<nbdkit-curl-plugin(1)>,
|
||||
L<nbdkit-extentlist-filter(1)>,
|
||||
-L<nbdkit-readahead-filter(1)>,
|
||||
L<nbdkit-retry-filter(1)>,
|
||||
-L<nbdkit-scan-filter(1)>,
|
||||
L<nbdkit-plugin(3)>,
|
||||
L<ssh(1)>,
|
||||
L<ssh-agent(1)>,
|
||||
--
|
||||
2.31.1
|
||||
|
@ -0,0 +1,56 @@
|
||||
From 010c19b3b77b12d5070ae380e4293ba8f2b39a4a Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Tue, 17 May 2022 13:20:17 +0100
|
||||
Subject: [PATCH] scan: Fix bound so we don't try to prefetch beyond end of
|
||||
disk
|
||||
|
||||
An off-by-one error in the bound could cause the filter to try to
|
||||
prefetch beyond the end of the underlying plugin. This would cause
|
||||
nbdkit to crash with this assertion failure:
|
||||
|
||||
nbdkit: backend.c:782: backend_cache: Assertion `backend_valid_range (c, offset, count)' failed.
|
||||
|
||||
The sequence of events was:
|
||||
|
||||
- scan filter background thread started
|
||||
|
||||
- client reads to the end of the disk
|
||||
|
||||
- background thread skips ahead to end of disk (offset == size)
|
||||
|
||||
- background thread tries to prefetch from this point
|
||||
|
||||
In the final step the calculations caused to the background thread to
|
||||
prefetch a scan-size block beyond the end of the plugin.
|
||||
|
||||
Fixes: commit 65c20a09ceacb4431986a2982f2c2e746df63fcb
|
||||
(cherry picked from commit 953643429b8c57b4dd20a6c0e5b83704ae9a0e88)
|
||||
---
|
||||
filters/scan/bgthread.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/filters/scan/bgthread.c b/filters/scan/bgthread.c
|
||||
index 384e79b6..5fa5f27f 100644
|
||||
--- a/filters/scan/bgthread.c
|
||||
+++ b/filters/scan/bgthread.c
|
||||
@@ -113,12 +113,12 @@ scan_thread (void *vp)
|
||||
}
|
||||
|
||||
adjust_clock (offset);
|
||||
- if (offset > size)
|
||||
- continue;
|
||||
|
||||
- /* Issue the next prefetch. */
|
||||
- n = MIN (scan_size, size - offset);
|
||||
- ctrl->next->cache (ctrl->next, n, offset, 0, NULL);
|
||||
+ if (offset < size) {
|
||||
+ /* Issue the next prefetch. */
|
||||
+ n = MIN (scan_size, size - offset);
|
||||
+ ctrl->next->cache (ctrl->next, n, offset, 0, NULL);
|
||||
+ }
|
||||
}
|
||||
|
||||
if (scan_forever) {
|
||||
--
|
||||
2.31.1
|
||||
|
110
0018-tests-Add-a-regression-test-for-LUKS-zeroing-crash.patch
Normal file
110
0018-tests-Add-a-regression-test-for-LUKS-zeroing-crash.patch
Normal file
@ -0,0 +1,110 @@
|
||||
From f335c297cf4f8c3e2a92c626151c514f816816a8 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Fri, 10 Jun 2022 22:11:44 +0100
|
||||
Subject: [PATCH] tests: Add a regression test for LUKS zeroing crash
|
||||
|
||||
https://listman.redhat.com/archives/libguestfs/2022-June/029188.html
|
||||
(cherry picked from commit 7ab2ef96803bfc385f786be82ebfdd4cc977d504)
|
||||
---
|
||||
tests/Makefile.am | 2 ++
|
||||
tests/test-luks-copy-zero.sh | 70 ++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 72 insertions(+)
|
||||
create mode 100755 tests/test-luks-copy-zero.sh
|
||||
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index 6a63e4e8..824232d1 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -1599,11 +1599,13 @@ if HAVE_GNUTLS_PBKDF2
|
||||
TESTS += \
|
||||
test-luks-info.sh \
|
||||
test-luks-copy.sh \
|
||||
+ test-luks-copy-zero.sh \
|
||||
$(NULL)
|
||||
endif
|
||||
EXTRA_DIST += \
|
||||
test-luks-info.sh \
|
||||
test-luks-copy.sh \
|
||||
+ test-luks-copy-zero.sh \
|
||||
$(NULL)
|
||||
|
||||
# multi-conn filter test.
|
||||
diff --git a/tests/test-luks-copy-zero.sh b/tests/test-luks-copy-zero.sh
|
||||
new file mode 100755
|
||||
index 00000000..6ff560e3
|
||||
--- /dev/null
|
||||
+++ b/tests/test-luks-copy-zero.sh
|
||||
@@ -0,0 +1,70 @@
|
||||
+#!/usr/bin/env bash
|
||||
+# nbdkit
|
||||
+# Copyright (C) 2018-2022 Red Hat Inc.
|
||||
+#
|
||||
+# Redistribution and use in source and binary forms, with or without
|
||||
+# modification, are permitted provided that the following conditions are
|
||||
+# met:
|
||||
+#
|
||||
+# * Redistributions of source code must retain the above copyright
|
||||
+# notice, this list of conditions and the following disclaimer.
|
||||
+#
|
||||
+# * Redistributions in binary form must reproduce the above copyright
|
||||
+# notice, this list of conditions and the following disclaimer in the
|
||||
+# documentation and/or other materials provided with the distribution.
|
||||
+#
|
||||
+# * Neither the name of Red Hat nor the names of its contributors may be
|
||||
+# used to endorse or promote products derived from this software without
|
||||
+# specific prior written permission.
|
||||
+#
|
||||
+# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
|
||||
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
+# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
|
||||
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||
+# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
+# SUCH DAMAGE.
|
||||
+
|
||||
+# Regression test for:
|
||||
+# https://listman.redhat.com/archives/libguestfs/2022-June/029188.html
|
||||
+
|
||||
+source ./functions.sh
|
||||
+set -e
|
||||
+set -x
|
||||
+
|
||||
+requires qemu-img --version
|
||||
+requires nbdcopy --version
|
||||
+requires truncate --version
|
||||
+requires file --version
|
||||
+requires_filter luks
|
||||
+
|
||||
+encrypt_disk=luks-copy-zero1.img
|
||||
+zero_disk=luks-copy-zero2.img
|
||||
+cleanup_fn rm -f $encrypt_disk $zero_disk
|
||||
+rm -f $encrypt_disk $zero_disk
|
||||
+
|
||||
+# Create an empty encrypted disk container.
|
||||
+qemu-img create -f luks \
|
||||
+ --object secret,data=123456,id=sec0 \
|
||||
+ -o key-secret=sec0 \
|
||||
+ $encrypt_disk 100M
|
||||
+
|
||||
+# Create an all zeroes disk of the same size.
|
||||
+truncate -s 100M $zero_disk
|
||||
+
|
||||
+# Using nbdkit-luks-filter, write the zero disk into the encrypted
|
||||
+# disk. nbdcopy will do this using NBD_CMD_ZERO operations.
|
||||
+nbdkit -U - -fv \
|
||||
+ file $encrypt_disk --filter=luks passphrase=123456 \
|
||||
+ --run "nbdcopy -C 1 $zero_disk \$nbd"
|
||||
+
|
||||
+# Check that the encrypted disk is still a LUKS disk. If zeroing is
|
||||
+# wrong in the filter it's possible that it writes through to the
|
||||
+# underlying disk, erasing the container.
|
||||
+file $encrypt_disk
|
||||
+file $encrypt_disk | grep "LUKS encrypted file"
|
||||
--
|
||||
2.31.1
|
||||
|
121
0019-rate-Allow-burstiness-to-be-controlled.patch
Normal file
121
0019-rate-Allow-burstiness-to-be-controlled.patch
Normal file
@ -0,0 +1,121 @@
|
||||
From d21cdcc2913994bcc6871f235cfe00f73273ba7a Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 11 Jun 2022 12:34:02 +0100
|
||||
Subject: [PATCH] rate: Allow burstiness to be controlled
|
||||
|
||||
Previously it was fixed at 2.0 seconds. Allowing it to be adjusted
|
||||
upwards could help with large, lumpy requests.
|
||||
|
||||
(cherry picked from commit f79e951c20510381d5cd83c203c670874a4978f4)
|
||||
---
|
||||
filters/rate/nbdkit-rate-filter.pod | 12 ++++++++++--
|
||||
filters/rate/rate.c | 20 +++++++++++++-------
|
||||
tests/test-rate.sh | 2 +-
|
||||
3 files changed, 24 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/filters/rate/nbdkit-rate-filter.pod b/filters/rate/nbdkit-rate-filter.pod
|
||||
index 8956e641..09ce7dbc 100644
|
||||
--- a/filters/rate/nbdkit-rate-filter.pod
|
||||
+++ b/filters/rate/nbdkit-rate-filter.pod
|
||||
@@ -9,6 +9,7 @@ nbdkit-rate-filter - limit bandwidth by connection or server
|
||||
[connection-rate=BITSPERSEC]
|
||||
[rate-file=FILENAME]
|
||||
[connection-rate-file=FILENAME]
|
||||
+ [burstiness=SECS]
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@@ -63,6 +64,13 @@ Limit total bandwidth across all connections to C<BITSPERSEC>.
|
||||
Adjust the per-connection or total bandwidth dynamically by writing
|
||||
C<BITSPERSEC> into C<FILENAME>. See L</DYNAMIC ADJUSTMENT> below.
|
||||
|
||||
+=item B<burstiness=>SECS
|
||||
+
|
||||
+Control the bucket capacity, expressed as a length of time in
|
||||
+"rate-equivalent seconds" that the client is allowed to burst for
|
||||
+after a period of inactivity. The default is 2.0 seconds. It's not
|
||||
+recommended to set this smaller than the default.
|
||||
+
|
||||
=back
|
||||
|
||||
C<BITSPERSEC> can be specified as a simple number, or you can use a
|
||||
@@ -105,8 +113,8 @@ If the size of requests made by your client is much larger than the
|
||||
rate limit then you can see long, lumpy sleeps in this filter. In the
|
||||
future we may modify the filter to break up large requests
|
||||
automatically in order to limit the length of sleeps. Placing the
|
||||
-L<nbdkit-blocksize-filter(1)> in front of this filter may help in the
|
||||
-meantime.
|
||||
+L<nbdkit-blocksize-filter(1)> in front of this filter, or adjusting
|
||||
+C<burstiness> upwards may help.
|
||||
|
||||
=head1 FILES
|
||||
|
||||
diff --git a/filters/rate/rate.c b/filters/rate/rate.c
|
||||
index 1a70d212..26082f8c 100644
|
||||
--- a/filters/rate/rate.c
|
||||
+++ b/filters/rate/rate.c
|
||||
@@ -68,10 +68,9 @@ static char *rate_file = NULL;
|
||||
|
||||
/* Bucket capacity controls the burst rate. It is expressed as the
|
||||
* length of time in "rate-equivalent seconds" that the client can
|
||||
- * burst for after a period of inactivity. This could be adjustable
|
||||
- * in future.
|
||||
+ * burst for after a period of inactivity.
|
||||
*/
|
||||
-#define BUCKET_CAPACITY 2.0
|
||||
+static double bucket_capacity = 2.0 /* seconds */;
|
||||
|
||||
/* Global read and write buckets. */
|
||||
static struct bucket read_bucket;
|
||||
@@ -142,6 +141,13 @@ rate_config (nbdkit_next_config *next, nbdkit_backend *nxdata,
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
+ else if (strcmp (key, "burstiness") == 0) {
|
||||
+ if (sscanf (value, "%lg", &bucket_capacity) != 1) {
|
||||
+ nbdkit_error ("burstiness must be a floating point number (seconds)");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ return 0;
|
||||
+ }
|
||||
else
|
||||
return next (nxdata, key, value);
|
||||
}
|
||||
@@ -150,8 +156,8 @@ static int
|
||||
rate_get_ready (int thread_model)
|
||||
{
|
||||
/* Initialize the global buckets. */
|
||||
- bucket_init (&read_bucket, rate, BUCKET_CAPACITY);
|
||||
- bucket_init (&write_bucket, rate, BUCKET_CAPACITY);
|
||||
+ bucket_init (&read_bucket, rate, bucket_capacity);
|
||||
+ bucket_init (&write_bucket, rate, bucket_capacity);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -178,8 +184,8 @@ rate_open (nbdkit_next_open *next, nbdkit_context *nxdata,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- bucket_init (&h->read_bucket, connection_rate, BUCKET_CAPACITY);
|
||||
- bucket_init (&h->write_bucket, connection_rate, BUCKET_CAPACITY);
|
||||
+ bucket_init (&h->read_bucket, connection_rate, bucket_capacity);
|
||||
+ bucket_init (&h->write_bucket, connection_rate, bucket_capacity);
|
||||
pthread_mutex_init (&h->read_bucket_lock, NULL);
|
||||
pthread_mutex_init (&h->write_bucket_lock, NULL);
|
||||
|
||||
diff --git a/tests/test-rate.sh b/tests/test-rate.sh
|
||||
index 7305c928..ff781c21 100755
|
||||
--- a/tests/test-rate.sh
|
||||
+++ b/tests/test-rate.sh
|
||||
@@ -56,7 +56,7 @@ nbdkit -U - \
|
||||
--filter=blocksize --filter=rate \
|
||||
pattern 25M \
|
||||
maxdata=65536 \
|
||||
- rate=10M \
|
||||
+ rate=10M burstiness=2.0 \
|
||||
--run 'nbdcopy "$uri" rate.img'
|
||||
end_t=$SECONDS
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
21
nbdkit.spec
21
nbdkit.spec
@ -52,7 +52,7 @@ ExclusiveArch: x86_64
|
||||
%global source_directory 1.30-stable
|
||||
|
||||
Name: nbdkit
|
||||
Version: 1.30.5
|
||||
Version: 1.30.6
|
||||
Release: 1%{?dist}
|
||||
Summary: NBD server
|
||||
|
||||
@ -88,6 +88,15 @@ Patch0007: 0007-luks-Link-with-libcompat-on-Windows.patch
|
||||
Patch0008: 0008-luks-Refactor-the-filter.patch
|
||||
Patch0009: 0009-tests-luks-Reduce-time-taken-to-run-these-tests.patch
|
||||
Patch0010: 0010-Add-nbdkit.parse_size-Python-function.patch
|
||||
Patch0011: 0011-cache-Fix-cross-reference-nbdkit-readahead-filter.patch
|
||||
Patch0012: 0012-curl-Don-t-document-curl-plugin-readahead-filter.patch
|
||||
Patch0013: 0013-New-filter-scan.patch
|
||||
Patch0014: 0014-scan-Remove-condition-variable.patch
|
||||
Patch0015: 0015-scan-Small-typographical-fix-in-manual.patch
|
||||
Patch0016: 0016-ssh-Don-t-reference-readahead-or-scan-filters-from-t.patch
|
||||
Patch0017: 0017-scan-Fix-bound-so-we-don-t-try-to-prefetch-beyond-en.patch
|
||||
Patch0018: 0018-tests-Add-a-regression-test-for-LUKS-zeroing-crash.patch
|
||||
Patch0019: 0019-rate-Allow-burstiness-to-be-controlled.patch
|
||||
|
||||
# For automatic RPM Provides generation.
|
||||
# See: https://rpm-software-management.github.io/rpm/manual/dependency_generators.html
|
||||
@ -587,6 +596,8 @@ nbdkit-retry-filter Reopen connection on error.
|
||||
|
||||
nbdkit-retry-request-filter Retry single requests on error.
|
||||
|
||||
nbdkit-scan-filter Prefetch data ahead of sequential reads.
|
||||
|
||||
nbdkit-stats-filter Display statistics about operations.
|
||||
|
||||
nbdkit-swab-filter Filter for swapping byte order.
|
||||
@ -1072,6 +1083,7 @@ export LIBGUESTFS_TRACE=1
|
||||
%{_libdir}/%{name}/filters/nbdkit-readahead-filter.so
|
||||
%{_libdir}/%{name}/filters/nbdkit-retry-filter.so
|
||||
%{_libdir}/%{name}/filters/nbdkit-retry-request-filter.so
|
||||
%{_libdir}/%{name}/filters/nbdkit-scan-filter.so
|
||||
%{_libdir}/%{name}/filters/nbdkit-stats-filter.so
|
||||
%{_libdir}/%{name}/filters/nbdkit-swab-filter.so
|
||||
%{_libdir}/%{name}/filters/nbdkit-tls-fallback-filter.so
|
||||
@ -1108,6 +1120,7 @@ export LIBGUESTFS_TRACE=1
|
||||
%{_mandir}/man1/nbdkit-readahead-filter.1*
|
||||
%{_mandir}/man1/nbdkit-retry-filter.1*
|
||||
%{_mandir}/man1/nbdkit-retry-request-filter.1*
|
||||
%{_mandir}/man1/nbdkit-scan-filter.1*
|
||||
%{_mandir}/man1/nbdkit-stats-filter.1*
|
||||
%{_mandir}/man1/nbdkit-swab-filter.1*
|
||||
%{_mandir}/man1/nbdkit-tls-fallback-filter.1*
|
||||
@ -1191,8 +1204,8 @@ export LIBGUESTFS_TRACE=1
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Apr 26 2022 Richard W.M. Jones <rjones@redhat.com> - 1.30.5-1
|
||||
- Rebase to new stable branch version 1.30.5
|
||||
* Mon Jun 13 2022 Richard W.M. Jones <rjones@redhat.com> - 1.30.6-1
|
||||
- Rebase to new stable branch version 1.30.6
|
||||
resolves: rhbz#2059289
|
||||
- Add automatic provides generator and subpackage nbdkit-srpm-macros
|
||||
resolves: rhbz#2059291
|
||||
@ -1209,7 +1222,9 @@ export LIBGUESTFS_TRACE=1
|
||||
resolves: rhbz#2083617
|
||||
- Backport new readahead filter from 1.32.
|
||||
- Backport new LUKS filter from 1.32.
|
||||
- Backport new scan filter from 1.32.
|
||||
- Add new Python binding for nbdkit_parse_size from 1.32
|
||||
- Add new rate filter burstiness setting from 1.32
|
||||
|
||||
* Mon Jan 24 2022 Richard W.M. Jones <rjones@redhat.com> - 1.28.5-1
|
||||
- Rebase to new stable branch version 1.28.5
|
||||
|
4
sources
4
sources
@ -1,2 +1,2 @@
|
||||
SHA512 (nbdkit-1.30.5.tar.gz) = 033f06a23f7f227acb8516994582c94033a35d11ff8d7db8ca310b73cf591ea1a4833dbfbaf58e653556a1bcf30cbca21494b7f9e61a1a8cafd566993b24a799
|
||||
SHA512 (nbdkit-1.30.5.tar.gz.sig) = c8e342ff168b3308b888658f2958a2ccfd2e2b37664f65d3a71feb495085bd60834b4142103c6cf51e83b5d08f2815ab392b5afe5077b9a8fbfee9218db9bdf1
|
||||
SHA512 (nbdkit-1.30.6.tar.gz) = c12b4931411894d59bed32551d1a89326f88e19569ce278531df5de9a2fb32118a6092af83596d99f5a50f792e3cfa676809abb533e75263a3100a0772c008c4
|
||||
SHA512 (nbdkit-1.30.6.tar.gz.sig) = 21a7e3f2747f5b9ef7f7c1acfaa21024e1d6dcdc2f541ec8c4146ccffb9c7d8d3b6fb57fe8c9968d5db8454b616dd8e221a2a766baef4528629f0b9f3dd5b835
|
||||
|
Loading…
Reference in New Issue
Block a user