resolves: rhbz#2021154
Rebase to new stable branch version 1.28.2
resolves: rhbz#2011709
Switch to xorriso (instead of genisoimage)
Upstream prefers it since:
commit 174a0caf7eaf1943360f9d8f714f466ea7449d90
Author: Richard W.M. Jones <rjones@redhat.com>
Date: Sat Apr 3 17:15:34 2021 +0100
iso: Pick xorriso in preference to genisoimage or mkisofs.
See this Debian page explaining the situation with genisoimage:
https://wiki.debian.org/genisoimage
(cherry picked from commit df8ac05e24)
Move nbdkit-null-plugin to the nbdkit-server package
This plugin is required for probing the presence of filters (see
nbdkit-probing(1) man page), so it makes sense to always have it
around. The null plugin is only 16K in size so it does not add
significantly to the nbdkit-server package.
(cherry picked from commit 048b8de83c)
Consistent use of whitespace
Remove double line whitespace between %package and %description.
Also remove whitespace lines within %package sections.
Double line whitespace is kept between subpackages for visual clarity.
(cherry picked from commit 9fbfa6cc49)
189 lines
7.4 KiB
Diff
189 lines
7.4 KiB
Diff
From 304f180b61fa28421b9901d2173a280e633b55c2 Mon Sep 17 00:00:00 2001
|
|
From: Nir Soffer <nsoffer@redhat.com>
|
|
Date: Fri, 5 Nov 2021 22:59:38 +0200
|
|
Subject: [PATCH] common/utils/vector: Rename `alloc` to `cap`
|
|
|
|
The `alloc` field is the maximum number of items you can append to a
|
|
vector before it need to be resized. This may confuse users with the
|
|
size of the `ptr` array which is `alloc * itemsize`. Rename to "cap",
|
|
common term for this property in many languages (e.g C++, Rust, Go).
|
|
|
|
Tested with "make check". Tests requiring root or external libraries
|
|
(vddk) not tested.
|
|
|
|
Ported from libnbd commit e3c7f02a2a844295564c832108d36c939c4e4ecf.
|
|
|
|
(cherry picked from commit 75a44237c4463524dbf7951bb62b59c373c85865)
|
|
---
|
|
common/allocators/malloc.c | 24 ++++++++++++------------
|
|
common/utils/vector.c | 16 ++++++++--------
|
|
common/utils/vector.h | 12 ++++++------
|
|
plugins/vddk/reexec.c | 2 +-
|
|
4 files changed, 27 insertions(+), 27 deletions(-)
|
|
|
|
diff --git a/common/allocators/malloc.c b/common/allocators/malloc.c
|
|
index 59409c24..f7474465 100644
|
|
--- a/common/allocators/malloc.c
|
|
+++ b/common/allocators/malloc.c
|
|
@@ -88,16 +88,16 @@ extend (struct m_alloc *ma, uint64_t new_size)
|
|
ACQUIRE_WRLOCK_FOR_CURRENT_SCOPE (&ma->lock);
|
|
size_t old_size, n;
|
|
|
|
- if (ma->ba.alloc < new_size) {
|
|
- old_size = ma->ba.alloc;
|
|
- n = new_size - ma->ba.alloc;
|
|
+ if (ma->ba.cap < new_size) {
|
|
+ old_size = ma->ba.cap;
|
|
+ n = new_size - ma->ba.cap;
|
|
|
|
#ifdef HAVE_MUNLOCK
|
|
/* Since the memory might be moved by realloc, we must unlock the
|
|
* original array.
|
|
*/
|
|
if (ma->use_mlock)
|
|
- munlock (ma->ba.ptr, ma->ba.alloc);
|
|
+ munlock (ma->ba.ptr, ma->ba.cap);
|
|
#endif
|
|
|
|
if (bytearray_reserve (&ma->ba, n) == -1) {
|
|
@@ -110,7 +110,7 @@ extend (struct m_alloc *ma, uint64_t new_size)
|
|
|
|
#ifdef HAVE_MLOCK
|
|
if (ma->use_mlock) {
|
|
- if (mlock (ma->ba.ptr, ma->ba.alloc) == -1) {
|
|
+ if (mlock (ma->ba.ptr, ma->ba.cap) == -1) {
|
|
nbdkit_error ("allocator=malloc: mlock: %m");
|
|
return -1;
|
|
}
|
|
@@ -138,11 +138,11 @@ m_alloc_read (struct allocator *a, void *buf,
|
|
/* Avoid reading beyond the end of the allocated array. Return
|
|
* zeroes for that part.
|
|
*/
|
|
- if (offset >= ma->ba.alloc)
|
|
+ if (offset >= ma->ba.cap)
|
|
memset (buf, 0, count);
|
|
- else if (offset + count > ma->ba.alloc) {
|
|
- memcpy (buf, ma->ba.ptr + offset, ma->ba.alloc - offset);
|
|
- memset (buf + ma->ba.alloc - offset, 0, offset + count - ma->ba.alloc);
|
|
+ else if (offset + count > ma->ba.cap) {
|
|
+ memcpy (buf, ma->ba.ptr + offset, ma->ba.cap - offset);
|
|
+ memset (buf + ma->ba.cap - offset, 0, offset + count - ma->ba.cap);
|
|
}
|
|
else
|
|
memcpy (buf, ma->ba.ptr + offset, count);
|
|
@@ -191,9 +191,9 @@ m_alloc_zero (struct allocator *a, uint64_t count, uint64_t offset)
|
|
/* Try to avoid extending the array, since the unallocated part
|
|
* always reads as zero.
|
|
*/
|
|
- if (offset < ma->ba.alloc) {
|
|
- if (offset + count > ma->ba.alloc)
|
|
- memset (ma->ba.ptr + offset, 0, ma->ba.alloc - offset);
|
|
+ if (offset < ma->ba.cap) {
|
|
+ if (offset + count > ma->ba.cap)
|
|
+ memset (ma->ba.ptr + offset, 0, ma->ba.cap - offset);
|
|
else
|
|
memset (ma->ba.ptr + offset, 0, count);
|
|
}
|
|
diff --git a/common/utils/vector.c b/common/utils/vector.c
|
|
index 7df17e1b..a4b43ce7 100644
|
|
--- a/common/utils/vector.c
|
|
+++ b/common/utils/vector.c
|
|
@@ -41,21 +41,21 @@ int
|
|
generic_vector_reserve (struct generic_vector *v, size_t n, size_t itemsize)
|
|
{
|
|
void *newptr;
|
|
- size_t reqalloc, newalloc;
|
|
+ size_t reqcap, newcap;
|
|
|
|
- reqalloc = v->alloc + n;
|
|
- if (reqalloc < v->alloc)
|
|
+ reqcap = v->cap + n;
|
|
+ if (reqcap < v->cap)
|
|
return -1; /* overflow */
|
|
|
|
- newalloc = (v->alloc * 3 + 1) / 2;
|
|
+ newcap = (v->cap * 3 + 1) / 2;
|
|
|
|
- if (newalloc < reqalloc)
|
|
- newalloc = reqalloc;
|
|
+ if (newcap < reqcap)
|
|
+ newcap = reqcap;
|
|
|
|
- newptr = realloc (v->ptr, newalloc * itemsize);
|
|
+ newptr = realloc (v->ptr, newcap * itemsize);
|
|
if (newptr == NULL)
|
|
return -1;
|
|
v->ptr = newptr;
|
|
- v->alloc = newalloc;
|
|
+ v->cap = newcap;
|
|
return 0;
|
|
}
|
|
diff --git a/common/utils/vector.h b/common/utils/vector.h
|
|
index f6a0af78..782dcba6 100644
|
|
--- a/common/utils/vector.h
|
|
+++ b/common/utils/vector.h
|
|
@@ -86,7 +86,7 @@
|
|
struct name { \
|
|
type *ptr; /* Pointer to array of items. */ \
|
|
size_t size; /* Number of valid items in the array. */ \
|
|
- size_t alloc; /* Number of items allocated. */ \
|
|
+ size_t cap; /* Maximum number of items. */ \
|
|
}; \
|
|
typedef struct name name; \
|
|
\
|
|
@@ -106,7 +106,7 @@
|
|
name##_insert (name *v, type elem, size_t i) \
|
|
{ \
|
|
assert (i <= v->size); \
|
|
- if (v->size >= v->alloc) { \
|
|
+ if (v->size >= v->cap) { \
|
|
if (name##_reserve (v, 1) == -1) return -1; \
|
|
} \
|
|
memmove (&v->ptr[i+1], &v->ptr[i], (v->size-i) * sizeof (elem)); \
|
|
@@ -137,7 +137,7 @@
|
|
{ \
|
|
free (v->ptr); \
|
|
v->ptr = NULL; \
|
|
- v->size = v->alloc = 0; \
|
|
+ v->size = v->cap = 0; \
|
|
} \
|
|
\
|
|
/* Iterate over the vector, calling f() on each element. */ \
|
|
@@ -181,17 +181,17 @@
|
|
if (newptr == NULL) return -1; \
|
|
memcpy (newptr, vptr, len); \
|
|
copy->ptr = newptr; \
|
|
- copy->size = copy->alloc = v->size; \
|
|
+ copy->size = copy->cap = v->size; \
|
|
return 0; \
|
|
} \
|
|
\
|
|
|
|
-#define empty_vector { .ptr = NULL, .size = 0, .alloc = 0 }
|
|
+#define empty_vector { .ptr = NULL, .size = 0, .cap = 0 }
|
|
|
|
struct generic_vector {
|
|
void *ptr;
|
|
size_t size;
|
|
- size_t alloc;
|
|
+ size_t cap;
|
|
};
|
|
|
|
extern int generic_vector_reserve (struct generic_vector *v,
|
|
diff --git a/plugins/vddk/reexec.c b/plugins/vddk/reexec.c
|
|
index 46acdb62..9e87025e 100644
|
|
--- a/plugins/vddk/reexec.c
|
|
+++ b/plugins/vddk/reexec.c
|
|
@@ -116,7 +116,7 @@ perform_reexec (const char *env, const char *prepend)
|
|
nbdkit_error ("realloc: %m");
|
|
exit (EXIT_FAILURE);
|
|
}
|
|
- r = read (fd, buf.ptr + buf.size, buf.alloc - buf.size);
|
|
+ r = read (fd, buf.ptr + buf.size, buf.cap - buf.size);
|
|
if (r == -1) {
|
|
nbdkit_error ("read: %s: %m", cmdline_file);
|
|
exit (EXIT_FAILURE);
|
|
--
|
|
2.31.1
|
|
|