Re: [Libguestfs] libnbd | Failed pipeline for master | 70da51e5
by Richard W.M. Jones
Hi Martin,
On Thu, Sep 02, 2021 at 04:05:56PM +0000, GitLab wrote:
> GitLab
> ✖ Pipeline #364204388 has failed!
>
> Project nbdkit / libnbd
> Branch ● master
> Commit ● 70da51e5
> interop: Link interop-nbd-server-tls with -lgnu...
> Commit Author ● Richard W.M. Jones
>
> Pipeline #364204388 triggered by ● Richard W.M. Jones
> had 1 failed job.
> Failed jobs
> ✖ builds x64-opensuse-tumbleweed
> GitLab
This is failing on a new test I added, but it's failing because of how
a particular package is built in OpenSUSE.
The new test is:
https://gitlab.com/nbdkit/libnbd/-/commit/c833fa1226092fd51b1211fa195a2a3...
which tries to test libnbd client with TLS enabled against nbd-server.
nbd-server in OpenSUSE gives this error:
Error: inetd mode requires syslog
Exiting.
which means it was compiled without --enable-syslog.
I notice that the related test is skipped:
SKIP: interop-nbd-server
========================
Test skipped based on ci/skipped_tests file
SKIP interop-nbd-server (exit status: 77)
The format of ci/skipped_tests is pretty odd. Is this patch OK?
diff --git a/ci/skipped_tests b/ci/skipped_tests
index e2de9330..c494b9eb 100644
--- a/ci/skipped_tests
+++ b/ci/skipped_tests
@@ -1,9 +1,9 @@
# Old nbd-server and built without syslog support, tests deadlock, old qemu-img version
-^Ubuntu-18\.04$;interop/interop-nbd-server interop/list-exports-nbd-server interop/structured-read.sh
-^openSUSE Leap-15;interop/interop-nbd-server interop/list-exports-nbd-server
+^Ubuntu-18\.04$;interop/interop-nbd-server interop/interop-nbd-server-tls interop/list-exports-nbd-server interop/structured-read.sh
+^openSUSE Leap-15;interop/interop-nbd-server interop/interop-nbd-server-tls interop/list-exports-nbd-server
# Similar for Tumbleweed, except tests do not deadlock, only limit to version 2021* for now
-^openSUSE Tumbleweed-2021;interop/interop-nbd-server interop/list-exports-nbd-server
+^openSUSE Tumbleweed-2021;interop/interop-nbd-server interop/interop-nbd-server-tls interop/list-exports-nbd-server
# Debian 10 has weird golang issues (old golang anyway) and old qemu-img
^Debian GNU/Linux-10;golang/run-tests.sh interop/structured-read.sh
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top
2 years, 11 months
[PATCH RFC 0/5] Subject: [PATCH RFC 0/5] qapi: Add feature flags to enum members
by Markus Armbruster
PATCH 1+2 add feature flags to enum members. Awkward due to an
introspection design mistake; see PATCH 1 for details. Feedback
welcome, in particular from management application guys.
PATCH 3+4 implement policy deprecated-input={reject,crash} for enum
values.
Policy deprecated-output=hide is not implemented, because we can't
hide a value without hiding the entire member, which is almost
certainly more than the requester of this policy bargained for.
Perhaps we want a new policy deprecated-output=crash to help us catch
unwanted use of deprecated enum values. Thoughts?
PATCH 5 puts the new feature flags to use. It makes sense only on top
of Vladimir's deprecation of drive-backup. See its commit message for
a reference.
Based on my "[PATCH 00/22] qapi: Remove simple unions from the schema
language".
Based-on: Message-Id: <20210913123932.3306639-1-armbru(a)redhat.com>
Markus Armbruster (5):
qapi: Enable enum member introspection to show more than name
qapi: Add feature flags to enum members
qapi: Move compat policy from QObject to generic visitor
qapi: Implement deprecated-input={reject,crash} for enum values
block: Deprecate transaction type drive-backup
docs/devel/qapi-code-gen.rst | 4 ++-
qapi/compat.json | 3 +++
qapi/introspect.json | 23 ++++++++++++++--
qapi/transaction.json | 5 +++-
include/qapi/qobject-input-visitor.h | 4 ---
include/qapi/qobject-output-visitor.h | 4 ---
include/qapi/util.h | 6 ++++-
include/qapi/visitor-impl.h | 3 +++
include/qapi/visitor.h | 9 +++++++
qapi/qapi-visit-core.c | 27 ++++++++++++++++---
qapi/qmp-dispatch.c | 4 +--
qapi/qobject-input-visitor.c | 14 +---------
qapi/qobject-output-visitor.c | 14 +---------
scripts/qapi/expr.py | 3 ++-
scripts/qapi/introspect.py | 19 ++++++++++---
scripts/qapi/schema.py | 22 +++++++++++++--
scripts/qapi/types.py | 17 +++++++++++-
tests/qapi-schema/doc-good.json | 5 +++-
tests/qapi-schema/doc-good.out | 3 +++
tests/qapi-schema/doc-good.txt | 3 +++
.../qapi-schema/enum-dict-member-unknown.err | 2 +-
tests/qapi-schema/qapi-schema-test.json | 3 ++-
tests/qapi-schema/qapi-schema-test.out | 1 +
tests/qapi-schema/test-qapi.py | 1 +
24 files changed, 144 insertions(+), 55 deletions(-)
--
2.31.1
3 years, 2 months
[virt-v2v PATCH 0/4] Build and test suite fixes
by Laszlo Ersek
After
(1) applying the libnbd patch at
<https://listman.redhat.com/archives/libguestfs/2021-September/msg00158.html>,
(2) creating a symlink to the just-built nbdkit binary under ~/bin,
(3) applying these virt-v2v patches, and
(4) masking the in-place v2v test temporarily with
SKIP_TEST_V2V_IN_PLACE_SH=1,
I can run "make" and "make check" successfully in the virt-v2v tree.
Thanks,
Laszlo
Laszlo Ersek (4):
Makefile.am: use $(LIBNBD_LIBS) for linking OCaml programs
test-v2v-cdrom: update the CD-ROM's bus to SATA in the converted
domain
test-v2v-i-ova: update the CD-ROM's bus to SATA in the converted
domain
test-v2v-i-ova: spell out viosock element in output domain XML
convert/Makefile.am | 1 +
output/Makefile.am | 1 +
v2v/Makefile.am | 1 +
tests/test-v2v-cdrom.expected | 2 +-
tests/test-v2v-cdrom.xml.in | 4 +++-
tests/test-v2v-i-ova.xml | 3 ++-
6 files changed, 9 insertions(+), 3 deletions(-)
--
2.19.1.3.g30247aa5d201
3 years, 2 months
[libnbd PATCH] build: allow OCaml programs using libnbd to be compiled against build dir
by Laszlo Ersek
Port libguestfs commit bf61bf7355d3 ("build: Allow OCaml programs using
libguestfs to be compiled against build dir.", 2020-03-12) to libnbd.
This allows C+OCaml programs, such as virt-v2v, to find a just built, but
not installed, libnbd tree.
Signed-off-by: Laszlo Ersek <lersek(a)redhat.com>
---
ocaml/Makefile.am | 17 +++++++++++++++++
.gitignore | 1 +
run.in | 2 ++
3 files changed, 20 insertions(+)
diff --git a/ocaml/Makefile.am b/ocaml/Makefile.am
index 1c7397a9da7a..b1ab80dd5fa5 100644
--- a/ocaml/Makefile.am
+++ b/ocaml/Makefile.am
@@ -161,4 +161,21 @@ install-data-hook:
$(data_hook_files)
rm $(DESTDIR)$(OCAMLLIB)/nbd/libnbdocaml.a
+# This "tricks" ocamlfind into allowing us to compile other OCaml
+# programs against a locally compiled copy of the libnbd sources.
+# ocamlfind needs to see a directory called ‘nbd’ which contains
+# ‘META’. The current directory is called ‘ocaml’, but if we make
+# this symlink then we can create the required directory structure.
+#
+# Note if you just want to use this, make sure you use
+# ‘../libnbd/run make’ in your other program and everything should
+# just work.
+CLEANFILES += nbd
+
+all-local: nbd
+
+nbd:
+ rm -f $@
+ $(LN_S) . $@
+
endif HAVE_OCAML
diff --git a/.gitignore b/.gitignore
index 5fc596773ed4..55a5449a70e2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -141,6 +141,7 @@ Makefile.in
/ocaml/examples/.depend
/ocaml/libnbd-ocaml.3
/ocaml/libnbdocaml.a
+/ocaml/nbd
/ocaml/nbd-c.c
/ocaml/stamp-manpages
/ocaml/stamp-mlnbd
diff --git a/run.in b/run.in
index 99c1f7ff0ff6..dda49228f949 100755
--- a/run.in
+++ b/run.in
@@ -100,6 +100,8 @@ export GODEBUG=cgocheck=2
# Allow dependent packages to be compiled against local libnbd.
prepend PKG_CONFIG_PATH "$b/lib/local"
export PKG_CONFIG_PATH
+prepend OCAMLPATH "$b/ocaml"
+export OCAMLPATH
# Do we have libtool? If we have it then we can use it to make
# running valgrind simpler. However don't depend on it.
--
2.19.1.3.g30247aa5d201
3 years, 2 months
[PATCH v2] Go bindings: fix "C array of strings" -- char** -- allocation
by Laszlo Ersek
The current "arg_string_list" and "free_string_list" implementations go
back to commit b6f01f32606d ("Add Go (language) bindings.", 2013-07-03).
There are two problems with them:
- "free_string_list" doesn't actually free anything,
- at the *first* such g.Internal_test() call site that passes an
Ostringlist member inside the Optargs argument, namely:
> g.Internal_test ("abc",
> string_addr ("def"),
> []string{},
> false,
> 0,
> 0,
> "123",
> "456",
> []byte{'a', 'b', 'c', '\000', 'a', 'b', 'c'},
> &guestfs.OptargsInternal_test{Ostringlist_is_set: true,
> Ostringlist: []string{}
> }
> )
the "golang/run-bindtests" case crashes:
> panic: runtime error: cgo argument has Go pointer to Go pointer
>
> goroutine 1 [running]:
> libguestfs.org/guestfs.(*Guestfs).Internal_test.func7(0xc000018180,
> 0xadfb60, 0xadfb80, 0xc000010048, 0x0, 0x0, 0x0, 0xae3e10, 0xae3e30,
> 0xade3a0, ...)
> golang/src/libguestfs.org/guestfs/guestfs.go:6729 +0xa9
> libguestfs.org/guestfs.(*Guestfs).Internal_test(0xc000018180, 0x4ee3a5,
> 0x3, 0xc000061be8, 0xc000061af8, 0x0, 0x0, 0xc000061a00, 0x0, 0x0, ...)
> golang/src/libguestfs.org/guestfs/guestfs.go:6729 +0x3c9
> main.main()
> golang/bindtests/bindtests.go:77 +0x151e
> exit status 2
> FAIL run-bindtests (exit status: 1)
In Daniel P. Berrangé's words [1],
> You're allowed to pass a Go pointer to C via CGo, but the memory that
> points to is not allowed to contained further Go pointers. So the struct
> fields must strictly use a C pointer.
One pattern to solve the problem has been shown on stackoverflow [2].
Thus, rewrite the "arg_string_list" and "free_string_list" functions
almost entirely in C, following that example.
While this approach is not the most idiomatic Go, as a solution exists
without C helper functions [3], it should still be acceptable, at least as
an incremental improvement, for letting "golang/run-bindtests" pass.
[1] https://listman.redhat.com/archives/libguestfs/2021-September/msg00118.html
[2] https://stackoverflow.com/questions/35924545/golang-cgo-panic-runtime-err...
[3] https://listman.redhat.com/archives/libguestfs/2021-September/msg00106.html
Cc: "Daniel P. Berrangé" <berrange(a)redhat.com>
Cc: "Richard W.M. Jones" <rjones(a)redhat.com>
Signed-off-by: Laszlo Ersek <lersek(a)redhat.com>
---
Notes:
v2:
- update commit message [Daniel, Rich]
- update code comment [Daniel, Rich]
- no code changes
- retested
generator/golang.ml | 47 ++++++++++++++++++++++++++++++++++++---------
1 file changed, 38 insertions(+), 9 deletions(-)
diff --git a/generator/golang.ml b/generator/golang.ml
index d328abe4ed08..0d6a92367f9b 100644
--- a/generator/golang.ml
+++ b/generator/golang.ml
@@ -52,6 +52,40 @@ _go_guestfs_create_flags (unsigned flags)
{
return guestfs_create_flags (flags);
}
+
+// Passing a Go pointer to C via CGo is allowed, but the memory that points to
+// is not allowed to contain further Go pointers. The helper functions below
+// are one way to implement this, although the same can be achieved purely in
+// Go as well. See the discussion here:
+// <https://listman.redhat.com/archives/libguestfs/2021-September/msg00101.html>.
+typedef char *pChar;
+
+pChar *allocStringArray (size_t nmemb)
+{
+ pChar *array;
+
+ array = malloc (sizeof (pChar) * (nmemb + 1));
+ array[nmemb] = NULL;
+ return array;
+}
+
+void storeString (pChar *array, size_t idx, pChar string)
+{
+ array[idx] = string;
+}
+
+void freeStringArray (pChar *array)
+{
+ pChar *position;
+ pChar string;
+
+ position = array;
+ while ((string = *position) != NULL) {
+ free (string);
+ position++;
+ }
+ free (array);
+}
*/
import \"C\"
@@ -148,12 +182,11 @@ func (g *Guestfs) Close () *GuestfsError {
* C strings and golang []string.
*/
func arg_string_list (xs []string) **C.char {
- r := make ([]*C.char, 1 + len (xs))
+ r := C.allocStringArray (C.size_t (len (xs)))
for i, x := range xs {
- r[i] = C.CString (x)
+ C.storeString (r, C.size_t (i), C.CString (x));
}
- r[len (xs)] = nil
- return &r[0]
+ return (**C.char) (r)
}
func count_string_list (argv **C.char) int {
@@ -167,11 +200,7 @@ func count_string_list (argv **C.char) int {
}
func free_string_list (argv **C.char) {
- for *argv != nil {
- //C.free (*argv)
- argv = (**C.char) (unsafe.Pointer (uintptr (unsafe.Pointer (argv)) +
- unsafe.Sizeof (*argv)))
- }
+ C.freeStringArray ((*C.pChar) (argv))
}
func return_string_list (argv **C.char) []string {
--
2.19.1.3.g30247aa5d201
3 years, 2 months
Help needed
by Demmoy Lewis
I am running on the SANS Sift workstation. Ubuntu 20.04
Please see the attached output
Regards,
Demmoy Lewis, CISSP, GCFA
Cyber Threat Unit (CTU) Team Lead
BankUnited, N.A.
14817 Oak Lane
Building 5
Miami Lakes, FL 33016
786.648.6605 ex 3131020
DLewis(a)BankUnited.com<mailto:DLewis@BankUnited.com>
This message was Classified as Confidential Reference.
----------------------------------------------------------------------
The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.
3 years, 3 months
ANNOUNCE: nbdkit 1.28 and libnbd 1.10 released
by Richard W.M. Jones
nbdkit is a Network Block Device (NBD) server with stable plugin ABI
and permissive license. libnbd is an NBD client library.
I'm pleased to announce the latest stable releases of both projects:
nbdkit 1.28.0 and libnbd 1.10.0. You can download both from the
download directories here:
https://download.libguestfs.org/nbdkit/
https://download.libguestfs.org/libnbd/
Release notes are online here and attached below:
https://libguestfs.org/nbdkit-release-notes-1.28.1.html
https://libguestfs.org/libnbd-release-notes-1.10.1.html
Rich.
----------------------------------------------------------------------
These are the release notes for nbdkit stable release 1.28. This
describes the major changes since 1.26.
nbdkit 1.28.0 was released on 23 September 2021.
Security
CVE-2021-3716 reset structured replies on starttls
nbdkit was vulnerable to injected plaintext when upgrading to a secure
connection. For the full announcement see
https://www.redhat.com/archives/libguestfs/2021-August/msg00083.html
(Eric Blake).
All past security issues and information about how to report new ones
can be found in nbdkit-security(1).
Plugins
nbdkit-data-plugin(1) has new "le<NN>:" and "be<NN>:" prefixes for
little and big endian words. Also the plugin tries much harder to
optimize expressions. The test suite has been greatly expanded to
catch potential regressions.
nbdkit-floppy-plugin(1) now allows you to reserve free space (Nolan
Leake).
nbdkit-ssh-plugin(1) no longer references SHA1 host keys as part of the
effort to remove insecure algorithms (Daniel Berrangé).
nbdkit-vddk-plugin(1) reports "can_flush" and "can_fua" based on what
the version of VDDK supports. New debug flag -D vddk.stats=1 prints
the amount of time spent in VDDK calls on exit which can be useful for
profiling performance.
Filters
nbdkit-cow-filter(1) and nbdkit-cache-filter(1) no longer break up
large read requests into page-sized requests. In addition the default
block size for both filters is now 64K. Both changes greatly improve
performance.
nbdkit-cache-filter(1) has a new "cache-on-read=/PATH" parameter
allowing callers to enable and disable the cache-on-read feature at
runtime. Also there is a new "cache-min-block-size" parameter letting
you select the block size at runtime (thanks Martin Kletzander).
nbdkit-cow-filter(1) has a new "cow-on-read" parameter which works
similarly to the corresponding cache filter feature. The new
"cow-block-size" parameter lets you select the block size at runtime.
nbdkit-cow-filter(1) has less verbose debugging. To restore the old
debug output use -D cow.verbose=1
nbdkit-delay-filter(1) has new "delay-open" and "delay-close"
parameters to inject delays when clients connect and disconnect. Delay
filter parameters are now parsed more accurately (thanks Ming Xie).
Language bindings
The OCaml bindings now call "caml_shutdown" when unloading the plugin.
This causes "Stdlib.at_exit" handlers to run correctly, closes file
descriptors, releases dependent shared libraries and frees memory.
Valgrind on OCaml plugins should not show any false positives about
leaked memory.
OCaml and Python bindings may now use the ".cleanup" method.
References to Python 2 in nbdkit-python-plugin(3) have been removed.
Server
Fix captive nbdkit $uri variable so when TLS is used the URI is
constructed with the "nbds:" prefix. Additionally add a new variable
$tls which can be used by the subprocess to tell if TLS is enabled.
Debug messages are now printed atomically. This means that debug
messages are no longer broken up across multiple lines if there are
other processes writing to stderr at the same time (which often
happened when using captive nbdkit).
Enhanced valgrind support (./configure --enable-valgrind) can now be
enabled safely and with no performance impact even in production builds
(Eric Blake).
API
Plugins or filters using "nbdkit_nanosleep" now don't hang if the
client closes the socket abruptly (thanks Ming Xie).
Bug fixes
nbdkit-data-plugin(1) and nbdkit-memory-plugin(1) using
allocator=malloc no longer crash because of memory corruption in some
corner cases (only seen on s390x, but could happen on other
architectures). Meanwhile "allocator=zstd" no longer crashes when
zeroing unallocated space.
Tests
Tests now use the new "GLIBC_TUNABLES" feature, replacing
"MALLOC_CHECK_" on glibc ≥ 2.34 (thanks Eric Blake, Siddhesh
Poyarekar).
Build
configure.ac now uses spaces consistently, and has been modernized to
support the latest autotools (Eric Blake).
podwrapper.pl has been unified (almost) with the copy in libnbd.
Continue fuzzing using AFL++. Updated the fuzzing documentation.
AUTHORS
Authors of nbdkit 1.28:
Daniel P. Berrangé
Eric Blake
Martin Kletzander
Nolan Leake
Richard W.M. Jones
----------------------------------------------------------------------
These are the release notes for libnbd stable release 1.10. This
describes the major changes since 1.8.
libnbd 1.10.0 was released on 23 September 2021.
Security
There were no security bugs found in libnbd during this release cycle.
If you find a security issue, please read SECURITY in the source
(online here: https://gitlab.com/nbdkit/libnbd/blob/master/SECURITY).
To find out about previous security issues in libnbd, see
libnbd-security(3).
New APIs
No new APIs were added in 1.10.
Enhancements to existing APIs
nbd_get_uri(3) no longer returns service names (eg.
"nbd://localhost:nbd"). Instead it always returns raw port numbers for
portability.
nbd_connect_uri(3) now supports "tls-certificates=DIR" query parameter,
making it much easier to connect to servers using TLS with X.509
certificates. Also error messages from this API have been improved in
the case of some common URI user errors.
Python "nbd.aio_connect" implements support for "AF_UNIX" sockets.
Fix invalid use of "unsafe.Pointer" in Go bindings.
Tools
nbdcopy(1) now uses a default request size of 2M (instead of 32M).
This default performs better in most cases.
nbdinfo(1) has a new --map --totals mode which displays a summary of
the map. Also new --can and --is options let you test export
properties (eg. --is read-only).
nbdinfo(1) --map option uses "data" instead of "allocated" because of
ambiguity about what "allocated" means (Eric Blake, Nir Soffer).
nbdinfo(1) shows the export size in both bytes and human units (like
"1K"). The machine-parsable JSON output has not changed.
nbdfuse(1) now supports efficient zeroing. Note this requires Linux
kernel ≥ 5.14.
nbdsh(1) has new option -n which avoids creating the implicit handle
"h". Also new option -v which enables debugging. Also the initial
help banner is now context sensitive giving more relevant information
depending on how nbdsh was invoked.
Tests
CI tests were greatly enhanced and many platform-specific fixes were
made. To view the latest CI tests and results see:
https://gitlab.com/nbdkit/libnbd/-/pipelines (Martin Kletzander).
Tests now use the new "GLIBC_TUNABLES" feature, replacing
"MALLOC_CHECK_" on glibc ≥ 2.34 (thanks Eric Blake, Siddhesh
Poyarekar).
Other improvements and bug fixes
The nbdcopy(1) progress bar should be displayed more accurately in
multithreaded mode.
Documentation
nbd_connect(3) and nbd_aio_connect(3) documentation has been revised
and improved.
More consistent option styling is used throughout the documentation.
podwrapper.pl has been unified (almost) with the copy in nbdkit.
Build
configure.ac now uses spaces consistently, and has been modernized to
support the latest autotools (Eric Blake).
We now warn about large stack frames, and a few places which used large
stack frames have been fixed.
Continue fuzzing using AFL++. Updated the fuzzing documentation.
Fix building from git with --disable-ocaml. As long as only "ocamlc"
is installed, the generator should still be built and run (Martin
Kletzander).
AUTHORS
Anson Lo
Eric Blake
Martin Kletzander
Richard W.M. Jones
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://libguestfs.org
3 years, 3 months
ANNOUNCE: libguestfs 1.46 released
by Richard W.M. Jones
libguestfs is a library for accessing and modifying virtual machine
disk images. I'm pleased to announce the latest stable version. The
release notes are below and you can download this version from the
download directory here:
https://download.libguestfs.org/
Rich.
RELEASE NOTES FOR LIBGUESTFS 1.46
(https://libguestfs.org/guestfs-release-notes-1.46.1.html)
The big news in this release is that the virt tools like
virt-builder(1), virt-cat(1), virt-customize(1), virt-df(1), and many
more were moved to a new project. The temporary repository for the new
guestfs-tools project is here:
https://github.com/rwmjones/guestfs-tools while we set up a permanent
home for it on gitlab. The tarballs containing the tools are here:
https://download.libguestfs.org/guestfs-tools/
Spinning out all of the tools into a new repository has made libguestfs
a bit easier and simpler to build and manage, and allows us to focus on
just being the API.
Note that the tools guestfish(1) (which is really a "shell API"),
guestmount(1), libguestfs-test-tool(1) and virt-rescue(1) are still
part of the libguestfs repo.
The not quite so big news is that we have moved away from FreeNode to
Libera Chat for IRC. The new channel on Libera is called "#guestfs"
(thanks Daniel Berrangé).
Language bindings
Libguestfs is now compatible with Go 1.16, and defines a Go module
(thanks Gianfranco Costamagna).
Memory leaks in Python APIs that returned structs are fixed (thanks
朱丹).
Python PyPi code has been relicensed to LGPLv2+ (from GPLv2+).
Inspection
Inspection of RPM guests now uses librpm instead of trying to parse the
Berkeley DB directly. Since most RPM-based guests have replaced BDB
with sqlite this allows us to read these newer guests while retaining
compatibility with the older guests (thanks Panu Matilainen).
Inspection of RHEL 8+ with split /usr configuration has been made more
reliable.
Inspection of Windows Server 2022 should now work correctly (Yongkui
Guo).
API
New APIs
No new APIs were added in libguestfs 1.46.
Other API changes
The output of the "guestfs_cap_get_file" API has changed slightly
because of changes in the underlying libcap. This isn't strictly
speaking an API break because the new output is a still valid but more
compact description of file capabilities, but because it is different
it may cause problems for users of the API.
The "guestfs_mkfs_btrfs" API now ignores the "allocstart" parameter
since it was deprecated by btrfs 4.14.1 and later removed.
"guestfs_isoinfo_*" APIs now directly parse the CD Primary Volume
Descriptor instead of using an external tool. The APIs should appear
to work exactly the same (thanks Thomas Schmitt).
You can now force the appliance to use KVM or fail if not supported
(Sam Eiderman).
Because of a change to XFS in version 5, disabling lazy-counters no
longer works. The API still works for earlier versions of XFS (Laszlo
Ersek).
Build changes
The build now uses and requires PCRE2 (instead of PCRE).
This version requires libvirt ≥ 7.1.0, if libvirt is enabled.
gnulib is no longer bundled with libguestfs, making builds from git
much simpler.
Perl "Sys::Virt" (libvirt bindings for Perl) are no longer required by
libguestfs.
The code has been compiled with both LTO and GCC -fanalyzer and many
bugs and warnings fixed.
Allow projects like guestfs-tools and virt-v2v to be compiled with
locally built (but not installed) libguestfs (Laszlo Ersek).
Tests now run in parallel (many additional fixes by Laszlo Ersek).
Work around RAID0 regression in Linux 3.14/5.4 (Laszlo Ersek).
Support for RISC-V (Heinrich Schuchardt).
Support for building on Alma and Cloud Linux (Александр Кравченко).
Fix to compile with OCaml 4.12.
The tarball no longer includes the ChangeLog file. To get a detailed
changelog, please look at the upstream git repository.
Don't assume bash in the ./configure script (Martin Kletzander).
Fix ./configure --with-distro option (Alexandre Iooss).
Various fixes for qemu 6.1.
Fix creating appliance dependencies on Debian (Hilko Bengen).
Update appliance packages on SUSE and several other improvements to the
init script (Olaf Hering).
Internals
We now use the qemu / libvirt feature -cpu max to select the best CPU
to run the appliance. This should improve performance for things like
encrypted disks (Daniel Berrangé).
When passing the appliance filesystem UUID to supermin we now read it
directly out of the appliance instead of using the file(1) program.
This is more reliable, especially as file often breaks or changed its
output.
The qemu -enable-fips option is no longer used. It was not needed and
has been deprecated by qemu.
On Fedora, pull in glibc-gconv-extra to fix the "guestfs_syslinux" API
(Yongkui Guo).
We no longer use qemu's sga (Serial Graphics Adapter) option ROM,
instead using the equivalent seabios feature.
Bugs fixed
https://bugzilla.redhat.com/2002325
Use -machine graphics=off instead of sga device
https://bugzilla.redhat.com/2001636
[RFE] libguestfs: Add detection of AlmaLinux and CloudLinux
https://bugzilla.redhat.com/1997446
osinfo is not correct when handling windows server 2022 image
https://bugzilla.redhat.com/1990720
syslinux: failed to create ldlinux.sys
https://bugzilla.redhat.com/1985912
The lstatns function has a memory leak. (python3)
https://bugzilla.redhat.com/1960217
[Regression] ls: cannot read symbolic link after running guestmount
https://bugzilla.redhat.com/1949683
virt-v2v: error: inspection could not detect the source guest (or
physical machine)
https://bugzilla.redhat.com/1938982
Move libguestfs from PCRE to PCRE2
https://bugzilla.redhat.com/1930996
[Regression] lvcreate fails to wipe signatures again
https://bugzilla.redhat.com/1930133
Virt-v2v can't convert rhel8 guest whose usr partition is
independent
https://bugzilla.redhat.com/1915646
libguestfs-1.44.0 - guestfs appliance path broken
https://bugzilla.redhat.com/1911177
virt-builder + virt-install creates a VM that cannot boot fedora 33
https://bugzilla.redhat.com/1766487
libguestfs assumes rpmdb is in Berkeley DB format
https://bugzilla.redhat.com/1409024
[Debian] Missing db_dump abort inspection
AUTHORS
Alexandre Iooss
Daniel P. Berrangé
Heinrich Schuchardt
Hilko Bengen
Laszlo Ersek
Martin Kletzander
Remi Collet
Richard W.M. Jones
Sam Eiderman
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html
3 years, 3 months