[hivex][PATCH] Increase filetime printing resolution to sub-second
by Alex Nelson
Signed-off-by: Alex Nelson <ajnelson(a)cs.ucsc.edu>
---
xml/hivexml.c | 20 +++++++++++++++++---
1 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/xml/hivexml.c b/xml/hivexml.c
index 5030c24..98b90c5 100644
--- a/xml/hivexml.c
+++ b/xml/hivexml.c
@@ -185,6 +185,8 @@ filetime_to_8601 (int64_t windows_ticks)
char *ret;
time_t t;
struct tm *tm;
+ int64_t sub_seconds;
+ size_t ftd; /* # chars formatted so far. */
if (windows_ticks == 0LL)
return NULL;
@@ -194,16 +196,28 @@ filetime_to_8601 (int64_t windows_ticks)
if (tm == NULL)
return NULL;
- ret = malloc (TIMESTAMP_BUF_LEN);
+ sub_seconds = windows_ticks % WINDOWS_TICK;
+ /* Trim trailing zeroes from fractional part. */
+ while (sub_seconds % 10 == 0 && sub_seconds > 0) {
+ sub_seconds /= 10;
+ }
+
+ ret = calloc (TIMESTAMP_BUF_LEN, sizeof (char));
if (ret == NULL) {
- perror ("malloc");
+ perror ("calloc");
exit (EXIT_FAILURE);
}
- if (strftime (ret, TIMESTAMP_BUF_LEN, "%FT%TZ", tm) == 0) {
+ if (strftime (ret, TIMESTAMP_BUF_LEN, "%FT%T", tm) == 0) {
perror ("strftime");
exit (EXIT_FAILURE);
}
+ ftd = strlen (ret);
+
+ if (snprintf (ret + ftd, TIMESTAMP_BUF_LEN - ftd, ".%" PRIi64 "Z", sub_seconds) == 0) {
+ perror ("snprintf");
+ exit (EXIT_FAILURE);
+ }
return ret;
}
--
1.7.6.4
13 years
[hivex][PATCH 2/8] generator: Add new return type to ABI: RLenValue
by Alex Nelson
RLenValue is similar to RLenType, though with one less argument. This
required adding additional conversion functions for several languages'
bindings.
Signed-off-by: Alex Nelson <ajnelson(a)cs.ucsc.edu>
---
generator/generator.ml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 78 insertions(+), 0 deletions(-)
diff --git a/generator/generator.ml b/generator/generator.ml
index def516f..7ece245 100755
--- a/generator/generator.ml
+++ b/generator/generator.ml
@@ -51,6 +51,7 @@ and ret =
| RNodeList (* Returns hive_node_h* or NULL. *)
| RValue (* Returns hive_value_h or 0. *)
| RValueList (* Returns hive_value_h* or NULL. *)
+ | RLenValue (* Returns offset and length of value. *)
| RString (* Returns char* or NULL. *)
| RStringList (* Returns char** or NULL. *)
| RLenType (* See hivex_value_type. *)
@@ -888,6 +889,7 @@ and generate_c_prototype ?(extern = false) name style =
| RValueList -> pr "hive_value_h *"
| RString -> pr "char *"
| RStringList -> pr "char **"
+ | RLenValue -> pr "hive_value_h "
| RLenType -> pr "int "
| RLenTypeVal -> pr "char *"
| RInt32 -> pr "int32_t "
@@ -909,6 +911,7 @@ and generate_c_prototype ?(extern = false) name style =
) (snd style);
(match fst style with
| RLenType | RLenTypeVal -> pr ", hive_type *t, size_t *len"
+ | RLenValue -> pr ", size_t *len"
| _ -> ()
);
pr ");\n"
@@ -1111,6 +1114,10 @@ On error this returns NULL and sets errno.\n\n"
pr "\
Returns 0 on success.
On error this returns -1 and sets errno.\n\n"
+ | RLenValue ->
+ pr "\
+Returns a value handle.
+On error this returns 0 and sets errno.\n\n"
| RLenTypeVal ->
pr "\
The value is returned as an array of bytes (of length C<len>).
@@ -1622,6 +1629,7 @@ and generate_ocaml_prototype ?(is_external = false) name style =
| RString -> pr "string"
| RStringList -> pr "string array"
| RLenType -> pr "hive_type * int"
+ | RLenValue -> pr "value * int"
| RLenTypeVal -> pr "hive_type * string"
| RInt32 -> pr "int32"
| RInt64 -> pr "int64"
@@ -1685,6 +1693,7 @@ static hive_type HiveType_val (value);
static value Val_hive_type (hive_type);
static value copy_int_array (size_t *);
static value copy_type_len (size_t, hive_type);
+static value copy_len_value (size_t, hive_value_h);
static value copy_type_value (const char *, size_t, hive_type);
static void raise_error (const char *) Noreturn;
static void raise_closed (const char *) Noreturn;
@@ -1707,6 +1716,7 @@ static void raise_closed (const char *) Noreturn;
let c_params =
match fst style with
| RLenType | RLenTypeVal -> c_params @ [["&t"; "&len"]]
+ | RLenValue -> c_params @ [["&len"]]
| _ -> c_params in
let c_params = List.concat c_params in
@@ -1779,6 +1789,11 @@ static void raise_closed (const char *) Noreturn;
pr " size_t len;\n";
pr " hive_type t;\n";
"-1"
+ | RLenValue ->
+ pr " errno = 0;";
+ pr " hive_value_h r;\n";
+ pr " size_t len;\n";
+ "0 && errno != 0"
| RLenTypeVal ->
pr " char *r;\n";
pr " size_t len;\n";
@@ -1859,6 +1874,7 @@ static void raise_closed (const char *) Noreturn;
pr " for (int i = 0; r[i] != NULL; ++i) free (r[i]);\n";
pr " free (r);\n"
| RLenType -> pr " rv = copy_type_len (len, t);\n"
+ | RLenValue -> pr " rv = copy_len_value (len, r);\n"
| RLenTypeVal ->
pr " rv = copy_type_value (r, len, t);\n";
pr " free (r);\n"
@@ -1981,6 +1997,20 @@ copy_type_len (size_t len, hive_type t)
}
static value
+copy_len_value (size_t len, hive_value_h r)
+{
+ CAMLparam0 ();
+ CAMLlocal2 (v, rv);
+
+ rv = caml_alloc (2, 0);
+ v = Val_int (len);
+ Store_field (rv, 0, v);
+ v = Val_int (r);
+ Store_field (rv, 1, v);
+ CAMLreturn (rv);
+}
+
+static value
copy_type_value (const char *r, size_t len, hive_type t)
{
CAMLparam0 ();
@@ -2170,6 +2200,7 @@ sub open {
| RString
| RStringList
| RLenType
+ | RLenValue
| RLenTypeVal
| RInt32
| RInt64 -> ()
@@ -2244,6 +2275,7 @@ and generate_perl_prototype name style =
| RString -> pr "$string = "
| RStringList -> pr "@strings = "
| RLenType -> pr "($type, $len) = "
+ | RLenValue -> pr "($len, $value) = "
| RLenTypeVal -> pr "($type, $data) = "
| RInt32 -> pr "$int32 = "
| RInt64 -> pr "$int64 = "
@@ -2467,6 +2499,7 @@ DESTROY (h)
| RValueList
| RStringList
| RLenType
+ | RLenValue
| RLenTypeVal -> pr "void\n"
| RInt32 -> pr "SV *\n"
| RInt64 -> pr "SV *\n"
@@ -2639,6 +2672,22 @@ DESTROY (h)
pr " PUSHs (sv_2mortal (newSViv (type)));\n";
pr " PUSHs (sv_2mortal (newSViv (len)));\n";
+ | RLenValue ->
+ pr "PREINIT:\n";
+ pr " hive_value_h r;\n";
+ pr " size_t len;\n";
+ pr " PPCODE:\n";
+ pr " errno = 0;\n";
+ pr " r = hivex_%s (%s, &len);\n"
+ name (String.concat ", " c_params);
+ free_args ();
+ pr " if (r == 0 && errno)\n";
+ pr " croak (\"%%s: \", \"%s\", strerror (errno));\n"
+ name;
+ pr " EXTEND (SP, 2);\n";
+ pr " PUSHs (sv_2mortal (newSViv (len)));\n";
+ pr " PUSHs (sv_2mortal (newSViv (r)));\n";
+
| RLenTypeVal ->
pr "PREINIT:\n";
pr " char *r;\n";
@@ -2877,6 +2926,15 @@ put_len_type (size_t len, hive_type t)
}
static PyObject *
+put_len_val (size_t len, hive_value_h value)
+{
+ PyObject *r = PyTuple_New (2);
+ PyTuple_SetItem (r, 0, PyLong_FromLongLong ((long) len));
+ PyTuple_SetItem (r, 1, PyLong_FromLongLong ((long) value));
+ return r;
+}
+
+static PyObject *
put_val_type (char *val, size_t len, hive_type t)
{
PyObject *r = PyTuple_New (2);
@@ -2916,6 +2974,11 @@ put_val_type (char *val, size_t len, hive_type t)
pr " size_t len;\n";
pr " hive_type t;\n";
"-1"
+ | RLenValue ->
+ pr " errno = 0;\n";
+ pr " int r;\n";
+ pr " size_t len;\n";
+ "0 && errno != 0"
| RLenTypeVal ->
pr " char *r;\n";
pr " size_t len;\n";
@@ -2940,6 +3003,7 @@ put_val_type (char *val, size_t len, hive_type t)
let c_params =
match fst style with
| RLenType | RLenTypeVal -> c_params @ ["&t"; "&len"]
+ | RLenValue -> c_params @ ["&len"]
| _ -> c_params in
List.iter (
@@ -3084,6 +3148,8 @@ put_val_type (char *val, size_t len, hive_type t)
pr " free_strings (r);\n"
| RLenType ->
pr " py_r = put_len_type (len, t);\n"
+ | RLenValue ->
+ pr " py_r = put_len_val (len, r);\n"
| RLenTypeVal ->
pr " py_r = put_val_type (r, len, t);\n";
pr " free (r);\n"
@@ -3294,6 +3360,7 @@ get_values (VALUE valuesv, size_t *nr_values)
| RString -> "string"
| RStringList -> "list"
| RLenType -> "hash"
+ | RLenValue -> "integer"
| RLenTypeVal -> "hash"
| RInt32 -> "integer"
| RInt64 -> "integer" in
@@ -3392,6 +3459,11 @@ get_values (VALUE valuesv, size_t *nr_values)
pr " size_t len;\n";
pr " hive_type t;\n";
"-1"
+ | RLenValue ->
+ pr " errno = 0;\n";
+ pr " hive_value_h r;\n";
+ pr " size_t len;\n";
+ "0 && errno != 0"
| RLenTypeVal ->
pr " char *r;\n";
pr " size_t len;\n";
@@ -3416,6 +3488,7 @@ get_values (VALUE valuesv, size_t *nr_values)
let c_params =
match ret with
| RLenType | RLenTypeVal -> c_params @ [["&t"; "&len"]]
+ | RLenValue -> c_params @ [["&len"]]
| _ -> c_params in
let c_params = List.concat c_params in
@@ -3497,6 +3570,11 @@ get_values (VALUE valuesv, size_t *nr_values)
pr " rb_hash_aset (rv, ID2SYM (rb_intern (\"len\")), INT2NUM (len));\n";
pr " rb_hash_aset (rv, ID2SYM (rb_intern (\"type\")), INT2NUM (t));\n";
pr " return rv;\n"
+ | RLenValue ->
+ pr " VALUE rv = rb_hash_new ();\n";
+ pr " rb_hash_aset (rv, ID2SYM (rb_intern (\"len\")), INT2NUM (len));\n";
+ pr " rb_hash_aset (rv, ID2SYM (rb_intern (\"off\")), ULL2NUM (r));\n";
+ pr " return rv;\n"
| RLenTypeVal ->
pr " VALUE rv = rb_hash_new ();\n";
pr " rb_hash_aset (rv, ID2SYM (rb_intern (\"len\")), INT2NUM (len));\n";
--
1.7.4.4
13 years
libguestfs and md devices
by Matthew Booth
We've recently discovered that libguestfs can't handle guests which use
md. There are (at least) 2 reasons for this: Firstly, the appliance
doesn't include mdadm. Without this, md devices aren't detected during
the boot process. Simply adding mdadm to the appliance package list
fixes this.
Secondly, md devices referenced in fstab as, e.g. /dev/md0, aren't
handled correctly by inspection. This looks a bit more complicated. In
my test guest, the guestfs appliance automatically creates the 2 md
devices as:
* /dev/md/localhost:localdomain:0
* /dev/md/localhost:localdomain:1
These are symlinks to ../md126 and ../md127 respectively. I haven't yet
worked out why they aren't created as md0 and md1 as in the guest. I
think here we need to either work out how to make the appliance detect
and use their names (if this is even possible), or to map the names
appropriately using information from /dev/md/md-device-map in the
appliance's root, and /etc/mdadm.conf in the guest's root.
I don't currently think we'll need any new apis for this. I'm not
convinced we need apis for creating and managing md devices, for
example. We could do with a test for inspection of a guest which uses md
devices, which would obviously require creating that guest. However, we
can frig that for the test using debug sh "mdadm ...".
Matt
--
Matthew Booth, RHCA, RHCSS
Red Hat Engineering, Virtualisation Team
GPG ID: D33C3490
GPG FPR: 3733 612D 2D05 5458 8A8A 1600 3441 EA19 D33C 3490
13 years, 1 month
Python API for Resizing the disk
by vipul borikar
Is there Python Binding for Resizing the Image just like "virt-resize" does?
--
Thanks
Vipul Borikar
"Our task must be to free ourselves...by widening our circle of compassion
to embrace all living creatures and the whole of nature and its beauty."
13 years, 1 month
[PATCH] Fix debug help error message
by Matthew Booth
When given an invalid debug command, libguestfs responds with the error message:
libguestfs: error: debug: use 'debug help' to list the supported commands
However this command does not work, as debug requires 2 arguments. This change
updates the message to prompt the user to use 'debug help 0'.
---
daemon/debug.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
13 years, 1 month
Inspecting VMware OVFs
by Derek Palma
Hi,
Maybe this is just a newbie question. I am trying to inspect VMware images
with guestfish.
I am running Fedora 15 in a VSphere VM. Once Fedora is installed I do:
yum update
yum install '*guestf*'
Then I run guesfish on a copy of a Fedora 15 disk.
guestfish -rw -I -a Fedora15-2-disk1.vmdk
with the following result:
libguestfs: error: unexpected end of file when reading from daemon.
This usually means the libguestfs appliance failed to start up. Please
enable debugging (LIBGUESTFS_DEBUG=1) and rerun the command, then look at
the debug messages output prior to this error.
Or you can run 'libguestfs-test-tool' and post the complete output into
a bug report or message to the libguestfs mailing list.
Below is the debug trace. My understaningd is KVM or any hypervisor software
is not required by the libguestfs architecture.
It seems like the most telling message is:
qemu-kvm: -drive file=Fedora15-2-disk1.vmdk,cache=off,if=virtio: could not
open disk image Fedora15-2-disk1.vmdk: Operation not permitted
I presume I am performing a very basic function which is expected to work.
Thanks in advance
Derek
libguestfs: new guestfs handle 0x2123650
libguestfs: [00000ms] febootstrap-supermin-helper --verbose -f checksum
'/usr/lib64/guestfs/supermin.d' x86_64
supermin helper [00000ms] whitelist = (not specified), host_cpu = x86_64,
kernel = (null), initrd = (null), appliance = (null)
supermin helper [00000ms] inputs[0] = /usr/lib64/guestfs/supermin.d
checking modpath /lib/modules/2.6.38.6-26.rc1.fc15.x86_64 is a directory
picked vmlinuz-2.6.38.6-26.rc1.fc15.x86_64 because modpath
/lib/modules/2.6.38.6-26.rc1.fc15.x86_64 exists
checking modpath /lib/modules/2.6.40.6-0.fc15.x86_64 is a directory
picked vmlinuz-2.6.40.6-0.fc15.x86_64 because modpath
/lib/modules/2.6.40.6-0.fc15.x86_64 exists
supermin helper [00000ms] finished creating kernel
supermin helper [00000ms] visiting /usr/lib64/guestfs/supermin.d
supermin helper [00000ms] visiting /usr/lib64/guestfs/supermin.d/base.img
supermin helper [00000ms] visiting /usr/lib64/guestfs/supermin.d/daemon.img
supermin helper [00000ms] visiting /usr/lib64/guestfs/supermin.d/hostfiles
supermin helper [00025ms] visiting /usr/lib64/guestfs/supermin.d/init.img
supermin helper [00093ms] finished creating appliance
libguestfs: [00095ms] begin testing qemu features
libguestfs: [00107ms] finished testing qemu features
libguestfs: accept_from_daemon: 0x2123650 g->state = 1
libguestfs: is_openable: /dev/kvm: No such file or directory
libguestfs: [00122ms] /usr/bin/qemu-kvm \\n -drive
file=Fedora15-2-disk1.vmdk,cache=off,if=virtio \\n -nodefconfig \\n
-nodefaults \\n -nographic \\n -m 500 \\n -no-reboot \\n
-no-hpet \\n -device virtio-serial \\n -serial stdio \\n -chardev
socket,path=/tmp/libguestfsH4wsQ8/guestfsd.sock,id=channel0 \\n -device
virtserialport,chardev=channel0,name=org.libguestfs.channel.0 \\n -kernel
/var/tmp/.guestfs-500/kernel.2427 \\n -initrd
/var/tmp/.guestfs-500/initrd.2427 \\n -append 'panic=1 console=ttyS0
udevtimeout=300 noapic acpi=off printk.time=1 cgroup_disable=memory
selinux=0 guestfs_verbose=1 TERM=xterm ' \\n -drive
file=/var/tmp/.guestfs-500/root.2427,snapshot=on,if=virtio,cache=unsafe
open /dev/kvm: No such file or directory
Could not initialize KVM, will disable KVM support
qemu-kvm: -drive file=Fedora15-2-disk1.vmdk,cache=off,if=virtio: could not
open disk image Fedora15-2-disk1.vmdk: Operation not permitted
libguestfs: error: unexpected end of file when reading from daemon.
See earlier debug messages.
Or you can run 'libguestfs-test-tool' and post the complete output into
a bug report or message to the libguestfs mailing list.
libguestfs: child_cleanup: 0x2123650: child process died
libguestfs: closing guestfs handle 0x2123650 (state 0)
13 years, 1 month
[ANNOUNCE] libguestfs 1.14 released - tools for managing virtual machines and disk images
by Richard W.M. Jones
libguestfs is a library and a set of tools for reading, writing,
managing, inspecting, rescuing, resizing and aligning disk images,
and offline and live virtual machines.
I'm pleased to announce the release of libguestfs 1.14, the next
stable release of libguestfs. There are many changes and new features
in this release -- see below.
You can get source and binaries from the website:
http://libguestfs.org/
Source: http://libguestfs.org/download/1.14-stable/
Fedora: http://koji.fedoraproject.org/koji/packageinfo?packageID=8391
Debian 6: http://libguestfs.org/download/binaries/debian-packages/
Ubuntu 11.10: http://libguestfs.org/download/binaries/ubuntu1110-packages/
Release notes for libguestfs 1.14.0
-----------------------------------
These release notes only cover the differences from the previous
stable/dev branch split (1.12.0). For detailed changelogs, please see
the git repository, or the ChangeLog file distributed in the tarball.
New features
virt-alignment-scan is a new tool to check the alignment of
partitions within virtual machines or disk images.
virt-sparsify is a new tool to make virtual machine disk images
sparse.
virt-sysprep is a new tool to make cloning guests from a template
simpler.
erlang bindings.
virt-cat:
- virt-cat can now handle Windows paths and drive letters (RHBZ#693359).
virt-filesystems:
- the MBR partition type byte is displayed in --long output.
virt-make-fs:
- virt-make-fs now sets the MBR partition type byte correctly,
improving compatibility with Windows (RHBZ#746295).
virt-resize:
- virt-resize can now work with guests using extended and logical
partitions, in particular Ubuntu guests.
- virt-resize can now align the first partition of Windows guests,
improving performance. The new virt-resize --align-first option
controls this behaviour.
- The virt-resize --machine-readable flag makes it possible to use
virt-resize from other programs.
- Partitions are now aligned to 128 sectors (usually 64K) by
default. This improves efficiency on high-end storage. The new
virt-resize --alignment option allows the alignment to be
adjusted.
virt-win-reg:
- The syntax for deleting registry keys and values is documented
in the man page (RHBZ#737944).
guestfish:
- New commands setenv, unsetenv, to set environment variables.
- The input file and line number is printed in error messages.
- guestfish progress bars are now a "mini-library" used by other
tools too.
guestmount:
- the --live option (for access to live VMs) now works.
library:
- non-printing characters are escaped correctly in debug output.
- GUESTFS_EVENT_ENTER is a new event type generated whenever a
libguestfs function is called.
- the library contains systemtap/DTrace probes.
- the library can now be compiled without hivex (RHBZ#723474).
inspection:
- Improve detection of Windows disks.
- Adds support for:
ttylinux - a minimal Linux
Mageia (thanks Michael Scherer)
OpenSUSE and zypper (thanks Michael Scherer, Vincent Untz)
Ubuntu logos (thanks Michael Scherer)
NetBSD and pkgsrc (thanks Michael Scherer)
- Handle some guest types that use /dev/root in /etc/fstab.
- Fix handling of guests with > 26 disks (thanks Matthew Booth)
- Add support for guests with HP Smart Array disks (thanks Matthew Booth)
febootstrap:
- FEBOOTSTRAP_KERNEL, FEBOOTSTRAP_MODULES environment variables can
be set in order to choose which kernel to use for the appliance.
misc:
- ArchLinux support now working with Linux 3.0 (thanks Erik Nolte)
- libvirt disks marked <readonly/> are now added readonly when
using the virt-tools '-d' option.
Security
(no security problems were found or fixed in this release)
New APIs
compress-out, compress-device-out, copy-device-to-device,
copy-device-to-file, copy-file-to-device, copy-file-to-file,
get-smp, part-to-partnum, set-smp.
The mount API no longer implicitly adds -o sync,noatime options.
add-domain has a new 'readonlydisk' optional parameter to control
how <readonly/> disks are handled.
Internals
- Coverity was run on the source and more bugs were identified and
fixed.
- PCRE library is now required to build libguestfs.
- APIC is now the default for the appliance. You can also enable
SMP support in the appliance.
- OCaml bindings now correctly acquire GC lock during callbacks.
- Out of tree builds should now work correctly (thanks Hilko Bengen).
- ./configure --with-extra="..." can be used by packagers to set
the extra version string.
- zero, zero-device APIs: if the blocks already contain zeroes,
don't write zeroes, so that we don't unnecessarily make the
underlying storage non-sparse.
- is-zero, is-zero-device APIs: optimize these so zero detection is
faster.
Bugs fixed
- 748266 libguestfs should detect versions of qemu which require -machine pc option
- 747290 libguestfs ignores <readonly/> in libvirt XML
- 747287 Misleading error message when permission denied opening a disk image
- 746295 virt-make-fs doesn't set partition ID
- 744795 guestmount --live is not usable
- 737944 virt-win-reg hyphen (delete key) syntax may be wrong, and is not documented
- 733297 ruby event handlers fail with "exception in callback: wrong argument type Proc (expected Data)"
- 731744 libguestfs should escape special/non-printing characters in debug output
- 729887 appliance crashes running aug_init with flags=4
- 729075 libguestfs confuses Hp_recovery partition with Windows root filesystem
- 727178 error: luks_open: cryptsetup: error while loading shared libraries: libfipscheck.so.1: cannot open shared object file: No such file or directory
- 726739 libguestfs: error: aug_get: no matching node, trying to find hostname
- 723474 If hivex and/or pcre not installed, libguestfs fails to compile
- 693359 virt-cat and virt-edit don't handle case sensitive NTFS paths properly
- 678231 virt-inspector reports unknown filesystem UUID
- 671082 libguestfs does not work with kernel-rt
- 666578 libguestfs: unknown filesystem label SWAP-sda2
- 642821 virt-resize falls over on a disk image with a logical swap partition
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://et.redhat.com/~rjones/virt-top
13 years, 1 month
Plan for libguestfs 1.14
by Richard W.M. Jones
[Since Hilko asked me about this on IRC ...]
The current plan is to rebase libguestfs in RHEL 6.3:
https://bugzilla.redhat.com/show_bug.cgi?id=719879
I would like to get as many features from upstream libguestfs into
this as possible, but also make sure they have been well-tested by
Fedora users. Also there are some new tools arriving in libguestfs
upstream in the current development branch (1.13.x):
- virt-alignment-scan
http://libguestfs.org/virt-alignment-scan.1.html
- virt-sparsify
http://libguestfs.org/virt-sparsify.1.html
- A tool (or tools) to replace virt-clone
https://rwmj.wordpress.com/2011/05/11/virt-tools-survey-virt-clone/
So this is my plan, assuming no one has any strong objections:
(1) Continue development of the new virt tools in libguestfs for the
rest of this month.
(2) Release 1.14.0 new stable branch around the end of this month (Oct'11)
(3) Put this new stable version into Fedora 16 after 16 is released.
https://fedoraproject.org/wiki/Releases/16/Schedule
(4) Test, test, test. Backport bugfixes into 1.14.x branch as per the
usual plan.
http://libguestfs.org/guestfs.3.html#libguestfs_version_numbers
(5) Put 1.14.x into RHEL 6.3 (around 1Q 2012).
Comments?
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://et.redhat.com/~rjones/virt-top
13 years, 1 month
[PATCH] Add test for qemu broken -machine option (RHBZ#748266).
by Richard W.M. Jones
I've pushed this one already, so this is just 'FYI'. I tested
it first on 5 different machines with:
- latest upstream qemu
- qemu-kvm from Fedora that contains the patch to fix the broken
-machine option
- qemu-kvm from Fedora, but with that patch removed
- old qemu that predates the -machine option entirely
- Debian 6 + qemu 0.14
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://et.redhat.com/~rjones/virt-top
13 years, 2 months