libguestfs.git
14 years agoInclude statically linked binaries in the binary distribution.
Richard Jones [Wed, 25 Aug 2010 10:53:00 +0000 (11:53 +0100)]
Include statically linked binaries in the binary distribution.

14 years agoRename global 'xdr_str'.
Richard Jones [Wed, 25 Aug 2010 10:41:17 +0000 (11:41 +0100)]
Rename global 'xdr_str'.

Two bits of XDR both contained a definition called 'str' which
means that 'xdr_str' was being exported globally twice.  Because
of the linker script this didn't affect us.  But it's best to
rename this global so that conflicts cannot arise.

14 years agoAdd -nodefconfig command line option to qemu.
Daniel Berrange [Tue, 24 Aug 2010 13:27:15 +0000 (14:27 +0100)]
Add -nodefconfig command line option to qemu.

Without this option, qemu will read some defaults from /etc/qemu/
configuration files.

14 years agoVersion 1.5.4. 1.5.4
Richard Jones [Tue, 24 Aug 2010 11:37:39 +0000 (12:37 +0100)]
Version 1.5.4.

14 years agoNew APIs: set-network and get-network to enable network support.
Richard Jones [Tue, 24 Aug 2010 10:53:40 +0000 (11:53 +0100)]
New APIs: set-network and get-network to enable network support.

guestfs_set_network (g, true) enables network support in the appliance.

14 years agobuild: Add 'bindist' rule for building binary distribution.
Richard Jones [Tue, 24 Aug 2010 10:19:55 +0000 (11:19 +0100)]
build: Add 'bindist' rule for building binary distribution.

14 years agoDon't print debug messages when not in verbose mode.
Richard Jones [Mon, 23 Aug 2010 21:58:51 +0000 (22:58 +0100)]
Don't print debug messages when not in verbose mode.

Don't print them because no one's listening ...

14 years agoChange protocol to send Linux errno from daemon to library.
Richard Jones [Mon, 23 Aug 2010 21:19:24 +0000 (22:19 +0100)]
Change protocol to send Linux errno from daemon to library.

This changes the protocol so that the Linux errno (if available)
is sent back to the library.  Note that the errno is not yet
made available to callers, since it is not clear how best to
present this Linux-specific number.

14 years agoRaise error message max size to 64K.
Richard Jones [Mon, 23 Aug 2010 21:14:27 +0000 (22:14 +0100)]
Raise error message max size to 64K.

This commit removes one of the protocol limits, by raising the
maximum error message size from 256 bytes to 64K.

Although we could consider raising this further, since the
error messages are currently stored in fixed sized buffers on
the stack, that would require more invasive code changes.

14 years agoUse virtio-serial, remove other vmchannel methods.
Richard Jones [Mon, 23 Aug 2010 20:53:32 +0000 (21:53 +0100)]
Use virtio-serial, remove other vmchannel methods.

This adds support for virtio-serial, and removes all other
vmchannel methods.

Virtio-serial is faster than other methods, and is now widely
available.

I tested this by using the guestfs_upload API on an 83 MB file:
  before: 6.12 seconds (14.1 MB/sec)
   after: 4.20 seconds (20.6 MB/sec)
(note this is with the current 8K chunk size)

14 years agoChange to using ext2-based, cached supermin appliance.
Richard Jones [Mon, 23 Aug 2010 10:12:29 +0000 (11:12 +0100)]
Change to using ext2-based, cached supermin appliance.

This changes the method used to build the supermin appliance
to use the new ext2-based appliance supported by latest febootstrap.
The appliance can also be cached, so we avoid rebuilding it
each time it is used.

Mailing list discussion goes into the rationale and details:
https://www.redhat.com/archives/libguestfs/2010-August/msg00028.html

Requires febootstrap >= 2.8.

14 years agoMake print_timestamped_message into a cross-module function.
Richard Jones [Mon, 23 Aug 2010 11:54:27 +0000 (12:54 +0100)]
Make print_timestamped_message into a cross-module function.

This is just code movement.

14 years agoFactor out code for locating the temporary directory.
Richard Jones [Mon, 23 Aug 2010 11:53:11 +0000 (12:53 +0100)]
Factor out code for locating the temporary directory.

This is just code movement.

14 years agoWhitespace change: Add blank line between structures and functions.
Richard Jones [Sat, 21 Aug 2010 11:45:51 +0000 (12:45 +0100)]
Whitespace change: Add blank line between structures and functions.

14 years agoappliance: Remove some obsolete testing rules from Makefile.am
Richard Jones [Sat, 21 Aug 2010 09:39:39 +0000 (10:39 +0100)]
appliance: Remove some obsolete testing rules from Makefile.am

This haven't been used -- and haven't worked -- for a long time.

14 years agoVersion 1.5.3 1.5.3
Richard Jones [Tue, 17 Aug 2010 13:30:58 +0000 (14:30 +0100)]
Version 1.5.3

14 years agoRemove old ocaml-inspector code.
Richard Jones [Mon, 2 Aug 2010 22:29:43 +0000 (23:29 +0100)]
Remove old ocaml-inspector code.

Not used by anyone, didn't work well, and replaced now by the
C inspection APIs.

14 years agofish: Reimplement -i option using new C-based inspection.
Richard Jones [Mon, 2 Aug 2010 16:43:23 +0000 (17:43 +0100)]
fish: Reimplement -i option using new C-based inspection.

Don't shell out to virt-inspector.  Instead, use the new C-based
inspection APIs.

This is much faster.

The new syntax is slightly different:

  guestfish -a disk.img -i
  guestfish -d guest -i

However, the old syntax still works.

14 years agofish: Add -c/--connect and -d/--domain options.
Richard Jones [Mon, 2 Aug 2010 15:33:25 +0000 (16:33 +0100)]
fish: Add -c/--connect and -d/--domain options.

The -d option lets you specify libvirt domains.  The disks from
these domains are found and added, as if you'd named them with -a.

The -c option lets you specify a libvirt URI, which is needed
when we consult libvirt to implement the above.

14 years agoNew APIs for guest inspection.
Richard Jones [Wed, 28 Jul 2010 14:40:42 +0000 (15:40 +0100)]
New APIs for guest inspection.

This commit converts (some of) the Perl inspection code to C and
makes it available through core APIs.  The new APIs are:

inspect-os        - Does the inspection, returns list of OSes
inspect-get-*     - Get results of the inspection

where '*' is one of:

  type            - 'windows' or 'linux'
  distro          - Linux distro
  arch            - architecture
  product-name    - long product name string
  major-version
  minor-version   - major.minor version of OS
  mountpoints     - get a list of the mountpoints
  filesystems     - get all filesystems associated with the OS

This works for all existing supported Linux and Windows OSes.

14 years agoNew APIs: findfs-label and findfs-uuid
Richard Jones [Wed, 28 Jul 2010 22:11:38 +0000 (23:11 +0100)]
New APIs: findfs-label and findfs-uuid

These two calls wrap up the /sbin/findfs command, allowing you
to find a filesystem by only knowing its label or UUID.

This is especially useful when resolving LABEL=... or UUID=...
entries in /etc/fstab.

Sample guestfish session:

><fs> vfs-uuid /dev/vda1
277dd61c-bf34-4253-a8dc-df500a05e7df
><fs> findfs-uuid 277dd61c-bf34-4253-a8dc-df500a05e7df
/dev/vda1
><fs> vfs-label /dev/vda1
/boot
><fs> findfs-label /boot
/dev/vda1
><fs> vfs-uuid /dev/VolGroup00/LogVol00
40ce7c36-82ce-4a12-a99d-48f5e054162c
><fs> findfs-uuid 40ce7c36-82ce-4a12-a99d-48f5e054162c
/dev/mapper/VolGroup00-LogVol00
><fs> findfs-uuid 12345678
libguestfs: error: findfs_uuid: findfs: unable to resolve 'UUID=12345678'

14 years agoNew API: file-architecture
Richard Jones [Wed, 28 Jul 2010 14:38:57 +0000 (15:38 +0100)]
New API: file-architecture

This change simply converts the existing Perl-only function
file_architecture into a core API call.  The core API call is
written in C and available in all languages and from guestfish.

14 years agogenerator: No need to redefine safe_* macros.
Richard Jones [Tue, 17 Aug 2010 10:26:54 +0000 (11:26 +0100)]
generator: No need to redefine safe_* macros.

These are already defined in "guestfs-internal.h" which is
included in the .c file.

14 years agoAdd safe_strndup call.
Richard Jones [Tue, 17 Aug 2010 10:26:26 +0000 (11:26 +0100)]
Add safe_strndup call.

14 years agoSend trace output to stderr.
Matthew Booth [Tue, 17 Aug 2010 11:19:05 +0000 (12:19 +0100)]
Send trace output to stderr.

Trace output sent to stdout can be lost in the event of a crash due to
buffering.  This patch sends it to stderr instead.

14 years agoPython: Use new PyCapsule API where supported.
Richard Jones [Tue, 17 Aug 2010 09:31:39 +0000 (10:31 +0100)]
Python: Use new PyCapsule API where supported.

See:
http://lists.fedoraproject.org/pipermail/devel/2010-August/141064.html

14 years agogenerator: Fix typo in error message for RConstOptString.
Richard Jones [Sat, 31 Jul 2010 13:35:07 +0000 (14:35 +0100)]
generator: Fix typo in error message for RConstOptString.

14 years agoNew API: is-lv: check if a block device is a logical volume (RHBZ#619793)
Richard Jones [Fri, 30 Jul 2010 15:32:35 +0000 (16:32 +0100)]
New API: is-lv: check if a block device is a logical volume (RHBZ#619793)

This adds a new API, guestfs_is_lv (g, device), which returns true iff
the named device is an LVM2 logical volume.

A sample guestfish session:

><fs> lvs
/dev/vg_f13x64/lv_root
/dev/vg_f13x64/lv_swap
><fs> list-devices
/dev/vda
><fs> list-partitions
/dev/vda1
/dev/vda2
><fs> is-lv /dev/vg_f13x64/lv_root
true
><fs> is-lv /dev/vg_f13x64/lv_swap
true
><fs> is-lv /dev/vda
false
><fs> is-lv /dev/vda1
false
><fs> is-lv /dev/vda2
false

14 years agoRename internal functions.
Richard Jones [Wed, 28 Jul 2010 11:38:36 +0000 (12:38 +0100)]
Rename internal functions.

This is an update to commit 41f25ab3df5f306ac717fa7a6efd58328d30c1ae.

Internal functions should be named guestfs___* (3 underscores) to
avoid clashing with the implementation of actions (2 underscores).

14 years agoRearrange library code into separate files.
Richard Jones [Tue, 27 Jul 2010 12:01:39 +0000 (13:01 +0100)]
Rearrange library code into separate files.

We split the library code into these separate files:

 - guestfs.c: creating handles, closing handles, handle-related variables
 - actions.c: generated library-side stubs for each action
 - bindtests.c: generated code to test bindings
 - launch.c: launching the appliance
 - proto.c: the library side of the daemon communications protocol

This is just code movement.

14 years agoRename guestfs-{actions,bindtests}.c to {actions,bindtests}.c
Richard Jones [Tue, 27 Jul 2010 11:29:59 +0000 (12:29 +0100)]
Rename guestfs-{actions,bindtests}.c to {actions,bindtests}.c

Rename these two generated files, in preparation for splitting
up the main src/guestfs.c file.

14 years agoTODO: Implement inspector code in C.
Richard Jones [Tue, 27 Jul 2010 10:11:42 +0000 (11:11 +0100)]
TODO: Implement inspector code in C.

14 years agoTODO: Implement recursive upload/download in guestfish.
Richard Jones [Tue, 27 Jul 2010 10:11:09 +0000 (11:11 +0100)]
TODO: Implement recursive upload/download in guestfish.

14 years agoTODO: Add link to discussion of progress bars.
Richard Jones [Tue, 27 Jul 2010 10:10:32 +0000 (11:10 +0100)]
TODO: Add link to discussion of progress bars.

14 years agoVersion 1.5.2. 1.5.2
Richard Jones [Thu, 22 Jul 2010 15:53:54 +0000 (16:53 +0100)]
Version 1.5.2.

14 years agoregressions: Don't print misleading 'Expect error ...' lines.
Richard Jones [Thu, 22 Jul 2010 15:49:06 +0000 (16:49 +0100)]
regressions: Don't print misleading 'Expect error ...' lines.

Some tests in the regressions directory deliberately print
error messages.  As long as they still PASS, this is OK.

However these tests also printed some misleading messages
about what error to expect.  Since error messages were slightly
different across distros, these messages were not accurate.

Therefore remove these messages, and replace with a general
message before all tests telling users not to worry about
errors from the tests as long as the tests don't fail.

14 years agoNew APIs: Support for creating LUKS and managing keys.
Richard Jones [Thu, 22 Jul 2010 10:00:59 +0000 (11:00 +0100)]
New APIs: Support for creating LUKS and managing keys.

This commit adds four APIs for creating new LUKS devices
and key management.  These are:

  luks_format         Format a LUKS device with the default cipher.
  luks_format_cipher  Format with a chosen cipher.
  luks_add_key        Add another key to an existing device.
  luks_kill_slot      Delete a key from an existing device.

This enables all the significant functionality of the
cryptsetup luks* commands.

Note that you can obtain the UUID of a LUKS device already
by using vfs-uuid.

This also includes a regression test covering all the LUKS
functions.

14 years agoMove variable initialization close to variable use.
Richard Jones [Thu, 22 Jul 2010 15:51:05 +0000 (16:51 +0100)]
Move variable initialization close to variable use.

14 years agoRevert "add_drive_ro adds readonly=on option if available." (RHBZ#617200).
Richard Jones [Thu, 22 Jul 2010 13:39:36 +0000 (14:39 +0100)]
Revert "add_drive_ro adds readonly=on option if available." (RHBZ#617200).

Adding the readonly=on option is not so clever.  This causes
qemu to present the disk as read-only to the guest.  (The
expected behaviour of snapshots=on,readonly=on was that it
would open the disk O_RDONLY but present a writable disk to
the guest).

Since the guest sees a read-only disk, we are unable to do any
recovery if a filesystem on the disk is inconsistent.  This basically
prevents most accesses to live disk images.

What we really want is a qemu option which presents a writable
disk to the guest, but only opens the disk on the host side with
O_RDONLY, to alleviate the udev bug RHBZ#571714.

This reverts commit 676462684e05dd8341dd695762dd99a87d8ec022.

14 years agogenerator: Make documentation inside guestfish match man page.
Richard Jones [Thu, 22 Jul 2010 09:59:43 +0000 (10:59 +0100)]
generator: Make documentation inside guestfish match man page.

14 years agoVersion 1.5.1. 1.5.1
Richard Jones [Wed, 21 Jul 2010 20:40:21 +0000 (21:40 +0100)]
Version 1.5.1.

14 years agoNew APIs: Support for opening LUKS-encrypted disks.
Richard Jones [Wed, 21 Jul 2010 18:50:06 +0000 (19:50 +0100)]
New APIs: Support for opening LUKS-encrypted disks.

This adds support for opening LUKS-encrypted disks, via
three new APIs:

  luks_open:    Create a mapping for an encrypted disk.
  luks_open_ro: Same, but read-only mapping.
  luks_close:   Close a mapping.

A typical guestfish session using this functionality looks
like this:

  $ guestfish --ro -a encrypted.img
  ><fs> run
  ><fs> list-devices
  /dev/vda
  ><fs> list-partitions
  /dev/vda1
  /dev/vda2
  ><fs> vfs-type /dev/vda2
  crypto_LUKS
  ><fs> luks-open /dev/vda2 luksdev
  Enter key or passphrase ("key"):
  ><fs> vgscan
  ><fs> vg-activate-all true
  ><fs> pvs
  /dev/dm-0
  ><fs> vgs
  vg_f13x64encrypted
  ><fs> lvs
  /dev/vg_f13x64encrypted/lv_root
  /dev/vg_f13x64encrypted/lv_swap
  ><fs> mount /dev/vg_f13x64encrypted/lv_root /
  ><fs> ll /
  total 132
  dr-xr-xr-x.  24 root root  4096 Jul 21 12:01 .
  dr-xr-xr-x   20 root root     0 Jul 21 20:06 ..
  drwx------.   3 root root  4096 Jul 21 11:59 .dbus
  drwx------.   2 root root  4096 Jul 21 12:00 .pulse
  -rw-------.   1 root root   256 Jul 21 12:00 .pulse-cookie
  dr-xr-xr-x.   2 root root  4096 May 13 03:03 bin

NOT included in this patch:

 - An easier way to use this from guestfish.
 - Ability to create LUKS devices.
 - Ability to change LUKS keys on existing devices.
 - Direct access to the /dev/mapper device (eg. if it contains
   anything apart from VGs).

14 years agogenerator: Add 'Key' parameter type.
Richard Jones [Wed, 21 Jul 2010 11:52:51 +0000 (12:52 +0100)]
generator: Add 'Key' parameter type.

Add a 'Key' parameter type, used for passing sensitive key material
into libguestfs.

Eventually the plan is to mlock() key material into memory.  However
this is very difficult to achieve because the encoded XDR strings
end up in many places.  Therefore users should note that key material
passed to libguestfs might end up in swap.

The only difference between 'Key' and 'String' currently is that
guestfish requests the key from /dev/tty with echoing turned off.

14 years agogenerator: Remove unnecessary parameter.
Richard Jones [Wed, 21 Jul 2010 11:52:10 +0000 (12:52 +0100)]
generator: Remove unnecessary parameter.

The 'name' parameter is not used on the right hand side of the
match, so it can be removed.

14 years agodf: Minimize the number of times we launch the libguestfs appliance.
Richard Jones [Fri, 16 Jul 2010 17:11:56 +0000 (18:11 +0100)]
df: Minimize the number of times we launch the libguestfs appliance.

This commit greatly improves the performance of the 'virt-df'
command by batching as many disks as possible onto a single appliance.
In many situations this means the appliance is launched only once,
versus one launch per domain as before.

However doing it this way is a lot more complex:

(1) Because of limits in Linux and virtio-blk, we can only attach
26 disks maximum at a time to the appliance.

(2) We have to use LVM filters (lvm-set-filter) to confine LVM to
the disks of a single guest.

14 years agoNew APIs: lvm-set-filter and lvm-clear-filter.
Richard Jones [Fri, 16 Jul 2010 12:01:21 +0000 (13:01 +0100)]
New APIs: lvm-set-filter and lvm-clear-filter.

These APIs allow you to change the device filter, the list of
block devices that LVM "sees".  Either you can set it to a fixed
list of devices / partitions, or you can clear it so that LVM sees
everything.

14 years agoUse an unsigned type (size_t) for all loop iterators.
Richard Jones [Fri, 16 Jul 2010 11:58:54 +0000 (12:58 +0100)]
Use an unsigned type (size_t) for all loop iterators.

This resolves a warning from gcc 4.5:
  assuming signed overflow does not occur when simplifying
    conditional to constant

This page explains the issues in some detail:
  http://www.airs.com/blog/archives/120

14 years agogenerator: Don't hard-code name in DeviceList check.
Richard Jones [Fri, 16 Jul 2010 11:57:24 +0000 (12:57 +0100)]
generator: Don't hard-code name in DeviceList check.

Only one function currently uses DeviceList.  The generated code
unfortunately hard-coded the argument name from that function.

14 years agobuild: Don't warn about 'long long'.
Richard Jones [Fri, 16 Jul 2010 11:55:17 +0000 (12:55 +0100)]
build: Don't warn about 'long long'.

Various language bindings simply need this, so we have to allow
it even though it's a GCC extension.

14 years agodoc: Add guestfish 'lvcreate 1M' gotcha.
Richard Jones [Fri, 16 Jul 2010 14:17:01 +0000 (15:17 +0100)]
doc: Add guestfish 'lvcreate 1M' gotcha.

14 years agotar: Remove redundant use statement.
Richard Jones [Sun, 11 Jul 2010 22:11:45 +0000 (23:11 +0100)]
tar: Remove redundant use statement.

14 years agoedit: Clean up temporary files.
Richard Jones [Sun, 11 Jul 2010 22:11:08 +0000 (23:11 +0100)]
edit: Clean up temporary files.

Note to self: The 'tempfile' function does *not* default to
removing files with the program exits!

14 years agoedit: Add -b (backup) option and make uploading more robust.
Richard Jones [Sun, 11 Jul 2010 22:09:07 +0000 (23:09 +0100)]
edit: Add -b (backup) option and make uploading more robust.

14 years agoedit: Add -e 'expr' option to non-interactively apply expression to the file.
Richard Jones [Sun, 11 Jul 2010 15:46:15 +0000 (16:46 +0100)]
edit: Add -e 'expr' option to non-interactively apply expression to the file.

(Suggested by Justin Clift).

14 years agoPrepare for new development branch, starting at 1.5.0.
Richard Jones [Thu, 8 Jul 2010 10:54:50 +0000 (11:54 +0100)]
Prepare for new development branch, starting at 1.5.0.

Add BUGS and RELEASE-NOTES to EXTRA_DIST.

Also update the RELEASE-NOTES file.

14 years agoMake tmp directory world readable (RHBZ#610880).
Richard Jones [Fri, 2 Jul 2010 16:52:51 +0000 (17:52 +0100)]
Make tmp directory world readable (RHBZ#610880).

If you have a restrictive umask (0077 for example) then
files in the tmp directory would be created with 0600
permissions.  Example:

drwx------.  2 rjones rjones     4096 Jul  2 17:52 .
drwxrwxrwt. 57 root   root     102400 Jul  2 17:52 ..
-rw-------.  1 rjones rjones 86328832 Jul  2 17:52 initrd
lrwxrwxrwx.  1 rjones rjones       46 Jul  2 17:52 kernel -> /boot/vmlinuz-2.6.33-0.40.rc7.git0.fc13.x86_64

This in itself is not a problem.  However in virt-v2v we also
change UID:GID and the result is that qemu is unable to read
the initrd file:

qemu: could not load initial ram disk '/tmp/libguestfs2ssynP/initrd'

With this patch we make the tmp directory and the files
world readable.  After the patch:

$ ls -la /tmp/libguestfsJFVzPg/
total 116192
drwxr-xr-x.  2 rjones rjones      4096 Jul  2 18:03 .
drwxrwxrwt. 56 root   root      102400 Jul  2 18:03 ..
-rw-r--r--.  1 rjones rjones 118869504 Jul  2 18:03 initrd
lrwxrwxrwx.  1 rjones rjones        46 Jul  2 18:03 kernel -> /boot/vmlinuz-2.6.33-0.40.rc7.git0.fc13.x86_64

14 years agofish: Don't fail if -m and --listen flags are both given (RHBZ#612178).
Richard Jones [Wed, 7 Jul 2010 14:01:38 +0000 (15:01 +0100)]
fish: Don't fail if -m and --listen flags are both given (RHBZ#612178).

Testing this against a Fedora disk image:

$ ./fish/guestfish --ro -a F13.img -m /dev/sda1 --listen
export GUESTFISH_PID=6033
$ ./fish/guestfish --remote=6033 -- ping-daemon
$ ./fish/guestfish --remote=6033 -- ping-daemon
$ ./fish/guestfish --remote=6033 -- exit

Without this fix the first remote command would fail because
qemu would have already been killed.

14 years agotodo: Add comment about progress of long-running operations.
Richard Jones [Fri, 2 Jul 2010 19:12:41 +0000 (20:12 +0100)]
todo: Add comment about progress of long-running operations.

14 years agoinspector: Improve error message when YAML::Any library is not installed.
Richard Jones [Fri, 2 Jul 2010 09:50:38 +0000 (10:50 +0100)]
inspector: Improve error message when YAML::Any library is not installed.

14 years agoExplicitly depend on e2fsprogs.
Richard Jones [Mon, 28 Jun 2010 12:51:42 +0000 (13:51 +0100)]
Explicitly depend on e2fsprogs.

See: http://lists.fedoraproject.org/pipermail/devel/2010-June/137953.html

14 years agoFix gfs2 support by adding required kernel modules.
Richard Jones [Mon, 28 Jun 2010 08:13:36 +0000 (09:13 +0100)]
Fix gfs2 support by adding required kernel modules.

14 years agoVersion 1.3.21. 1.3.21
Richard Jones [Wed, 16 Jun 2010 15:12:52 +0000 (16:12 +0100)]
Version 1.3.21.

14 years agoocaml: Fix thread safety of strings in bindings (RHBZ#604691).
Richard Jones [Wed, 16 Jun 2010 14:25:45 +0000 (15:25 +0100)]
ocaml: Fix thread safety of strings in bindings (RHBZ#604691).

There's a thread safety issue with the current OCaml bindings which
is well explained in the bug report:

https://bugzilla.redhat.com/show_bug.cgi?id=604691

This commit fixes the safety issue by copying strings temporarily
before releasing the thread lock.  Updated code looks like this:

  char *filename = guestfs_safe_strdup (g, String_val (filenamev));
  int r;

  caml_enter_blocking_section ();
  r = guestfs_add_drive_ro (g, filename);
  caml_leave_blocking_section ();
  free (filename);
  if (r == -1)
    ocaml_guestfs_raise_error (g, "add_drive_ro");

Also included is a regression test.

14 years agoTODO: Add a note about impl of list-filesystems.
Richard Jones [Wed, 16 Jun 2010 13:29:39 +0000 (14:29 +0100)]
TODO: Add a note about impl of list-filesystems.

14 years agotodo: More ideas for TODO list.
Richard Jones [Tue, 15 Jun 2010 10:15:30 +0000 (11:15 +0100)]
todo: More ideas for TODO list.

14 years agoUpdate Spanish translations (RHBZ#603870).
Richard Jones [Tue, 15 Jun 2010 10:15:06 +0000 (11:15 +0100)]
Update Spanish translations (RHBZ#603870).

14 years agoperl: Check all images are defined in first param of open_guest.
Richard Jones [Fri, 11 Jun 2010 09:40:48 +0000 (10:40 +0100)]
perl: Check all images are defined in first param of open_guest.

14 years agoperl: Add explicit close() method (RHBZ#602592).
Richard Jones [Thu, 10 Jun 2010 14:25:43 +0000 (15:25 +0100)]
perl: Add explicit close() method (RHBZ#602592).

This add an optional explicit $g->close method which may be
used to force the handle to be closed immediately.  Note the
provisos about this method in the manual page entry.  Callers
should *not* normally use this method.

The implementation of the handle also changes.  Before, the
handle was a blessed reference to an integer (the integer
being the pointer to the C guestfs_h handle).  Now we change
this to a hashref containing currently the following field:

  _g => pointer to C guestfs_h handle (as an integer)

If this field is not present, it means that the handle has been
explicitly closed.  This avoids double-freeing the handle.

The user may add their own fields to this hash in order to store
per-handle data.  However any fields whose names begin with
an underscore are reserved for use by the Perl bindings.

This commit also adds a regression test.

This commit also changes the existing warning when you call
a method without a Sys::Guestfs handle as the first parameter,
into an error.  This is because such cases are always errors.

14 years agoAdd error callback (RHBZ#602599).
Richard Jones [Thu, 10 Jun 2010 11:38:57 +0000 (12:38 +0100)]
Add error callback (RHBZ#602599).

Read the note in the man page before using this feature.

14 years agoFix typo in documentation of guestfs_set_launch_done_callback.
Richard Jones [Thu, 10 Jun 2010 11:26:06 +0000 (12:26 +0100)]
Fix typo in documentation of guestfs_set_launch_done_callback.

14 years agoVersion 1.3.20. 1.3.20
Richard Jones [Tue, 8 Jun 2010 17:17:37 +0000 (18:17 +0100)]
Version 1.3.20.

14 years agoRevert "perl: Rerun configure if MAX_PROC_NR changes."
Richard Jones [Tue, 8 Jun 2010 17:17:46 +0000 (18:17 +0100)]
Revert "perl: Rerun configure if MAX_PROC_NR changes."

This reverts commit f8ee7869f4836427109959cf20e299a31fa86eaf.

14 years agoTODO: Freeze/thaw filesystems.
Richard Jones [Tue, 8 Jun 2010 17:12:32 +0000 (18:12 +0100)]
TODO: Freeze/thaw filesystems.

14 years agoTODO: Need to add regression test for virt-inspector.
Richard Jones [Tue, 8 Jun 2010 17:11:16 +0000 (18:11 +0100)]
TODO: Need to add regression test for virt-inspector.

14 years agoTODO: 'file' command should be fixed.
Richard Jones [Tue, 8 Jun 2010 17:04:17 +0000 (18:04 +0100)]
TODO: 'file' command should be fixed.

14 years agovirt-df: Disallow -h and --csv options together (RHBZ#600977).
Richard Jones [Tue, 8 Jun 2010 15:44:18 +0000 (16:44 +0100)]
virt-df: Disallow -h and --csv options together (RHBZ#600977).

Before this commit, if you used the -h and --csv options together
you would get these warnings from virt-df:

$ virt-df -h --csv Guest
Virtual Machine,Filesystem,Size,Used,Available,Use%
Argument "13.5G" isn't numeric in printf at /home/rjones/d/libguestfs/tools/virt-df line 298.
Argument "4.7G" isn't numeric in printf at /home/rjones/d/libguestfs/tools/virt-df line 298.
Argument "8.1G" isn't numeric in printf at /home/rjones/d/libguestfs/tools/virt-df line 298.
"/dev/vg_trick/RHEL55x64","/dev/VolGroup00/LogVol00",13,4,8,34.8%
Argument "98.7M" isn't numeric in printf at /home/rjones/d/libguestfs/tools/virt-df line 298.
Argument "18.8M" isn't numeric in printf at /home/rjones/d/libguestfs/tools/virt-df line 298.
Argument "74.9M" isn't numeric in printf at /home/rjones/d/libguestfs/tools/virt-df line 298.
"/dev/vg_trick/RHEL55x64","/dev/vda1",98,18,74,19.0%

We could fix this so that the human-readable numbers get written
into the CSV file.  However would probably be wrong for most uses
of the CSV format (databases and spreadsheets) since they would not
be able to interpret these human-readable numbers, or worse could
misinterpret, eg. thinking that "1M" and "1G" are both 1.

Therefore this commit disallows this combination of options.

14 years agofile: Fix file command on /dev/VG/LV paths (RHBZ#582484).
Richard Jones [Tue, 8 Jun 2010 15:04:01 +0000 (16:04 +0100)]
file: Fix file command on /dev/VG/LV paths (RHBZ#582484).

Previous commit 4df593496e116dfb635731c058b7627e81fc179c broke the
"file" command on logical volume paths, since these are symbolic
links.  We *should* follow these (only).

This inadvertantly broke virt-inspector too, which indicates that
we need more regression testing in this area.  Since carrying whole
Fedora images around could make the distribution even larger than
now, I'm not sure at the moment how to do this.

Thanks to Matt Booth for diagnosing this bug.

14 years agoUse the noop scheduler inside the appliance.
Richard Jones [Mon, 7 Jun 2010 14:29:31 +0000 (15:29 +0100)]
Use the noop scheduler inside the appliance.

In my limited tests, this seems to make a small but noticable
difference, improving the performance of some straightforward
read operations by a little over 10%.

For more information see:
http://kbase.redhat.com/faq/docs/DOC-5428

14 years agoAdd release notes.
Richard Jones [Fri, 4 Jun 2010 17:44:49 +0000 (18:44 +0100)]
Add release notes.

To generate the "Bugs fixed" list, run the bugs-in-changelog script
like this:

  ./bugs-in-changelog 1.0.89..

14 years agoVersion 1.3.19. 1.3.19
Richard Jones [Fri, 4 Jun 2010 15:38:55 +0000 (16:38 +0100)]
Version 1.3.19.

Update BUGS and PO files.

14 years agofile: Restrict to regular files (RHBZ#582484).
Richard Jones [Fri, 4 Jun 2010 10:45:06 +0000 (11:45 +0100)]
file: Restrict to regular files (RHBZ#582484).

The file call can hang if called on char devices (because we are
using the file -s option).

This is hard to solve cleanly without adding another file API.

However this restricts file to regular files, unless called explicitly
with a /dev/ path.  For non-regular files, it will now return a
string like "directory".

There is a small semantic change for symbolic links.  Previously
it would not have worked at all on absolute links (or rather, the
results would have been undefined).  It would have treated relative
symlinks to regular files as the regular file itself.  Now it will
return the string "symbolic link" in both cases.

This commit also makes the API safe when called on untrusted
filesystems.  Previously a filesystem might have been set up so
that (eg) /etc/redhat-release was a char device, which would have
caused virt-inspector and virt-v2v to hang.  Now it will not hang.

14 years agotouch: Restrict touch to regular files only (RHBZ#582484).
Richard Jones [Fri, 4 Jun 2010 10:55:54 +0000 (11:55 +0100)]
touch: Restrict touch to regular files only (RHBZ#582484).

14 years agodaemon: Rearrange code in 'file' command.
Richard Jones [Fri, 4 Jun 2010 10:23:01 +0000 (11:23 +0100)]
daemon: Rearrange code in 'file' command.

  path = path to access file (/sysroot/.. or /dev/..)
  display_path = original path, saved so we can display it
  buf = optional buffer which is freed along return codepaths

There should be no change to the semantics of the code.

14 years agognulib: Ignore asm-underscore.m4 in the correct place.
Richard Jones [Fri, 4 Jun 2010 10:21:58 +0000 (11:21 +0100)]
gnulib: Ignore asm-underscore.m4 in the correct place.

14 years agoUpdate to latest gnulib.
Richard Jones [Fri, 4 Jun 2010 08:46:34 +0000 (09:46 +0100)]
Update to latest gnulib.

14 years agomkfs-b: Map block size to cluster size for VFAT and NTFS partitions (RHBZ#599464).
Richard Jones [Thu, 3 Jun 2010 13:03:08 +0000 (14:03 +0100)]
mkfs-b: Map block size to cluster size for VFAT and NTFS partitions (RHBZ#599464).

This also adds a regression test for VFAT and (conditionally)
NTFS filesystems.

14 years agomkfs-b: Check that blocksize parameter is > 0 and a power of 2.
Richard Jones [Thu, 3 Jun 2010 13:01:18 +0000 (14:01 +0100)]
mkfs-b: Check that blocksize parameter is > 0 and a power of 2.

14 years agogenerator: Allow individual tests to depend on daemon features.
Richard Jones [Thu, 3 Jun 2010 13:31:58 +0000 (14:31 +0100)]
generator: Allow individual tests to depend on daemon features.

Using IfAvailable "featurename" we allow individual tests to
only run if the feature is available in the daemon.

This will allow us to extend testing to a lot more optional
features such as NTFS.

14 years agotests: Factor out common code into 'is_available' function.
Richard Jones [Thu, 3 Jun 2010 13:30:36 +0000 (14:30 +0100)]
tests: Factor out common code into 'is_available' function.

This commit is just code motion.

14 years agogrub-install: Enable grub-install tests and create explicit device.map file.
Richard Jones [Thu, 3 Jun 2010 10:49:38 +0000 (11:49 +0100)]
grub-install: Enable grub-install tests and create explicit device.map file.

14 years agogrub-install: In docs suggest manually creating device.map (RHBZ#484986).
Richard Jones [Thu, 3 Jun 2010 10:48:41 +0000 (11:48 +0100)]
grub-install: In docs suggest manually creating device.map (RHBZ#484986).

14 years agoVersion 1.3.18. 1.3.18
Richard Jones [Wed, 2 Jun 2010 17:47:30 +0000 (18:47 +0100)]
Version 1.3.18.

Update BUGS and PO files.

14 years agoRHEL 6: sr_mod.ko is needed for RHEL 6 to see CD-ROM devices (RHBZ#598807).
Richard Jones [Wed, 2 Jun 2010 16:12:59 +0000 (17:12 +0100)]
RHEL 6: sr_mod.ko is needed for RHEL 6 to see CD-ROM devices (RHBZ#598807).

14 years agoparted: Check partition number >= 1 in several calls.
Richard Jones [Wed, 2 Jun 2010 14:35:58 +0000 (15:35 +0100)]
parted: Check partition number >= 1 in several calls.

14 years agodaemon: Parse output of old parted which didn't support -m option (RHBZ#598309).
Richard Jones [Wed, 2 Jun 2010 11:32:33 +0000 (12:32 +0100)]
daemon: Parse output of old parted which didn't support -m option (RHBZ#598309).

This fixes the following commands when run with RHEL 5-era parted:

  get-bootable
  get-parttype
  part-list

14 years agodaemon: count_strings function returns size_t
Richard Jones [Wed, 2 Jun 2010 11:31:40 +0000 (12:31 +0100)]
daemon: count_strings function returns size_t

14 years agobase64-in: Ignore garbage characters in input.
Richard Jones [Wed, 2 Jun 2010 14:10:38 +0000 (15:10 +0100)]
base64-in: Ignore garbage characters in input.

On RHEL 5 you have to specify the -i option to get the
external 'base64' command to ignore \n characters.  (The
Fedora version seems to ignore these characters anyway).

Add this option so the tests can pass on RHEL 5.

14 years agoresize2fs: Document this command also works with ext4 (thanks Yufang Zhang).
Richard Jones [Wed, 2 Jun 2010 12:27:19 +0000 (13:27 +0100)]
resize2fs: Document this command also works with ext4 (thanks Yufang Zhang).

14 years agofish: help command return error for non-existent commands (RHBZ#597145).
Richard Jones [Tue, 1 Jun 2010 15:27:33 +0000 (16:27 +0100)]
fish: help command return error for non-existent commands (RHBZ#597145).

With this change, the exit status indicates error for non-existent
commands.

$ guestfish -h foo
foo: command not known, use -h to list all commands
$ echo $?
1
$ guestfish help foo
foo: command not known, use -h to list all commands
$ echo $?
1

14 years agodaemon: write-file: Check range of size parameter (RHBZ#597135).
Richard Jones [Tue, 1 Jun 2010 15:18:53 +0000 (16:18 +0100)]
daemon: write-file: Check range of size parameter (RHBZ#597135).

This also adds a regression test.