| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
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.
|
|
|
|
| |
For details see commit eb566f7dc7974b42ac65729a2e5e5bcee329a0a9.
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Without this option, qemu will read some defaults from /etc/qemu/
configuration files.
|
|
|
|
| |
guestfs_set_network (g, true) enables network support in the appliance.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
This is just code movement.
|
|
|
|
| |
This is just code movement.
|
| |
|
|
|
|
|
| |
Not used by anyone, didn't work well, and replaced now by the
C inspection APIs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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'
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
These are already defined in "guestfs-internal.h" which is
included in the .c file.
|
| |
|
|
|
|
|
| |
Trace output sent to stdout can be lost in the event of a crash due to
buffering. This patch sends it to stderr instead.
|
|
|
|
|
| |
See:
http://lists.fedoraproject.org/pipermail/devel/2010-August/141064.html
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
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).
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 these two generated files, in preparation for splitting
up the main src/guestfs.c file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
The 'name' parameter is not used on the right hand side of the
match, so it can be removed.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
Only one function currently uses DeviceList. The generated code
unfortunately hard-coded the argument name from that function.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|