From: Richard Jones Date: Mon, 8 Feb 2010 16:44:41 +0000 (+0000) Subject: Documentation: Added a section on libguestfs gotchas. X-Git-Tag: 1.0.84~12 X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=commitdiff_plain;h=c0baa7bdb2b404e8c808700984b3fc1a699d8dd7;hp=6c97a65ce768b357a1481cde0533d4cf0b8b931c Documentation: Added a section on libguestfs gotchas. --- diff --git a/src/guestfs.pod b/src/guestfs.pod index c959d23..84eec63 100644 --- a/src/guestfs.pod +++ b/src/guestfs.pod @@ -524,6 +524,61 @@ For documentation see L. =back +=head2 LIBGUESTFS GOTCHAS + +L: "A feature of a +system [...] that works in the way it is documented but is +counterintuitive and almost invites mistakes." + +Since we developed libguestfs and the associated tools, there are +several things we would have designed differently, but are now stuck +with for backwards compatibility or other reasons. If there is ever a +libguestfs 2.0 release, you can expect these to change. Beware of +them. + +=over 4 + +=item Autosync / forgetting to sync. + +When modifying a filesystem from C or another language, you B +unmount all filesystems and call L explicitly before +you close the libguestfs handle. You can also call: + + guestfs_set_autosync (handle, 1); + +to have the unmount/sync done automatically for you when the handle is +closed. (This feature is called "autosync", L +q.v.) + +If you forget to do this, then it is entirely possible that your +changes won't be written out, or will be partially written, or (very +rarely) that you'll get disk corruption. + +Note that in L I. So quick and +dirty guestfish scripts that forget to sync will work just fine, which +can make this extra-puzzling if you are trying to debug a problem. + +=item Read-only should be the default. + +In L, I<--ro> should be the default, and you should +have to specify I<--rw> if you want to make changes to the image. + +This would reduce the potential to corrupt live VM images. + +Note that many filesystems change the disk when you just mount and +unmount, even if you didn't perform any writes. You need to use +C to guarantee that the disk is not changed. + +=item guestfish command line is hard to use. + +C doesn't do what people expect (open C +for examination). It tries to run a guestfish command C +which doesn't exist, so it fails, and it fails with a strange and +unintuitive error message. Like the Bourne shell, we should have used +C to run commands. + +=back + =head1 CONNECTION MANAGEMENT =head2 guestfs_h *