Proposed timetable for libguestfs 1.6
by Richard W.M. Jones
The development branch (1.5) contains some major performance
improvements over the current stable branch (1.4). Furthermore nearly
3 months have passed since we branched 1.4, which is about the same
time that separated 1.4 from 1.2.
Thus I think around the first or second week of October we ought to
start the new stable and development branches (1.6 and 1.7 resp.)
At this time we should decide if all the new APIs and features we have
added in 1.5 are supportable in the long term, since we only guarantee
the C API is stable for stable branches.
Below are the commits we have added (so far) in 1.5, and you can read
the whole API on the website. I will be compiling a summary of major
features in the release notes file in the source:
http://git.annexia.org/?p=libguestfs.git;a=blob;f=RELEASE-NOTES;hb=HEAD
Any objections or problems with a commit, please follow up.
Rich.
d75a2bf fish: Implement 'hexedit' command.
5d4ae18 New APIs: upload-offset and download-offset
8c5a4d9 leak: Clear history before exiting guestfish.
8ea62c8 leak: Free list of drives and mountpoints in guestfish.
e7f6274 leak: Free PCRE regexps when library is unloaded.
6d276da leak: Appliance name was leaked during guestfs_launch.
0132890 Add more exclusions to .gitignore.
d1c2287 Fix appliance build dependency problem
ff4ae86 fish: Add --echo-keys option to allow passphrases/keys to be echoed.
8328649 df: Add --one-per-guest option for using one appliance per guest.
17e7cb9 Fix error launching libguestfs when euid != uid.
6123abc todo: Suggest removing repo name from appliance name.
0003ea2 generator: Generate guestfish-only commands.
585fceb fish: In guestfish(1) turn command references into links.
3eb7655 fish: Correction for online help for 'edit' and 'more' commands.
a37ec22 Version 1.5.16.
6b2ae9a configure: Make "fedora-13" the default repository.
dd093a7 fish: If -m option fails, suggest a mountpoint.
325587d todo: Remove section since we now have list-filesystems API.
d4ba3d3 Version 1.5.15.
000c4a8 New API: list-filesystems: list filesystems
ffd4820 New API: part-to-dev: Convert partition name to device name.
ff38fea generator: Add TestOutputDevice.
43d5ea6 todo: More use of libblkid.
c98f073 fish: In usage message use new-style -i option syntax.
42b62b8 fish: Update copyright dates in usage message.
31a2c00 fish: Remove extraneous space from usage message.
7c87dd1 todo: More ideas.
5a7c430 Version 1.5.14.
d3c6e50 configure: Check for virtio-serial support in qemu.
9cab7e3 pardus: Check for cpio in configure.
17b50a3 Update Spanish translation (RHBZ#633357).
a403e74 build: Add run-test-tool-locally to EXTRA_DIST.
2b1e36d Version 1.5.13.
7419335 appliance: Disable setting scheduler to noop.
3deebe5 ubuntu: Remove bogus debirf file.
75f0a92 ubuntu: Add linux-image to the packagelist.
93ae3fa ubuntu: /proc can be a symlink
da107cf build: 'make quickcheck' rule now uses new run-test-tool-locally script.
9f653ed build: hivex is required.
f565e71 Version 1.5.12.
e903739 build: require Augeas for library.
67fd3a7 generator: Provide no-op generator if no OCaml compiler.
2fbac04 build: Don't distribute src/generator.ml, no longer exists.
b42262c generator: Calculate MD5 of test.iso at runtime.
451a283 generator: Don't use real uuidgen for UUIDs.
04d8209 Split generator into separate source files.
264629b syntax: Replace -a and -o with && and || for portability.
431503d syntax: Use exit (EXIT_SUCCESS) instead of hard-coded number.
5133632 syntax: Remove unused assert.h header.
21aac86 syntax: Remove unused ignore-value.h header.
0e422c0 syntax: Remove unused signal.h header.
a0b7045 syntax: Remove unused c-ctype.h header.
c1b6352 syntax: Fully bracket m4 macro arguments.
b3d94d6 syntax: Remove trailing spaces.
b4a3aec syntax: Use spaces instead of tabs for indentation.
3d994f3 syntax: Replace _prohibit_regexp with _sc_search_regexp.
c359347 fish: glob should only print commands when trace mode is enabled.
b033b55 fish: Add regression test for copy-in and copy-out.
3161cb5 README: Document virtio-serial is now the only vmchannel.
b1e6580 fish: const-correctness fixes in copy.c
f6246e9 Version 1.5.11.
0255835 Update OCaml dependencies.
646813e Update PO files.
878c8c7 fish: Fix 'copy-out' command when local directory is "/foo".
3578f17 fish: Fix typo in documentation of copy-out.
8902b33 Version 1.5.10.
f383ac1 todo: Remove discussion of copy-in/copy-out.
2635a9c fish: Implement copy-in and copy-out commands.
43eed09 New APIs: is-chardev, is-blockdev, is-fifo, is-symlink, is-socket
3a99114 daemon: Move 'exists', 'is-file' and 'is-dir' to separate file.
55b6e18 generator: Fix incorrect shortdesc in docs for 'is-dir' command.
22aa926 generator: Fix documentation for 'is-file' command.
639ca18 fish: Fix 'more' command to work with any file.
b5c287b fish: Fix 'edit' command to work with any file.
13be761 guestfs: Reference guestfs-browser architecture in threads documentation.
b1454e3 guestfs: Document progress notification messages in protocol.
e2ef068 guestfs: More accurate documentation for initial message.
6d9f8f5 guestfs: Remove traces of documentation for non-existent 'low-level API'
f3c05da guestfs: Fix typo in man page.
979bcc5 todo: Notes on virt copy command.
6a87e0a Bring TODO file up to date.
c51ade2 Version 1.5.9.
d5c8d3b fish: Add guestfish -N bootroot and -N bootrootlv for creating boot+root disks.
574df37 fish: Add guestfish -N lvfs for creating formatted LVs.
422a8d8 fish: Add guestfish -N lv for creating disks with LVs.
45f72c8 fish: Improve appearance of guestfish -N help output.
fa918b1 fish: Allow guestfish -N help for listing prepared disk image help.
60cdd02 fish: Generate list of prepared disk image types.
06c9061 test-tool: Add a 'run-test-tool-locally' script.
b762848 appliance: init script does 'ls -lR /dev' (verbose only)
aa96881 daemon: Don't warn about 'long long' usage.
bd77c8d php: Remove 'make clean' rule in subdirectory.
56da696 Version 1.5.8.
2c61e04 PHP bindings.
2d8fd7d Define LIBGUESTFS_HAVE_<shortname> for C API functions.
5fc69ce build: guestfs-structs.h was missing from libguestfs_la_SOURCES.
8ad79a7 Add full docs pot file.
8c48f5a Allow manual pages and POD files to be translated.
1193df7 Add Dutch translation (RHBZ#629593).
25521f1 ruby: Add Guestfs::Guestfs.new() method.
b8b0c99 perl: Document handle is a hashref.
0f24424 perl: Add documentation about testing availability of methods and features.
71f5cc5 build: Link static -ltinfo into guestfish.static binary.
d8daebf Version 1.5.7.
2310514 fish: Add missing header file to sources.
d1485e0 ocaml: Add test for progress notification callbacks.
8c37961 debug: Add 'debug progress' command.
99679fe debug: Arrange prototypes in alphabetical order.
83f381f daemon: Enable debug command by default.
867319e Consistent use of 'void *opaque' to refer to opaque pointer in C API.
c9bc865 resize: Add progress bar to virt-resize.
8ff17e1 perl: bindings to progress callback.
3978a30 ocaml: bindings to progress callback.
4ea0abf Implement private data area.
54837f6 fish: Implement progress bars in guestfish.
3003df6 fish: Detect UTF-8 output and open termcap/terminfo database.
6551096 Add progress messages to download command.
133a92b Add progress messages to zero-device command.
88ab203 Add progress messages to zero command.
5593840 Add progress messages to fill-pattern command.
7f1ecfc Add progress messages to fill command.
41512f4 Add progress messages to copy-size command.
e776a46 Implement progress messages in the daemon and library.
a8a44ce ocaml: Remove old entry from .gitignore file.
377926b Version 1.5.6.
d46230f Requires febootstrap >= 2.9.
d89a88d daemon: Set O_CLOEXEC flag on the virtio-serial file descriptor.
4932fdc build: Don't add version extra string to the version number.
1c52376 Update BUGS, PO files.
b59aff0 Update Spanish translations (RHBZ#627556).
3f7965b Updated Spanish translations (RHBZ#626843).
9bc72e2 Update Polish translation (RHBZ#502533).
92876a4 Prepare for version 1.5.5.
daead56 rescue: Fix typo in comment.
c3194e4 Ignore launch() error in virt-rescue. (RHBZ#618556)
d3fc7e1 Shut down the appliance cleanly
c0b38fb Call sync after guestfsd exits
a45302c Add a core_pattern debug command
a0d514f Include statically linked binaries in the binary distribution.
27ef6f9 Rename global 'xdr_str'.
6d15d4e Add -nodefconfig command line option to qemu.
e503b31 Version 1.5.4.
4963be8 New APIs: set-network and get-network to enable network support.
10d1aa3 build: Add 'bindist' rule for building binary distribution.
5c1346d Don't print debug messages when not in verbose mode.
831b1fc Change protocol to send Linux errno from daemon to library.
90d06e2 Raise error message max size to 64K.
866ec00 Use virtio-serial, remove other vmchannel methods.
5c31f61 Change to using ext2-based, cached supermin appliance.
4b753c6 Make print_timestamped_message into a cross-module function.
a2d4a8b Factor out code for locating the temporary directory.
4d2f163 Whitespace change: Add blank line between structures and functions.
c56fa58 appliance: Remove some obsolete testing rules from Makefile.am
83c2217 Version 1.5.3
ad373a4 Remove old ocaml-inspector code.
4440e22 fish: Reimplement -i option using new C-based inspection.
1a9aa56 fish: Add -c/--connect and -d/--domain options.
8289aa1 New APIs for guest inspection.
65e9ac4 New APIs: findfs-label and findfs-uuid
ad4cff2 New API: file-architecture
3cd272f generator: No need to redefine safe_* macros.
3905cc7 Add safe_strndup call.
64d7022 Send trace output to stderr.
8340779 Python: Use new PyCapsule API where supported.
2992524 generator: Fix typo in error message for RConstOptString.
6280ac9 New API: is-lv: check if a block device is a logical volume (RHBZ#619793)
737181b Rename internal functions.
41f25ab Rearrange library code into separate files.
a617f52 Rename guestfs-{actions,bindtests}.c to {actions,bindtests}.c
d30176d TODO: Implement inspector code in C.
b42d34b TODO: Implement recursive upload/download in guestfish.
4a7d8cd TODO: Add link to discussion of progress bars.
cd773b0 Version 1.5.2.
e7ee6ee regressions: Don't print misleading 'Expect error ...' lines.
945e569 New APIs: Support for creating LUKS and managing keys.
2fd8c25 Move variable initialization close to variable use.
799d52b Revert "add_drive_ro adds readonly=on option if available." (RHBZ#617200).
2a286f1 generator: Make documentation inside guestfish match man page.
e67298c Version 1.5.1.
637f8df New APIs: Support for opening LUKS-encrypted disks.
581a796 generator: Add 'Key' parameter type.
2e7da2a generator: Remove unnecessary parameter.
45a4cd7 df: Minimize the number of times we launch the libguestfs appliance.
d2cf9a1 New APIs: lvm-set-filter and lvm-clear-filter.
321ca1e Use an unsigned type (size_t) for all loop iterators.
aac5194 generator: Don't hard-code name in DeviceList check.
0c09764 build: Don't warn about 'long long'.
5b77be7 doc: Add guestfish 'lvcreate 1M' gotcha.
70d27f6 tar: Remove redundant use statement.
10ea14a edit: Clean up temporary files.
fed8714 edit: Add -b (backup) option and make uploading more robust.
8f6d8b0 edit: Add -e 'expr' option to non-interactively apply expression to the file.
58667f2 Prepare for new development branch, starting at 1.5.0.
49a71a4 Make tmp directory world readable (RHBZ#610880).
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into Xen guests.
http://et.redhat.com/~rjones/virt-p2v
14 years, 2 months
[PATCH] Use augeas to update securetty
by Matthew Booth
augeas now supports securetty. This resolves a failure when securetty isn't
present in the guest.
Resolves RHBZ#639413
---
lib/Sys/VirtV2V/Converter/Linux.pm | 14 ++++----------
1 files changed, 4 insertions(+), 10 deletions(-)
diff --git a/lib/Sys/VirtV2V/Converter/Linux.pm b/lib/Sys/VirtV2V/Converter/Linux.pm
index b2eb774..22aa03f 100644
--- a/lib/Sys/VirtV2V/Converter/Linux.pm
+++ b/lib/Sys/VirtV2V/Converter/Linux.pm
@@ -218,20 +218,14 @@ sub _configure_console
}
# Replace any mention of xvc0 or hvc0 in /etc/securetty with ttyS0
- my $size = 0;
- my @lines = ();
+ foreach my $augpath ($g->aug_match('/files/etc/securetty/*')) {
+ my $tty = $g->aug_get($augpath);
- foreach my $line ($g->read_lines('/etc/securetty')) {
- if($line eq "xvc0" || $line eq "hvc0") {
- $line = "ttyS0";
+ if($tty eq "xvc0" || $tty eq "hvc0") {
+ $g->aug_set($augpath, 'ttyS0');
}
-
- $size += length($line) + 1;
- push(@lines, $line);
}
- $g->write_file('/etc/securetty', join("\n", @lines)."\n", $size);
-
# Update any kernel console lines
foreach my $augpath
($g->aug_match("/files/boot/grub/menu.lst/title/kernel/console"))
--
1.7.2.3
14 years, 2 months
ANNOUNCE: virt-tools.org website
by Richard W.M. Jones
I'm pleased to announce the virt-tools.org website:
http://virt-tools.org/
The "virt tools" are an informal group of system administration tools
for small-scale Linux virtualization, including virt-manager,
virt-install, libvirt, virt-v2v, libguestfs, virt-df, virt-top and
more.
The virt tools website is an umbrella project to provide
documentation, tutorials, online help and roadmaps for these tools.
The website does *not* replace the existing upstream websites, but
hopes to complement those sites by providing documentation that
crosses tool boundaries and help to get started.
The site is open source and we welcome your contributions. Get the
git repository here:
http://git.fedorahosted.org/git/?p=virt-tools.git
and send patches to the mailing list:
http://virt-tools.org/contact/#mailing-list
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into Xen guests.
http://et.redhat.com/~rjones/virt-p2v
14 years, 2 months
[PATCH] Fix device name mapping for libata guests
by Matthew Booth
remap_block_devices was modifying the global device list while remapping device
names for libata guests (which includes RHEL 6). This caused a failure later
when the renamed devices were not present in the original XML.
Fixes RHBZ#641869
---
lib/Sys/VirtV2V/GuestOS/RedHat.pm | 14 +++++++++++++-
1 files changed, 13 insertions(+), 1 deletions(-)
diff --git a/lib/Sys/VirtV2V/GuestOS/RedHat.pm b/lib/Sys/VirtV2V/GuestOS/RedHat.pm
index a322a5d..cc95fd8 100644
--- a/lib/Sys/VirtV2V/GuestOS/RedHat.pm
+++ b/lib/Sys/VirtV2V/GuestOS/RedHat.pm
@@ -1567,7 +1567,19 @@ sub remap_block_devices
$letter++;
}
- map { $_ = $map{$_} } @$devices;
+ # N.B. Don't use map() here because we mustn't modify the original
+ # devices list
+ my @newdevices;
+ foreach my $device (@$devices) {
+ my $map = $map{$device};
+
+ unless (defined($map)) {
+ warn ("No mapping for device $device");
+ next;
+ }
+ push(@newdevices, $map);
+ }
+ $devices = \@newdevices;
}
}
--
1.7.2.3
14 years, 2 months
[PATCH 1/2] Remove incompletely transferred libvirt volumes
by Matthew Booth
If a user interrupted transfer of data to a libvirt volume, the incomplete data
was left in place. This patch causes the volume to be removed.
Fixes RHBZ#616728
---
lib/Sys/VirtV2V/Target/LibVirt.pm | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/lib/Sys/VirtV2V/Target/LibVirt.pm b/lib/Sys/VirtV2V/Target/LibVirt.pm
index 029e4e2..943b95a 100644
--- a/lib/Sys/VirtV2V/Target/LibVirt.pm
+++ b/lib/Sys/VirtV2V/Target/LibVirt.pm
@@ -21,6 +21,7 @@ use warnings;
package Sys::VirtV2V::Target::LibVirt::Vol;
use POSIX;
+use Sys::Virt;
use Sys::VirtV2V::Util qw(user_message);
@@ -143,6 +144,17 @@ sub close
delete($self->{fd});
}
+sub DESTROY
+{
+ my $self = shift;
+
+ # Check if the volume has been opened, but not closed
+ return unless (exists($self->{fd}));
+
+ # Assume the volume is incomplete and delete it
+ $self->{vol}->delete(Sys::Virt::StorageVol::DELETE_NORMAL);
+}
+
package Sys::VirtV2V::Target::LibVirt;
use Sys::Virt;
--
1.7.2.3
14 years, 2 months
[FEBOOTSTRAP] Ensure atomic creation of a cached appliance
by Matthew Booth
Cached appliances are discovered by their predictable path. Previously we were
creating a cached appliance directly in this predictable path. This had at least
2 undesirable effects:
* Interrupting appliance creation would leave a corrupt appliance
* 2 processes could simultaneously attempt to create the same appliance, causing
corruption.
This patch causes the cached appliance to be created in a temporary directory,
and then renamed to the predictable path. As rename is an atomic operation, this
makes the whole creation atomic.
This patch also changes the predictable path to have a prefix of 'guestfs.'.
This will make it simpler for system administrators to clean up old cached
appliances.
---
regressions/test-launch-race.pl | 60 ++++++++++++++++++++++
src/appliance.c | 105 ++++++++++++++++++++++++++++++++++-----
2 files changed, 152 insertions(+), 13 deletions(-)
create mode 100755 regressions/test-launch-race.pl
14 years, 2 months