[PATCH] make-fs: Don't use du --apparent-size to estimate input size.
by Richard W.M. Jones
When calculating the initial size of the disk we must estimate
how much space is taken by the input. This is quite difficult.
For directories we used ‘du --apparent-size -bs DIR’. This is wrong
because ’-b’ implies ‘--apparent-size --block-size=1’. But also
‘--apparent-size’ causes du to count the file size rather than number
of blocks used by files.
If you have a directory containing many small files this usually
underestimates resulting in disk sizes which are far too small to
actually contain the files.
There's no really good answer here because du can't exactly do what we
want, but we can at least remove this flag. This causes much larger
estimates and therefore much larger virtual disks.
Thanks: Nikolay Ivanets
---
make-fs/make-fs.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/make-fs/make-fs.c b/make-fs/make-fs.c
index 5d8c3a385..386142280 100644
--- a/make-fs/make-fs.c
+++ b/make-fs/make-fs.c
@@ -393,7 +393,7 @@ static int
estimate_input (const char *input, uint64_t *estimate_rtn, char **ifmt_rtn)
{
struct stat statbuf;
- const char *argv[6];
+ const char *argv[5];
CLEANUP_UNLINK_FREE char *tmpfile = NULL;
CLEANUP_FCLOSE FILE *fp = NULL;
char line[256];
@@ -424,11 +424,10 @@ estimate_input (const char *input, uint64_t *estimate_rtn, char **ifmt_rtn)
}
argv[0] = "du";
- argv[1] = "--apparent-size";
- argv[2] = "-b";
- argv[3] = "-s";
- argv[4] = input;
- argv[5] = NULL;
+ argv[1] = "--block-size=1";
+ argv[2] = "-s";
+ argv[3] = input;
+ argv[4] = NULL;
if (exec_command ((char **) argv, tmpfile) == -1)
return -1;
--
2.24.1
4 years, 9 months
[PATCH nbdkit 2/2] server: Avoid modifying argv by saving keys in a list and freeing on exit.
by Richard W.M. Jones
Unfortunately you cannot restore argv by setting *p = '=' :-(
The reason is we advertize that plugins are allowed to save they
‘const char *key’ pointer passed to them in .config, but assigning
*p = '=' changes the key string from "key" back to "key=value".
Surprisingly only test-eval.sh actually broke, but other plugins are
undoubtedly affected.
My alternate fix is fairly horrible, but passes all the tests and
valgrind.
Rich.
4 years, 9 months
[nbdkit PATCH v6] vddk: Add re-exec with altered environment
by Eric Blake
In the next patch, we want to get rid of the requirement for the user
to supply LD_LIBRARY_PATH pointing to vddk libs, if we can derive it
ourselves from libdir. However, VDDK itself requires LD_LIBRARY_PATH
to be set (because it tries to load libraries that in turn depend on a
bare library name, which no manner of dlopen() hacking can work
around, and implementing la_objsearch() is no better for requiring
LD_AUDIT to be set). And since ld.so caches the value of
LD_LIBRARY_PATH at startup (for security reasons), the ONLY way to set
it for loading vddk, while clearing it again before --run spawns a
child process, is to re-exec nbdkit with slight alterations.
Since VDDK only runs on Linux, we can assume the presence of
/proc/self/{exe,cmdline}, and parse off everything we need (provided
nbdkit didn't muck with argv[], which we just fixed) to recursively
exec with a munged environment that still has enough breadcrumbs to
undo the munging.
This patch does not quite set LD_LIBRARY_PATH correctly in all cases
(since vddk expects libdir= to point to vmware-vix-disklib-distrib/,
but LD_LIBRARY_PATH to vmware-vix-disklib-distrib/lib64), but that
will be cleaned up in the next patch; in the meantime, the re-exec in
this patch fires but has no ill effects.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
Compared to v5: patch 1 and 2 are completely dropped, patch 3/4 is the
first one applied as-is, then this patch, then an updated version of
4/4 (which I haven't finished updating yet). Posting this now before
I go to bed.
Still needed: either the testsuite HAS to create its dummy
libvixDiskLib.so.6 under a /lib64 subdirectory, or we should add some
intelligence to probing whether $libdir/*.so or $libdir/lib64/*.so
exists and set prefix accordingly. But that's minor compared to that
fact that I did confirm that re-execing works to temporarily override
LD_LIBRARY_PATH without any modification to nbdkit proper (other than
a one-liner I already pushed to let /proc/NNN/cmdline be correct for
re-exec purposes).
The diffstat is a bit large, but the fact that it is self-contained to
vddk.c is a plus. Parsing /proc/self/cmdline is a pain.
plugins/vddk/vddk.c | 146 +++++++++++++++++++++++++++++++++++++++++---
1 file changed, 139 insertions(+), 7 deletions(-)
diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
index 0abec68e..95940b3b 100644
--- a/plugins/vddk/vddk.c
+++ b/plugins/vddk/vddk.c
@@ -1,5 +1,5 @@
/* nbdkit
- * Copyright (C) 2013-2019 Red Hat Inc.
+ * Copyright (C) 2013-2020 Red Hat Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -40,6 +40,7 @@
#include <string.h>
#include <unistd.h>
#include <dlfcn.h>
+#include <fcntl.h>
#define NBDKIT_API_VERSION 2
@@ -72,7 +73,8 @@ int vddk_debug_extents;
#define VDDK_MINOR 1
static void *dl = NULL; /* dlopen handle */
-static int init_called = 0; /* was InitEx called */
+static bool init_called = false; /* was InitEx called */
+static char *reexeced = false; /* did libdir require reexec */
static char *config = NULL; /* config */
static const char *cookie = NULL; /* cookie */
@@ -162,6 +164,8 @@ vddk_unload (void)
static int
vddk_config (const char *key, const char *value)
{
+ int r;
+
if (strcmp (key, "config") == 0) {
/* See FILENAMES AND PATHS in nbdkit-plugin(3). */
free (config);
@@ -199,12 +203,15 @@ vddk_config (const char *key, const char *value)
if (nbdkit_parse_uint16_t ("port", value, &port) == -1)
return -1;
}
+ else if (strcmp (key, "reexeced_") == 0) {
+ /* Special name because it is only for internal use. */
+ reexeced = value;
+ }
else if (strcmp (key, "server") == 0) {
server_name = value;
}
else if (strcmp (key, "single-link") == 0) {
- int r = nbdkit_parse_bool (value);
-
+ r = nbdkit_parse_bool (value);
if (r == -1)
return -1;
single_link = r;
@@ -219,8 +226,7 @@ vddk_config (const char *key, const char *value)
transport_modes = value;
}
else if (strcmp (key, "unbuffered") == 0) {
- int r = nbdkit_parse_bool (value);
-
+ r = nbdkit_parse_bool (value);
if (r == -1)
return -1;
unbuffered = r;
@@ -242,6 +248,89 @@ vddk_config (const char *key, const char *value)
return 0;
}
+/* Perform a re-exec that temporarily modifies LD_LIBRARY_PATH. Does
+ * not return on success; on failure, problems have been logged, but
+ * the caller prefers to fail as if this had not been attempted.
+ * Thus, no return value is needed.
+ */
+static void
+perform_reexec (const char *prepend)
+{
+ CLEANUP_FREE char *library = NULL;
+ char *env = getenv ("LD_LIBRARY_PATH");
+ int argc = 0;
+ CLEANUP_FREE char **argv = NULL;
+ int fd;
+ size_t len = 0, buflen = 512;
+ CLEANUP_FREE char *buf = NULL;
+
+ /* In order to re-exec, we need our original command line. The
+ * Linux kernel does not make it easy to know in advance how large
+ * it was, so we just slurp in the whole file, doubling our reads
+ * until we get a short read.
+ */
+ fd = open ("/proc/self/cmdline", O_RDONLY);
+ if (fd == -1) {
+ nbdkit_debug ("failure to parse original argv: %m");
+ return;
+ }
+
+ do {
+ char *p = realloc (buf, buflen * 2);
+ ssize_t r;
+
+ if (!p) {
+ nbdkit_debug ("failure to parse original argv: %m");
+ return;
+ }
+ buf = p;
+ buflen *= 2;
+ r = read (fd, buf + len, buflen - len);
+ if (r == -1) {
+ nbdkit_debug ("failure to parse original argv: %m");
+ return;
+ }
+ len += r;
+ } while (len == buflen);
+ nbdkit_debug ("original command line occupies %zu bytes", len);
+
+ /* Split cmdline into argv, then append one more arg. */
+ buflen = len;
+ len = 0;
+ while (len < buflen) {
+ char **tmp = realloc (argv, sizeof *argv * (argc + 2));
+
+ if (!tmp) {
+ nbdkit_debug ("failure to parse original argv: %m");
+ return;
+ }
+ argv = tmp;
+ argv[argc++] = buf + len;
+ len += strlen (buf + len) + 1;
+ }
+ nbdkit_debug ("original argc == %d, adding reexeced_=%s", argc, prepend);
+ if (asprintf (&reexeced, "reexeced_=%s", prepend) == -1) {
+ nbdkit_debug ("failure to re-exec: %m");
+ return;
+ }
+ argv[argc++] = reexeced;
+ argv[argc] = NULL;
+
+ if (env)
+ asprintf (&library, "%s:%s", prepend, env);
+ else
+ library = strdup (prepend);
+ if (!library || setenv ("LD_LIBRARY_PATH", library, 1) == -1) {
+ nbdkit_debug ("failure to set LD_LIBRARY_PATH: %m");
+ return;
+ }
+
+ nbdkit_debug ("re-executing with updated LD_LIBRARY_PATH=%s", library);
+ fflush (NULL);
+ execvp ("/proc/self/exe", argv);
+ nbdkit_debug ("failure to execvp: %m");
+}
+
/* Load the VDDK library. */
static void
load_library (void)
@@ -266,6 +355,8 @@ load_library (void)
}
}
if (dl == NULL) {
+ if (!reexeced && libdir)
+ perform_reexec (libdir); /* TODO: Use correct dir */
nbdkit_error ("%s\n\n"
"If '%s' is located on a non-standard path you may need to\n"
"set $LD_LIBRARY_PATH or edit /etc/ld.so.conf.\n\n"
@@ -301,6 +392,47 @@ vddk_config_complete (void)
return -1;
}
+ /* If load_library caused a re-execution with an expanded
+ * LD_LIBRARY_PATH, restore it back to its original contents.
+ * dlopen uses the value of LD_LIBRARY_PATH cached at program
+ * startup; our change is for the sake of child processes (such as
+ * --run) to see the same environment as the original nbdkit saw
+ * before re-exec.
+ */
+ if (reexeced) {
+ char *env = getenv ("LD_LIBRARY_PATH");
+ CLEANUP_FREE char *library = NULL;
+ size_t len = strlen (reexeced);
+
+ nbdkit_debug ("cleaning up after re-exec");
+ if (!env || !libdir || strncmp (env, reexeced, len) != 0 ||
+ strncmp (reexeced, libdir, strlen (libdir)) != 0) {
+ nbdkit_error ("'reexeced' set with garbled environment");
+ return -1;
+ }
+ if (env[len] == ':') {
+ library = strdup (&env[len+1]);
+ if (!library) {
+ nbdkit_error ("strdup: %m");
+ return -1;
+ }
+ if (setenv ("LD_LIBRARY_PATH", library, 1) == -1) {
+ nbdkit_error ("setenv: %m");
+ return -1;
+ }
+ }
+ else if (env[len] != '\0') {
+ nbdkit_error ("'reexeced' set with garbled environment");
+ return -1;
+ }
+ else {
+ if (unsetenv ("LD_LIBRARY_PATH") == -1) {
+ nbdkit_error ("unsetenv: %m");
+ return -1;
+ }
+ }
+ }
+
/* For remote connections, check all the parameters have been
* passed. Note that VDDK will segfault if parameters that it
* expects are NULL (and there's no real way to tell what parameters
@@ -347,7 +479,7 @@ vddk_config_complete (void)
VDDK_ERROR (err, "VixDiskLib_InitEx");
exit (EXIT_FAILURE);
}
- init_called = 1;
+ init_called = true;
return 0;
}
--
2.24.1
4 years, 9 months
[nbdkit PATCH v5 0/4] vddk: Drive library loading from libdir parameter.
by Eric Blake
Differences from v4:
Patch 1 is simplified: I realized that since we already use -rdynamic
for nbdkit (after all, we WANT our dlopen()d plugins to be able to
call our nbdkit_* exports), it is only a matter of adding dlopen to
the set of symbols that we export. With that done, there is no
separate shared library needed; our dlopen shim is now part of nbdkit
proper, and we don't have to tweak the wrapper script or install a
separate file.
Patches 2 and 4 had minor rebase churn, patch 3 remains untouched.
Eric Blake (2):
server: Export nbdkit_set_dlopen_prefix function
tests: Add coverage of new nbdkit_set_dlopen_prefix
Richard W.M. Jones (2):
vddk: Delay loading VDDK until config_complete.
vddk: Drive library loading from libdir parameter.
docs/nbdkit-plugin.pod | 14 +++
include/nbdkit-common.h | 2 +
plugins/vddk/nbdkit-vddk-plugin.pod | 39 ++++++--
plugins/vddk/vddk.c | 136 ++++++++++++++++++----------
server/Makefile.am | 3 +-
server/nbdkit.syms | 5 +-
server/shim.c | 97 ++++++++++++++++++++
tests/Makefile.am | 25 +++++
tests/test-dlopen-plugin.c | 106 ++++++++++++++++++++++
tests/test-dlopen.sh | 54 +++++++++++
tests/test-vddk-real.sh | 10 +-
tests/test-vddk.sh | 6 +-
12 files changed, 422 insertions(+), 75 deletions(-)
create mode 100644 server/shim.c
create mode 100644 tests/test-dlopen-plugin.c
create mode 100755 tests/test-dlopen.sh
--
2.24.1
4 years, 9 months
[PATCH] virt-get-kernel: add '--blocksize' option support
by Mykola Ivanets
From: Nikolay Ivanets <stenavin(a)gmail.com>
This patch adds '--blocksize' command line option for virt-get-kernel
tool. This option allows specifying disk sector size as described in
'guestfs_add_drive_opts' libguestfs API.
---
get-kernel/get_kernel.ml | 22 ++++++++++++----------
get-kernel/virt-get-kernel.pod | 8 ++++++++
2 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/get-kernel/get_kernel.ml b/get-kernel/get_kernel.ml
index ab6b2d55e..d29d0ef7f 100644
--- a/get-kernel/get_kernel.ml
+++ b/get-kernel/get_kernel.ml
@@ -26,6 +26,7 @@ module G = Guestfs
open Printf
let parse_cmdline () =
+ let blocksize = ref 0 in
let domain = ref None in
let file = ref None in
let libvirturi = ref "" in
@@ -52,14 +53,14 @@ let parse_cmdline () =
prefix := Some p in
let argspec = [
- [ S 'a'; L"add" ], Getopt.String (s_"file", set_file), s_"Add disk image file";
- [ S 'c'; L"connect" ], Getopt.Set_string (s_"uri", libvirturi), s_"Set libvirt URI";
- [ S 'd'; L"domain" ], Getopt.String (s_"domain", set_domain), s_"Set libvirt guest name";
- [ L"format" ], Getopt.Set_string (s_"format", format), s_"Format of input disk";
- [ S 'o'; L"output" ], Getopt.Set_string (s_"directory", output), s_"Output directory";
- [ L"unversioned-names" ], Getopt.Set unversioned,
- s_"Use unversioned names for files";
- [ L"prefix" ], Getopt.String (s_"prefix", set_prefix), s_"Prefix for files";
+ [ S 'a'; L"add" ], Getopt.String (s_"file", set_file), s_"Add disk image file";
+ [ L"blocksize" ], Getopt.Set_int ("512|4096", blocksize), s_"Set disk sector size";
+ [ S 'c'; L"connect" ], Getopt.Set_string (s_"uri", libvirturi), s_"Set libvirt URI";
+ [ S 'd'; L"domain" ], Getopt.String (s_"domain", set_domain), s_"Set libvirt guest name";
+ [ L"format" ], Getopt.Set_string (s_"format", format), s_"Format of input disk";
+ [ S 'o'; L"output" ], Getopt.Set_string (s_"directory", output), s_"Output directory";
+ [ L"unversioned-names" ], Getopt.Set unversioned, s_"Use unversioned names for files";
+ [ L"prefix" ], Getopt.String (s_"prefix", set_prefix), s_"Prefix for files";
] in
let usage_msg =
sprintf (f_"\
@@ -102,9 +103,10 @@ read the man page virt-get-kernel(1).
fun g ->
let { URI.path; protocol; server; username; password } = uri in
let format = match !format with "auto" -> None | s -> Some s in
+ let blocksize = match !blocksize with 0 -> None | i -> Some i in
g#add_drive
- ~readonly:true ?format ~protocol ?server ?username ?secret:password
- path
+ ~readonly:true ?blocksize ?format ~protocol ?server ?username
+ ?secret:password path
in
(* Dereference the rest of the args. *)
diff --git a/get-kernel/virt-get-kernel.pod b/get-kernel/virt-get-kernel.pod
index 990d6a91f..748398dce 100644
--- a/get-kernel/virt-get-kernel.pod
+++ b/get-kernel/virt-get-kernel.pod
@@ -44,6 +44,14 @@ force a particular format use the I<--format> option.
Add a remote disk. The URI format is compatible with guestfish.
See L<guestfish(1)/ADDING REMOTE STORAGE>.
+=item B<--blocksize 512>
+
+=item B<--blocksize 4096>
+
+This parameter sets the sector size of the disk image added with I<-a>
+option and is ignored for libvirt guest added with I<-d> option. See
+also L<guestfs(3)/guestfs_add_drive_opts>.
+
=item B<--colors>
=item B<--colours>
--
2.17.2
4 years, 9 months
[nbdkit PATCH] vddk: Make 'file=' a magic key
by Eric Blake
Since it is required, it might as well be magic ;)
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
As written, applies on top of my v3 patch for dlopen; but it would
be easy enough to rebase and take this one now even if we aren't
sure about the dlopen stuff
plugins/vddk/nbdkit-vddk-plugin.pod | 5 ++++-
plugins/vddk/vddk.c | 3 ++-
tests/test-vddk.sh | 3 +--
3 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/plugins/vddk/nbdkit-vddk-plugin.pod b/plugins/vddk/nbdkit-vddk-plugin.pod
index f0748def..11d12c3f 100644
--- a/plugins/vddk/nbdkit-vddk-plugin.pod
+++ b/plugins/vddk/nbdkit-vddk-plugin.pod
@@ -4,7 +4,7 @@ nbdkit-vddk-plugin - nbdkit VMware VDDK plugin
=head1 SYNOPSIS
- nbdkit vddk file=FILENAME
+ nbdkit vddk [file=]FILENAME
[config=FILENAME] [cookie=COOKIE] [libdir=LIBRARY]
[nfchostport=PORT] [single-link=true]
[password=PASSWORD | password=- | password=+FILENAME
@@ -135,6 +135,9 @@ If a VM has multiple disks, nbdkit can only serve one at a time. To
serve more than one you must run multiple copies of nbdkit. (See
L</NOTES> below).
+C<file=> is a magic config key and may be omitted in most cases.
+See L<nbdkit(1)/Magic parameters>.
+
=item B<libdir=>PATHNAME
This sets the path of the VMware VDDK distribution.
diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
index 6deb0a0b..344b4e6b 100644
--- a/plugins/vddk/vddk.c
+++ b/plugins/vddk/vddk.c
@@ -416,7 +416,7 @@ vddk_config_complete (void)
}
#define vddk_config_help \
- "file=<FILENAME> (required) The filename (eg. VMDK file) to serve.\n" \
+ "[file=]<FILENAME> (required) The filename (eg. VMDK file) to serve.\n" \
"Many optional parameters are supported, see nbdkit-vddk-plugin(3)."
static void
@@ -901,6 +901,7 @@ static struct nbdkit_plugin plugin = {
.config = vddk_config,
.config_complete = vddk_config_complete,
.config_help = vddk_config_help,
+ .magic_config_key = "file",
.dump_plugin = vddk_dump_plugin,
.open = vddk_open,
.close = vddk_close,
diff --git a/tests/test-vddk.sh b/tests/test-vddk.sh
index d99ebf88..6933f716 100755
--- a/tests/test-vddk.sh
+++ b/tests/test-vddk.sh
@@ -48,8 +48,7 @@ grep ^vddk_default_libdir= test-vddk.out
# a load that we know will fail, but the important part is that dlopen's
# error message lists an absolute file even though we passed a relative
# name, showing that our shim did adjust it.
-nbdkit vddk libdir=.libs \
- file=/dev/null --run ':' 2> test-vddk.err || :
+nbdkit vddk libdir=.libs /dev/null --run ':' 2> test-vddk.err || :
cat test-vddk.err
grep '/.libs/nosuch' test-vddk.err
--
2.24.1
4 years, 9 months
[nbdkit PATCH v4 0/4] vddk: Drive library loading from libdir parameter.
by Eric Blake
I'm a lot happier with this version: no mucking with dlmopen(). It
does add a bit more coupling between nbdkit proper and the vddk plugin
(namely, nbdkit now exports a new function that the vddk plugin relies
on), but patch 2 adds testsuite coverage of the new function so we
shouldn't regress.
Patch 1 and 2 are new, patch 3 is unchanged from when Rich posted it
in v2, and patch 4 is simplified somewhat from what I did in v3 (in
particular, I separated the testing of our dlopen shim into a separate
test in patch 2, rather than cramming into test-vddk.sh).
As before, I don't have the actual proprietary VDDK library installed,
so I'm still waiting on Rich's verdict that test-vddk-real.sh passes.
Eric Blake (2):
server: Export nbdkit_set_dlopen_prefix function
tests: Add coverage of new nbdkit_set_dlopen_prefix
Richard W.M. Jones (2):
vddk: Delay loading VDDK until config_complete.
vddk: Drive library loading from libdir parameter.
docs/nbdkit-plugin.pod | 14 +++
include/nbdkit-common.h | 2 +
plugins/vddk/nbdkit-vddk-plugin.pod | 39 ++++++--
plugins/vddk/vddk.c | 136 ++++++++++++++++++----------
server/Makefile.am | 13 +++
server/nbdkit.syms | 1 +
server/shim.c | 99 ++++++++++++++++++++
tests/Makefile.am | 25 +++++
tests/test-dlopen-plugin.c | 107 ++++++++++++++++++++++
tests/test-dlopen.sh | 52 +++++++++++
tests/test-nbdkit-backend-debug.sh | 26 +++---
tests/test-vddk-real.sh | 12 +--
tests/test-vddk.sh | 6 +-
13 files changed, 446 insertions(+), 86 deletions(-)
create mode 100644 server/shim.c
create mode 100644 tests/test-dlopen-plugin.c
create mode 100755 tests/test-dlopen.sh
--
2.24.1
4 years, 9 months
[PATCH v3 0/1] tools: add '--blocksize' option for C-based tools
by Mykola Ivanets
From: Nikolay Ivanets <stenavin(a)gmail.com>
This patch depends on changes in 'common' sub-module posted here:
https://www.redhat.com/archives/libguestfs/2020-February/msg00150.html
v3 fixes issue found during code review:
- options now appear in alphabetical order
v2:
Almost the same as v1 except '--blocksize' option description is moved
into a common submodule (similar to key-option.pod).
v1 was here:
https://www.redhat.com/archives/libguestfs/2020-February/msg00097.html
Nikolay Ivanets (1):
tools: add '--blocksize' option for C-based tools
align/Makefile.am | 1 +
align/scan.c | 8 ++++++++
align/virt-alignment-scan.pod | 2 ++
cat/Makefile.am | 1 +
cat/cat.c | 8 ++++++++
cat/filesystems.c | 8 ++++++++
cat/log.c | 8 ++++++++
cat/ls.c | 8 ++++++++
cat/tail.c | 8 ++++++++
cat/virt-cat.pod | 2 ++
cat/virt-filesystems.pod | 2 ++
cat/virt-log.pod | 2 ++
cat/virt-ls.pod | 2 ++
cat/virt-tail.pod | 2 ++
df/Makefile.am | 1 +
df/main.c | 8 ++++++++
df/virt-df.pod | 2 ++
diff/diff.c | 8 ++++++++
diff/virt-diff.pod | 2 ++
edit/edit.c | 8 ++++++++
edit/virt-edit.pod | 2 ++
fish/fish.c | 8 ++++++++
fish/guestfish.pod | 2 ++
format/Makefile.am | 1 +
format/format.c | 8 ++++++++
format/virt-format.pod | 2 ++
fuse/guestmount.c | 8 ++++++++
fuse/guestmount.pod | 2 ++
inspector/inspector.c | 8 ++++++++
inspector/virt-inspector.pod | 2 ++
rescue/Makefile.am | 1 +
rescue/rescue.c | 8 ++++++++
rescue/virt-rescue.pod | 2 ++
33 files changed, 145 insertions(+)
--
2.17.2
4 years, 9 months
[PATCH] appliance: Add ntfs-3g-system-compression (RHBZ#1703463).
by Richard W.M. Jones
This package in Fedora enables optional support for Windows 10
"CompactOS" (file-level compression), read-only, which is sufficient
for inspecting Windows guests and doing certain types of modifications
to them. Virt-v2v appears to work, but it may be that anything that
involves modifying a compressed file might not work.
I couldn't find the equivalent package in Debian or SUSE. It's
available in Arch AUR although I didn't verify that part of the change
actually works there (but should be safe because supermin ignores
packages that are not known about on the target system).
---
appliance/packagelist.in | 2 ++
1 file changed, 2 insertions(+)
diff --git a/appliance/packagelist.in b/appliance/packagelist.in
index e1cd173f0..13c83d8e4 100644
--- a/appliance/packagelist.in
+++ b/appliance/packagelist.in
@@ -43,6 +43,7 @@ ifelse(REDHAT,1,
nilfs-utils
ntfsprogs
ntfs-3g
+ ntfs-3g-system-compression
openssh-clients
pcre
policycoreutils
@@ -127,6 +128,7 @@ ifelse(ARCHLINUX,1,
multipath-tools dnl for kpartx
nilfs-utils
ntfs-3g
+ ntfs-3g-system-compression
pcre
reiserfsprogs
systemd
--
2.25.0
4 years, 9 months
[PATCH v2v] openstack: Increase Cinder volume attach timeout to 5 minutes (RHBZ#1685032).
by Richard W.M. Jones
In some cases we have observed the time taken for a Cinder volume to
attach to the conversion appliance can be longer than the current 60
seconds. Increase the timeout to 5 minutes.
Thanks: Ming Xie.
---
v2v/output_openstack.ml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/v2v/output_openstack.ml b/v2v/output_openstack.ml
index caaedf452..e395ccb37 100644
--- a/v2v/output_openstack.ml
+++ b/v2v/output_openstack.ml
@@ -38,7 +38,7 @@ let openstack_binary = "openstack"
let available_timeout = 300 (* seconds *)
(* Timeout waiting for Cinder volumes to attach to the appliance. *)
-let attach_timeout = 60 (* seconds *)
+let attach_timeout = 300 (* seconds *)
(* The -oo options supported by this output method. *)
type os_options = {
--
2.24.1
4 years, 9 months