summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* ruby: Add Guestfs::Guestfs.new() method.Richard Jones2010-09-021-0/+4
| | | | | | This is a more standard way to create objects in Ruby. The old way was to call the module function Guestfs::create() which still works.
* perl: Document handle is a hashref.Richard Jones2010-09-021-0/+18
| | | | For details see commit eb566f7dc7974b42ac65729a2e5e5bcee329a0a9.
* perl: Add documentation about testing availability of methods and features.Richard Jones2010-09-021-0/+31
|
* Consistent use of 'void *opaque' to refer to opaque pointer in C API.Richard Jones2010-09-012-11/+11
| | | | | | We inconsistently used 'void *data' or 'void *opaque' all over to refer to the same thing. Use 'void *opaque' in all places in the published API and documentation.
* perl: bindings to progress callback.Richard Jones2010-09-011-3/+77
|
* ocaml: bindings to progress callback.Richard Jones2010-09-011-0/+29
|
* Implement private data area.Richard Jones2010-09-015-0/+128
| | | | | | | | | The private data area is a hash table which is associated with libguestfs handles, that C callers may use to store arbitrary data for the lifetime of the handle. Later the OCaml bindings will use this in order to implement callbacks.
* Add progress messages to download command.Richard Jones2010-09-011-1/+1
|
* Add progress messages to zero-device command.Richard Jones2010-09-011-1/+1
|
* Add progress messages to zero command.Richard Jones2010-09-011-1/+1
|
* Add progress messages to fill-pattern command.Richard Jones2010-09-011-1/+1
|
* Add progress messages to fill command.Richard Jones2010-09-011-1/+1
|
* Add progress messages to copy-size command.Richard Jones2010-08-311-1/+10
|
* Implement progress messages in the daemon and library.Richard Jones2010-08-316-5/+128
| | | | | | | | | | | | This implements progress notification messages in the daemon, and adds a callback in the library to handle them. No calls are changed so far, so in fact no progress messages can be generated by this commit. For more details, see: https://www.redhat.com/archives/libguestfs/2010-July/msg00003.html https://www.redhat.com/archives/libguestfs/2010-July/msg00024.html
* Rename global 'xdr_str'.Richard Jones2010-08-251-5/+5
| | | | | | | 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.
* Add -nodefconfig command line option to qemu.Daniel Berrange2010-08-241-0/+3
| | | | | Without this option, qemu will read some defaults from /etc/qemu/ configuration files.
* New APIs: set-network and get-network to enable network support.Richard Jones2010-08-245-0/+46
| | | | guestfs_set_network (g, true) enables network support in the appliance.
* Change protocol to send Linux errno from daemon to library.Richard Jones2010-08-242-1/+5
| | | | | | | 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.
* Raise error message max size to 64K.Richard Jones2010-08-242-10/+5
| | | | | | | | | 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.
* Use virtio-serial, remove other vmchannel methods.Richard Jones2010-08-242-275/+56
| | | | | | | | | | | | | 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)
* Change to using ext2-based, cached supermin appliance.Richard Jones2010-08-235-190/+493
| | | | | | | | | | | | 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.
* Make print_timestamped_message into a cross-module function.Richard Jones2010-08-232-6/+6
| | | | This is just code movement.
* Factor out code for locating the temporary directory.Richard Jones2010-08-232-11/+22
| | | | This is just code movement.
* Whitespace change: Add blank line between structures and functions.Richard Jones2010-08-211-0/+1
|
* Remove old ocaml-inspector code.Richard Jones2010-08-171-490/+0
| | | | | Not used by anyone, didn't work well, and replaced now by the C inspection APIs.
* New APIs for guest inspection.Richard Jones2010-08-176-5/+1360
| | | | | | | | | | | | | | | | | | | | | 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.
* New APIs: findfs-label and findfs-uuidRichard Jones2010-08-172-3/+27
| | | | | | | | | | | | | | | | | | | | | | | | | 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'
* New API: file-architectureRichard Jones2010-08-173-1/+410
| | | | | | 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.
* generator: No need to redefine safe_* macros.Richard Jones2010-08-171-7/+0
| | | | | These are already defined in "guestfs-internal.h" which is included in the .c file.
* Add safe_strndup call.Richard Jones2010-08-172-0/+10
|
* Send trace output to stderr.Matthew Booth2010-08-171-14/+14
| | | | | Trace output sent to stdout can be lost in the event of a crash due to buffering. This patch sends it to stderr instead.
* Python: Use new PyCapsule API where supported.Richard Jones2010-08-171-0/+13
| | | | | See: http://lists.fedoraproject.org/pipermail/devel/2010-August/141064.html
* generator: Fix typo in error message for RConstOptString.Richard Jones2010-07-311-1/+1
|
* New API: is-lv: check if a block device is a logical volume (RHBZ#619793)Richard Jones2010-07-302-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Rename internal functions.Richard Jones2010-07-283-12/+12
| | | | | | | 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).
* Rearrange library code into separate files.Richard Jones2010-07-275-2211/+2354
| | | | | | | | | | | | 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.
* Rename guestfs-{actions,bindtests}.c to {actions,bindtests}.cRichard Jones2010-07-273-7/+7
| | | | | Rename these two generated files, in preparation for splitting up the main src/guestfs.c file.
* New APIs: Support for creating LUKS and managing keys.Richard Jones2010-07-222-1/+38
| | | | | | | | | | | | | | | | | | | 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.
* Move variable initialization close to variable use.Richard Jones2010-07-221-3/+3
|
* Revert "add_drive_ro adds readonly=on option if available." (RHBZ#617200).Richard Jones2010-07-222-21/+5
| | | | | | | | | | | | | | | | | | 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.
* generator: Make documentation inside guestfish match man page.Richard Jones2010-07-221-2/+9
|
* New APIs: Support for opening LUKS-encrypted disks.Richard Jones2010-07-213-1/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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).
* generator: Add 'Key' parameter type.Richard Jones2010-07-212-75/+142
| | | | | | | | | | | | | 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.
* generator: Remove unnecessary parameter.Richard Jones2010-07-211-4/+4
| | | | | The 'name' parameter is not used on the right hand side of the match, so it can be removed.
* New APIs: lvm-set-filter and lvm-clear-filter.Richard Jones2010-07-162-1/+42
| | | | | | | 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.
* Use an unsigned type (size_t) for all loop iterators.Richard Jones2010-07-161-22/+27
| | | | | | | | | 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
* generator: Don't hard-code name in DeviceList check.Richard Jones2010-07-161-3/+6
| | | | | Only one function currently uses DeviceList. The generated code unfortunately hard-coded the argument name from that function.
* doc: Add guestfish 'lvcreate 1M' gotcha.Richard Jones2010-07-161-0/+21
|
* Make tmp directory world readable (RHBZ#610880).Richard Jones2010-07-071-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* ocaml: Fix thread safety of strings in bindings (RHBZ#604691).Richard Jones2010-06-161-10/+15
| | | | | | | | | | | | | | | | | | | | | | 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.