summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* add_drive_ro adds readonly=on option if available.Richard Jones2010-03-162-5/+21
| | | | | | | | | | | | | | Change the add_drive_ro call so it adds the readonly=on option if qemu supports that. This just means that qemu will not try to open the drive with O_RDWR, and should not otherwise change the behaviour of qemu or libguestfs. (In particular, writes to the read-only drive are still permitted, and are just discarded when the handle is closed). However it should alleviate RHBZ#571714 where udev was deciding to incorrectly relabel a device because we had opened the device for writing (even though we didn't actually write to it).
* Allow qemu_supports to run earlier.Richard Jones2010-03-162-10/+27
| | | | | | | Reimplement qemu_supports() internal function. Allow it to run before launch so we can test qemu features. Document that you should run guestfs_set_qemu as early as possible to make sure these tests are reliable.
* guestfs.h: More adjustment to comments in the header file.Richard Jones2010-03-161-10/+14
|
* guestfs.h: Move some internal functions to the internal header.Richard Jones2010-03-162-15/+16
| | | | | | Functions like guestfs__send were never exported through the public API (libguestfs.syms prevented that). However they appeared in the public header. Move them to the internal header.
* Rearrangement and comment changes in <guestfs.h> header file.Richard Jones2010-03-161-10/+18
| | | | There should be no substantive change.
* Tab to space (whitespace fixes only).Richard Jones2010-03-121-82/+82
|
* Docs: Change exit(1) -> exit(EXIT_FAILURE)Richard Jones2010-03-121-1/+1
|
* Rewrite libguestfs-supermin-helper in C.Richard Jones2010-03-122-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libguestfs-supermin-helper was previously a shell script. Although we had steadily optimized it, there were a number of intractable hot spots: (1) cpio still reads input files in 512 byte chunks; this is *very* pessimal behaviour, particularly when SELinux is enabled. (2) the hostfiles globbing was done very inefficiently by the shell, with the shell rereading the same directory over and over again. This is a rewrite of this shell script in C. It is approximately 3 times faster without SELinux, and has an even greater speed difference with SELinux. The main features are: (a) It never frees memory, making it simpler. The program is designed to run and exit in sub-second times, so this is acceptable. (b) It caches directory reads, making the globbing of host files much faster (measured this as ~ 4 x speed up). (c) It doesn't use external cpio, but instead contains code to write newc format cpio files, which is all that the kernel can read. Unlike cpio, this code uses large buffers for reads and writes. (d) Ignores missing or unreadable hostfiles, whereas cpio gave a warning. (e) Checks all return values from system calls. (f) With --verbose flag, it will print messages timing itself. This passes all tests. Updated with feedback from Jim Meyering.
* guestfish: Use xstrtoll to parse Int params (RHBZ#569757 RHBZ#567567).Richard Jones2010-03-121-1/+1
| | | | | | Change guestfish so it uses xstrtoll to parse Int (31 bit) parameters. This fixes two bugs on 32 bit platforms which failed when long = 32 bits. long long = 64 bits on both.
* Spin off hivex as a separate upstream project.Richard Jones2010-02-221-4/+4
| | | | | | | | | | | | | | This commit makes the semi-independent hivex library into a separate upstream project. The git repo for hivex is now: http://git.annexia.org/?p=hivex.git;a=summary Downloads of hivex are available here: http://libguestfs.org/download/ All questions, patches, bugs etc should be sent to the libguestfs mailing list and bug tracker.
* Turn ProtocolLimitWarning into link to documentation section.Richard Jones2010-02-152-2/+24
|
* initrd-cat: Needs ProtocolLimitWarning.Richard Jones2010-02-151-1/+1
|
* Remove references to FTP, replace with FUSE.Richard Jones2010-02-152-7/+9
| | | | | | | We originally intended to implement an FTP server (and before than, an NFS server). But we didn't implement either. We did however implement a FUSE service (guestmount) which takes the place of both.
* Remove some unused variables.Richard Jones2010-02-151-2/+1
| | | | | | Since we have to compile with -Wno-unused-variables, we don't spot unused variables in code. I found these by compiling the code in Ubuntu.
* daemon: Don't need to prefix error messages with the command name.Richard Jones2010-02-121-1/+1
| | | | | | | | | | | | | | | | | | | | The RPC stubs already prefix the command name to error messages. The daemon doesn't have to do this. As a (small) benefit this also makes the daemon slightly smaller. Code in the daemon such as: if (argv[0] == NULL) { reply_with_error ("passed an empty list"); return NULL; } now results in error messages like this: ><fs> command "" libguestfs: error: command: passed an empty list (whereas previously you would have seen ..command: command:..)
* generator: Don't prefix error messages with command name.Richard Jones2010-02-121-11/+10
| | | | | | | The command name is already being added by the RPC stubs, so adding it again in Perl and C# just results in doubled error messages like: foo: foo: the error
* New APIs: add-drive{,-ro}-with-if allows you to set QEMU block emulation.Richard Jones2010-02-122-5/+44
| | | | | | | | | | | The default if=... comes from configure time (currently it defaults to if=virtio). This change allows you to set the QEMU block emulation. We don't think this will be used very often, but virt-v2v requires it in order to work around a subtle problem with running 'mkinitrd' in an appliance attached to a guest.
* generator: 'interface' is a reserved word in Java.Richard Jones2010-02-121-0/+1
|
* add_cdrom: Update docs for adding ISO images.Richard Jones2010-02-121-2/+16
| | | | See also RHBZ#563450 (NB: This commit does not fix the bug).
* Use mount-options instead of mount to avoid implicit -o sync.Richard Jones2010-02-102-17/+26
| | | | | | | | | | | | | | | guestfs_mount adds -o sync implicitly. This causes a very large performance problem for write-intensive programs (eg. virt-v2v). Document this as a "gotcha". Change the tests, guestfish, Sys::Guestfs::Lib, guestmount to use mount-options instead. (Note that this gotcha does not affect mount-ro). The source of the performance problem was first identified by Matthew Booth.
* Add -enable-kvm option to qemu command line.Richard Jones2010-02-091-0/+31
| | | | | | | | If the version of qemu being used supports -enable-kvm option, then check if /dev/kvm is openable and add this option. I have found this option makes no difference, although it is *supposed* to enable KVM (hardware virtualization) support.
* New API call: initrd-cat to list a file from an initrd.Richard Jones2010-02-092-1/+18
|
* Documentation: Added a section on libguestfs gotchas.Richard Jones2010-02-081-0/+55
|
* Implement 'vgrename' and 'lvrename' APIs.Richard Jones2010-01-282-1/+21
|
* supermin: Prevent multilib corruption (RHBZ#558593).Richard Jones2010-01-271-2/+4
| | | | | | | | | | | | | | | | | | | On some combination of installing, upgrading and removing the base libguestfs package on x86_64, multilib can corrupt libguestfs by leaving a copy of /usr/bin/libguestfs-supermin-helper around which references the wrong architecture (usually, contains links to the i386-based appliance, when the x86_64 appliance should be constructed). This commit changes libguestfs-supermin-helper so that the script is the same on all architectures. Instead, the library passes the differences to the script (eg. $host_cpu). Because the i386 and x86_64 libraries should be at different locations (/usr/lib vs /usr/lib64) this should prevent multilib from screwing things up. Related links: https://bugzilla.redhat.com/show_bug.cgi?id=558593 http://rwmj.wordpress.com/2009/11/16/please-someone-shoot-multilib/#content https://bugzilla.redhat.com/show_bug.cgi?id=235752
* guestfish: Use xstrtol to parse integers (RHBZ#557655).Richard Jones2010-01-251-4/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current code uses atoi to parse the generator Int type and atoll to parse the generator Int64 type. The problem with the ato* functions is that they don't cope with errors very well, and they cannot parse numbers that begin with 0.. or 0x.. for octal and hexadecimal respectively. This replaces the atoi call with a call to Gnulib xstrtol and the atoll call with a call to Gnulib xstrtoll. The generated code looks like this for all Int arguments: { strtol_error xerr; long r; xerr = xstrtol (argv[0], NULL, 0, &r, ""); if (xerr != LONGINT_OK) { fprintf (stderr, _("%s: %s: invalid integer parameter (%s returned %d)\n"), cmd, "memsize", "xstrtol", xerr); return -1; } /* The Int type in the generator is a signed 31 bit int. */ if (r < (-(2LL<<30)) || r > ((2LL<<30)-1)) { fprintf (stderr, _("%s: %s: integer out of range\n"), cmd, "memsize"); return -1; } /* The check above should ensure this assignment does not overflow. */ memsize = r; } and like this for all Int64 arguments (note we don't need the range check for these): { strtol_error xerr; long long r; xerr = xstrtoll (argv[1], NULL, 0, &r, ""); if (xerr != LONGINT_OK) { fprintf (stderr, _("%s: %s: invalid integer parameter (%s returned %d)\n"), cmd, "size", "xstrtoll", xerr); return -1; } size = r; } Note this also fixes an unrelated bug in guestfish handling of RBufferOut. We were using 'fwrite' without checking the return value, and this could have caused silent failures, eg. in the case where there was not enough disk space to store the resulting file, or even if the program was interrupted (but continued) during the write. Replace this with Gnulib 'full-write', and check the return value and report errors.
* Add 'filesize' call.Richard Jones2010-01-252-1/+13
| | | | | Returns the size of a file. You can already do this with 'stat', but this call is good for scripting.
* Add guestfs.pod and guestfish.pod to EXTRA_DIST.1.0.81Richard Jones2010-01-131-1/+2
|
* qemu: Upstream regression of -stdio serial option.Richard Jones2010-01-071-4/+17
| | | | | | | | | | | | | Best explained by the comment in the code: /* Newer versions of qemu (from around 2009/12) changed the * behaviour of monitors so that an implicit '-monitor stdio' is * assumed if we are in -nographic mode and there is no other * -monitor option. Only a single stdio device is allowed, so * this broke the '-serial stdio' option. There is a new flag * called -nodefaults which gets rid of all this default crud, so * let's use that to avoid this and any future surprises. */
* Use linker script to control visibility of symbols.Richard Jones2010-01-042-3/+53
|
* generator: Move all library generation code together.Richard Jones2010-01-041-1/+1
|
* generator: Print total lines of generated code.Richard Jones2010-01-041-2/+18
|
* C#: Add documentation about experimental nature of these bindings.Richard Jones2010-01-042-5/+39
|
* Experimental C# bindings.Richard Jones2010-01-022-5/+218
| | | | Tested in only limited situations, with Mono on Linux.
* Move guestfs(3) and guestfish(1) man pages into subdirectories.Richard Jones2009-12-314-6/+1337
| | | | | | | | These manual pages have for a very long time 'lived' in the top source directory. Clean up this situation by moving those manual pages (plus associated generated files) into the src/ and fish/ subdirectories respectively.
* generator: Move src/guestfs-bindtests.c next to other src/ files.Richard Jones2009-12-311-1/+1
|
* generator: Use Continuation Passing Style (CPS) in output_to function.Richard Jones2009-12-311-175/+56
| | | | This makes the code simpler, shorter and less error-prone.
* generator: Rename GPLv2 to GPLv2plus, LGPLv2 to LGPLv2plus.Richard Jones2009-12-311-38/+38
| | | | | The licenses are "any later version", so reflect this in the naming of the parameter to generate_header.
* generated code: Set copyright years to 2009-xxxx when current year > 2009.Richard Jones2009-12-311-4/+8
|
* Remove separate inspector_generator.ml, combine this with generator.ml.Richard Jones2009-12-311-2/+506
| | | | | | | | | | | This commit combines the previously separate "inspector_generator.ml" program which generated bindings for virt-inspector. Having two separate programs caused no end of troubles for developers, so we now combine them into a single program. NOTE: OCaml xml-light is now *required* in order to rebuild the generated code.
* generator: Comment and whitespace changes only.Richard Jones2009-12-311-17/+24
|
* build: Fix typo in filename.Richard Jones2009-12-161-1/+1
|
* lib: Link with $(LTLIBTHREAD), required by Gnulib lock module.Richard Jones2009-12-071-1/+3
| | | | This fixes commit cada248a53858341c91f70392e8f5b6e47d9b4fe.
* lib: Add thread-safety to global list of handles.Richard Jones2009-12-071-9/+10
| | | | | | | | | | | | | | | | This commit uses the Gnulib 'lock' module to implement a mutex on the global list of handles which is stored by the library. Note that Gnulib nicely avoids explicitly linking with -lpthread unless the application program itself links to -lpthread. Locks are only enabled in multithreaded applications. $ ldd src/.libs/libguestfs.so.0.217.0 linux-vdso.so.1 => (0x00007fffcb7ff000) libc.so.6 => /lib64/libc.so.6 (0x00007f96a4e6c000) /lib64/ld-linux-x86-64.so.2 (0x00007f96a544d000) Please enter the commit message for your changes. Lines starting
* Make realpath call optional, disable it for Windows.Richard Jones2009-11-261-1/+1
|
* availability: Add a test for this call.Richard Jones2009-11-241-1/+1
| | | | | | Because all the tested groups are optional, there's not really a group we can reliably test, therefore test against the empty list (which should not fail).
* availability: Clarify and fix documentation.Richard Jones2009-11-241-11/+12
|
* generator: Passing "" to StringList tests should turn into empty list.Richard Jones2009-11-241-0/+2
| | | | | | | | This is a bug in the generator which wasn't being tickled. If you had a test which expected a StringList or DeviceList parameter, and you passed "" to that test, then you'd (probably) expect to be testing an empty list, but in fact you got a single element list containing an empty string. This fixes it so you get an empty list.
* Implement 'dd' command.Richard Jones2009-11-232-1/+17
|
* generator: second parameter to upload is Dev_or_Path, not String.Richard Jones2009-11-221-1/+1
|