1Sys::Guestfs(3)       User Contributed Perl Documentation      Sys::Guestfs(3)
2
3
4

NAME

6       Sys::Guestfs - Perl bindings for libguestfs
7

SYNOPSIS

9        use Sys::Guestfs;
10
11        my $g = Sys::Guestfs->new ();
12        $g->add_drive_opts ('guest.img', format => 'raw');
13        $g->launch ();
14        $g->mount ('/dev/sda1', '/');
15        $g->touch ('/hello');
16        $g->shutdown ();
17        $g->close ();
18

DESCRIPTION

20       The "Sys::Guestfs" module provides a Perl XS binding to the libguestfs
21       API for examining and modifying virtual machine disk images.
22
23       Amongst the things this is good for: making batch configuration changes
24       to guests, getting disk used/free statistics (see also: virt-df),
25       migrating between virtualization systems (see also: virt-p2v),
26       performing partial backups, performing partial guest clones, cloning
27       guests and changing registry/UUID/hostname info, and much else besides.
28
29       Libguestfs uses Linux kernel and qemu code, and can access any type of
30       guest filesystem that Linux and qemu can, including but not limited to:
31       ext2/3/4, btrfs, FAT and NTFS, LVM, many different disk partition
32       schemes, qcow, qcow2, vmdk.
33
34       Libguestfs provides ways to enumerate guest storage (eg. partitions,
35       LVs, what filesystem is in each LV, etc.).  It can also run commands in
36       the context of the guest.  Also you can access filesystems over FUSE.
37

ERRORS

39       All errors turn into calls to "croak" (see Carp(3)).
40
41       The error string from libguestfs is directly available from $@.  Use
42       the "last_errno" method if you want to get the errno.
43

METHODS

45       $g = Sys::Guestfs->new ([environment => 0,] [close_on_exit => 0]);
46           Create a new guestfs handle.
47
48           If the optional argument "environment" is false, then the
49           "GUESTFS_CREATE_NO_ENVIRONMENT" flag is set.
50
51           If the optional argument "close_on_exit" is false, then the
52           "GUESTFS_CREATE_NO_CLOSE_ON_EXIT" flag is set.
53
54       $g->close ();
55           Explicitly close the guestfs handle.
56
57           Note: You should not usually call this function.  The handle will
58           be closed implicitly when its reference count goes to zero (eg.
59           when it goes out of scope or the program ends).  This call is only
60           required in some exceptional cases, such as where the program may
61           contain cached references to the handle 'somewhere' and you really
62           have to have the close happen right away.  After calling "close"
63           the program must not call any method (including "close") on the
64           handle (but the implicit call to "DESTROY" that happens when the
65           final reference is cleaned up is OK).
66
67       $Sys::Guestfs::EVENT_CLOSE
68           See "GUESTFS_EVENT_CLOSE" in guestfs(3).
69
70       $Sys::Guestfs::EVENT_SUBPROCESS_QUIT
71           See "GUESTFS_EVENT_SUBPROCESS_QUIT" in guestfs(3).
72
73       $Sys::Guestfs::EVENT_LAUNCH_DONE
74           See "GUESTFS_EVENT_LAUNCH_DONE" in guestfs(3).
75
76       $Sys::Guestfs::EVENT_PROGRESS
77           See "GUESTFS_EVENT_PROGRESS" in guestfs(3).
78
79       $Sys::Guestfs::EVENT_APPLIANCE
80           See "GUESTFS_EVENT_APPLIANCE" in guestfs(3).
81
82       $Sys::Guestfs::EVENT_LIBRARY
83           See "GUESTFS_EVENT_LIBRARY" in guestfs(3).
84
85       $Sys::Guestfs::EVENT_TRACE
86           See "GUESTFS_EVENT_TRACE" in guestfs(3).
87
88       $Sys::Guestfs::EVENT_ENTER
89           See "GUESTFS_EVENT_ENTER" in guestfs(3).
90
91       $Sys::Guestfs::EVENT_LIBVIRT_AUTH
92           See "GUESTFS_EVENT_LIBVIRT_AUTH" in guestfs(3).
93
94       $Sys::Guestfs::EVENT_WARNING
95           See "GUESTFS_EVENT_WARNING" in guestfs(3).
96
97       $Sys::Guestfs::EVENT_ALL
98           See "GUESTFS_EVENT_ALL" in guestfs(3).
99
100       $event_handle = $g->set_event_callback (\&cb, $event_bitmask);
101           Register "cb" as a callback function for all of the events in
102           $event_bitmask (one or more "$Sys::Guestfs::EVENT_*" flags
103           logically or'd together).
104
105           This function returns an event handle which can be used to delete
106           the callback using "delete_event_callback".
107
108           The callback function receives 4 parameters:
109
110            &cb ($event, $event_handle, $buf, $array)
111
112           $event
113               The event which happened (equal to one of
114               "$Sys::Guestfs::EVENT_*").
115
116           $event_handle
117               The event handle.
118
119           $buf
120               For some event types, this is a message buffer (ie. a string).
121
122           $array
123               For some event types (notably progress events), this is an
124               array of integers.
125
126           You should carefully read the documentation for
127           "guestfs_set_event_callback" in guestfs(3) before using this
128           function.
129
130       $g->delete_event_callback ($event_handle);
131           This removes the callback which was previously registered using
132           "set_event_callback".
133
134       $str = Sys::Guestfs::event_to_string ($events);
135           $events is either a single event or a bitmask of events.  This
136           returns a printable string, useful for debugging.
137
138           Note that this is a class function, not a method.
139
140       $errnum = $g->last_errno ();
141           This returns the last error number (errno) that happened on the
142           handle $g.
143
144           If successful, an errno integer not equal to zero is returned.
145
146           If no error number is available, this returns 0.  See
147           "guestfs_last_errno" in guestfs(3) for more details of why this can
148           happen.
149
150           You can use the standard Perl module Errno(3) to compare the
151           numeric error returned from this call with symbolic errnos:
152
153            $g->mkdir ("/foo");
154            if ($g->last_errno() == Errno::EEXIST()) {
155              # mkdir failed because the directory exists already.
156            }
157
158       $g->acl_delete_def_file ($dir);
159           This function deletes the default POSIX Access Control List (ACL)
160           attached to directory "dir".
161
162           This function depends on the feature "acl".  See also
163           "$g->feature-available".
164
165       $acl = $g->acl_get_file ($path, $acltype);
166           This function returns the POSIX Access Control List (ACL) attached
167           to "path".  The ACL is returned in "long text form" (see acl(5)).
168
169           The "acltype" parameter may be:
170
171           "access"
172               Return the ordinary (access) ACL for any file, directory or
173               other filesystem object.
174
175           "default"
176               Return the default ACL.  Normally this only makes sense if
177               "path" is a directory.
178
179           This function depends on the feature "acl".  See also
180           "$g->feature-available".
181
182       $g->acl_set_file ($path, $acltype, $acl);
183           This function sets the POSIX Access Control List (ACL) attached to
184           "path".
185
186           The "acltype" parameter may be:
187
188           "access"
189               Set the ordinary (access) ACL for any file, directory or other
190               filesystem object.
191
192           "default"
193               Set the default ACL.  Normally this only makes sense if "path"
194               is a directory.
195
196           The "acl" parameter is the new ACL in either "long text form" or
197           "short text form" (see acl(5)).  The new ACL completely replaces
198           any previous ACL on the file.  The ACL must contain the full Unix
199           permissions (eg. "u::rwx,g::rx,o::rx").
200
201           If you are specifying individual users or groups, then the mask
202           field is also required (eg. "m::rwx"), followed by the "u:ID:..."
203           and/or "g:ID:..." field(s).  A full ACL string might therefore look
204           like this:
205
206            u::rwx,g::rwx,o::rwx,m::rwx,u:500:rwx,g:500:rwx
207            \ Unix permissions / \mask/ \      ACL        /
208
209           You should use numeric UIDs and GIDs.  To map usernames and
210           groupnames to the correct numeric ID in the context of the guest,
211           use the Augeas functions (see "$g->aug_init").
212
213           This function depends on the feature "acl".  See also
214           "$g->feature-available".
215
216       $g->add_cdrom ($filename);
217           This function adds a virtual CD-ROM disk image to the guest.
218
219           The image is added as read-only drive, so this function is
220           equivalent of "$g->add_drive_ro".
221
222           This function is deprecated.  In new code, use the "add_drive_ro"
223           call instead.
224
225           Deprecated functions will not be removed from the API, but the fact
226           that they are deprecated indicates that there are problems with
227           correct use of these functions.
228
229       $nrdisks = $g->add_domain ($dom [, libvirturi => $libvirturi] [,
230       readonly => $readonly] [, iface => $iface] [, live => $live] [,
231       allowuuid => $allowuuid] [, readonlydisk => $readonlydisk] [, cachemode
232       => $cachemode] [, discard => $discard] [, copyonread => $copyonread]);
233           This function adds the disk(s) attached to the named libvirt domain
234           "dom".  It works by connecting to libvirt, requesting the domain
235           and domain XML from libvirt, parsing it for disks, and calling
236           "$g->add_drive_opts" on each one.
237
238           The number of disks added is returned.  This operation is atomic:
239           if an error is returned, then no disks are added.
240
241           This function does some minimal checks to make sure the libvirt
242           domain is not running (unless "readonly" is true).  In a future
243           version we will try to acquire the libvirt lock on each disk.
244
245           Disks must be accessible locally.  This often means that adding
246           disks from a remote libvirt connection (see
247           <https://libvirt.org/remote.html>) will fail unless those disks are
248           accessible via the same device path locally too.
249
250           The optional "libvirturi" parameter sets the libvirt URI (see
251           <https://libvirt.org/uri.html>).  If this is not set then we
252           connect to the default libvirt URI (or one set through an
253           environment variable, see the libvirt documentation for full
254           details).
255
256           The optional "live" flag controls whether this call will try to
257           connect to a running virtual machine "guestfsd" process if it sees
258           a suitable <channel> element in the libvirt XML definition.  The
259           default (if the flag is omitted) is never to try.  See "ATTACHING
260           TO RUNNING DAEMONS" in guestfs(3) for more information.
261
262           If the "allowuuid" flag is true (default is false) then a UUID may
263           be passed instead of the domain name.  The "dom" string is treated
264           as a UUID first and looked up, and if that lookup fails then we
265           treat "dom" as a name as usual.
266
267           The optional "readonlydisk" parameter controls what we do for disks
268           which are marked <readonly/> in the libvirt XML.  Possible values
269           are:
270
271           readonlydisk = "error"
272               If "readonly" is false:
273
274               The whole call is aborted with an error if any disk with the
275               <readonly/> flag is found.
276
277               If "readonly" is true:
278
279               Disks with the <readonly/> flag are added read-only.
280
281           readonlydisk = "read"
282               If "readonly" is false:
283
284               Disks with the <readonly/> flag are added read-only.  Other
285               disks are added read/write.
286
287               If "readonly" is true:
288
289               Disks with the <readonly/> flag are added read-only.
290
291           readonlydisk = "write" (default)
292               If "readonly" is false:
293
294               Disks with the <readonly/> flag are added read/write.
295
296               If "readonly" is true:
297
298               Disks with the <readonly/> flag are added read-only.
299
300           readonlydisk = "ignore"
301               If "readonly" is true or false:
302
303               Disks with the <readonly/> flag are skipped.
304
305           If present, the value of "logical_block_size" attribute of
306           <blockio/> tag in libvirt XML will be passed as "blocksize"
307           parameter to "$g->add_drive_opts".
308
309           The other optional parameters are passed directly through to
310           "$g->add_drive_opts".
311
312       $g->add_drive ($filename [, readonly => $readonly] [, format =>
313       $format] [, iface => $iface] [, name => $name] [, label => $label] [,
314       protocol => $protocol] [, server => $server] [, username => $username]
315       [, secret => $secret] [, cachemode => $cachemode] [, discard =>
316       $discard] [, copyonread => $copyonread] [, blocksize => $blocksize]);
317           This function adds a disk image called filename to the handle.
318           filename may be a regular host file or a host device.
319
320           When this function is called before "$g->launch" (the usual case)
321           then the first time you call this function, the disk appears in the
322           API as /dev/sda, the second time as /dev/sdb, and so on.
323
324           In libguestfs X 1.20 you can also call this function after launch
325           (with some restrictions).  This is called "hotplugging".  When
326           hotplugging, you must specify a "label" so that the new disk gets a
327           predictable name.  For more information see "HOTPLUGGING" in
328           guestfs(3).
329
330           You don't necessarily need to be root when using libguestfs.
331           However you obviously do need sufficient permissions to access the
332           filename for whatever operations you want to perform (ie. read
333           access if you just want to read the image or write access if you
334           want to modify the image).
335
336           This call checks that filename exists.
337
338           filename may be the special string "/dev/null".  See "NULL DISKS"
339           in guestfs(3).
340
341           The optional arguments are:
342
343           "readonly"
344               If true then the image is treated as read-only.  Writes are
345               still allowed, but they are stored in a temporary snapshot
346               overlay which is discarded at the end.  The disk that you add
347               is not modified.
348
349           "format"
350               This forces the image format.  If you omit this (or use
351               "$g->add_drive" or "$g->add_drive_ro") then the format is
352               automatically detected.  Possible formats include "raw" and
353               "qcow2".
354
355               Automatic detection of the format opens you up to a potential
356               security hole when dealing with untrusted raw-format images.
357               See CVE-2010-3851 and RHBZ#642934.  Specifying the format
358               closes this security hole.
359
360           "iface"
361               This rarely-used option lets you emulate the behaviour of the
362               deprecated "$g->add_drive_with_if" call (q.v.)
363
364           "name"
365               The name the drive had in the original guest, e.g. /dev/sdb.
366               This is used as a hint to the guest inspection process if it is
367               available.
368
369           "label"
370               Give the disk a label.  The label should be a unique, short
371               string using only ASCII characters "[a-zA-Z]".  As well as its
372               usual name in the API (such as /dev/sda), the drive will also
373               be named /dev/disk/guestfs/label.
374
375               See "DISK LABELS" in guestfs(3).
376
377           "protocol"
378               The optional protocol argument can be used to select an
379               alternate source protocol.
380
381               See also: "REMOTE STORAGE" in guestfs(3).
382
383               "protocol = "file""
384                   filename is interpreted as a local file or device.  This is
385                   the default if the optional protocol parameter is omitted.
386
387               "protocol = "ftp"|"ftps"|"http"|"https"|"tftp""
388                   Connect to a remote FTP, HTTP or TFTP server.  The "server"
389                   parameter must also be supplied - see below.
390
391                   See also: "FTP, HTTP AND TFTP" in guestfs(3)
392
393               "protocol = "gluster""
394                   Connect to the GlusterFS server.  The "server" parameter
395                   must also be supplied - see below.
396
397                   See also: "GLUSTER" in guestfs(3)
398
399               "protocol = "iscsi""
400                   Connect to the iSCSI server.  The "server" parameter must
401                   also be supplied - see below.  The "username" parameter may
402                   be supplied.  See below.  The "secret" parameter may be
403                   supplied.  See below.
404
405                   See also: "ISCSI" in guestfs(3).
406
407               "protocol = "nbd""
408                   Connect to the Network Block Device server.  The "server"
409                   parameter must also be supplied - see below.
410
411                   See also: "NETWORK BLOCK DEVICE" in guestfs(3).
412
413               "protocol = "rbd""
414                   Connect to the Ceph (librbd/RBD) server.  The "server"
415                   parameter must also be supplied - see below.  The
416                   "username" parameter may be supplied.  See below.  The
417                   "secret" parameter may be supplied.  See below.
418
419                   See also: "CEPH" in guestfs(3).
420
421               "protocol = "sheepdog""
422                   Connect to the Sheepdog server.  The "server" parameter may
423                   also be supplied - see below.
424
425                   See also: "SHEEPDOG" in guestfs(3).
426
427               "protocol = "ssh""
428                   Connect to the Secure Shell (ssh) server.
429
430                   The "server" parameter must be supplied.  The "username"
431                   parameter may be supplied.  See below.
432
433                   See also: "SSH" in guestfs(3).
434
435           "server"
436               For protocols which require access to a remote server, this is
437               a list of server(s).
438
439                Protocol       Number of servers required
440                --------       --------------------------
441                file           List must be empty or param not used at all
442                ftp|ftps|http|https|tftp  Exactly one
443                gluster        Exactly one
444                iscsi          Exactly one
445                nbd            Exactly one
446                rbd            Zero or more
447                sheepdog       Zero or more
448                ssh            Exactly one
449
450               Each list element is a string specifying a server.  The string
451               must be in one of the following formats:
452
453                hostname
454                hostname:port
455                tcp:hostname
456                tcp:hostname:port
457                unix:/path/to/socket
458
459               If the port number is omitted, then the standard port number
460               for the protocol is used (see /etc/services).
461
462           "username"
463               For the "ftp", "ftps", "http", "https", "iscsi", "rbd", "ssh"
464               and "tftp" protocols, this specifies the remote username.
465
466               If not given, then the local username is used for "ssh", and no
467               authentication is attempted for ceph.  But note this sometimes
468               may give unexpected results, for example if using the libvirt
469               backend and if the libvirt backend is configured to start the
470               qemu appliance as a special user such as "qemu.qemu".  If in
471               doubt, specify the remote username you want.
472
473           "secret"
474               For the "rbd" protocol only, this specifies the XsecretX to use
475               when connecting to the remote device.  It must be base64
476               encoded.
477
478               If not given, then a secret matching the given username will be
479               looked up in the default keychain locations, or if no username
480               is given, then no authentication will be used.
481
482           "cachemode"
483               Choose whether or not libguestfs will obey sync operations
484               (safe but slow) or not (unsafe but fast).  The possible values
485               for this string are:
486
487               "cachemode = "writeback""
488                   This is the default.
489
490                   Write operations in the API do not return until a write(2)
491                   call has completed in the host [but note this does not
492                   imply that anything gets written to disk].
493
494                   Sync operations in the API, including implicit syncs caused
495                   by filesystem journalling, will not return until an
496                   fdatasync(2) call has completed in the host, indicating
497                   that data has been committed to disk.
498
499               "cachemode = "unsafe""
500                   In this mode, there are no guarantees.  Libguestfs may
501                   cache anything and ignore sync requests.  This is suitable
502                   only for scratch or temporary disks.
503
504           "discard"
505               Enable or disable discard (a.k.a. trim or unmap) support on
506               this drive.  If enabled, operations such as "$g->fstrim" will
507               be able to discard / make thin / punch holes in the underlying
508               host file or device.
509
510               Possible discard settings are:
511
512               "discard = "disable""
513                   Disable discard support.  This is the default.
514
515               "discard = "enable""
516                   Enable discard support.  Fail if discard is not possible.
517
518               "discard = "besteffort""
519                   Enable discard support if possible, but don't fail if it is
520                   not supported.
521
522                   Since not all backends and not all underlying systems
523                   support discard, this is a good choice if you want to use
524                   discard if possible, but don't mind if it doesn't work.
525
526           "copyonread"
527               The boolean parameter "copyonread" enables copy-on-read
528               support.  This only affects disk formats which have backing
529               files, and causes reads to be stored in the overlay layer,
530               speeding up multiple reads of the same area of disk.
531
532               The default is false.
533
534           "blocksize"
535               This parameter sets the sector size of the disk.  Possible
536               values are 512 (the default if the parameter is omitted) or
537               4096.  Use 4096 when handling an "Advanced Format" disk that
538               uses 4K sector size
539               (<https://en.wikipedia.org/wiki/Advanced_Format>).
540
541               Only a subset of the backends support this parameter (currently
542               only the libvirt and direct backends do).
543
544       $g->add_drive_opts ($filename [, readonly => $readonly] [, format =>
545       $format] [, iface => $iface] [, name => $name] [, label => $label] [,
546       protocol => $protocol] [, server => $server] [, username => $username]
547       [, secret => $secret] [, cachemode => $cachemode] [, discard =>
548       $discard] [, copyonread => $copyonread] [, blocksize => $blocksize]);
549           This is an alias of "add_drive".
550
551       $g->add_drive_ro ($filename);
552           This function is the equivalent of calling "$g->add_drive_opts"
553           with the optional parameter "GUESTFS_ADD_DRIVE_OPTS_READONLY" set
554           to 1, so the disk is added read-only, with the format being
555           detected automatically.
556
557       $g->add_drive_ro_with_if ($filename, $iface);
558           This is the same as "$g->add_drive_ro" but it allows you to specify
559           the QEMU interface emulation to use at run time.
560
561           This function is deprecated.  In new code, use the "add_drive" call
562           instead.
563
564           Deprecated functions will not be removed from the API, but the fact
565           that they are deprecated indicates that there are problems with
566           correct use of these functions.
567
568       $g->add_drive_scratch ($size [, name => $name] [, label => $label] [,
569       blocksize => $blocksize]);
570           This command adds a temporary scratch drive to the handle.  The
571           "size" parameter is the virtual size (in bytes).  The scratch drive
572           is blank initially (all reads return zeroes until you start writing
573           to it).  The drive is deleted when the handle is closed.
574
575           The optional arguments "name", "label" and "blocksize" are passed
576           through to "$g->add_drive_opts".
577
578       $g->add_drive_with_if ($filename, $iface);
579           This is the same as "$g->add_drive" but it allows you to specify
580           the QEMU interface emulation to use at run time.
581
582           This function is deprecated.  In new code, use the "add_drive" call
583           instead.
584
585           Deprecated functions will not be removed from the API, but the fact
586           that they are deprecated indicates that there are problems with
587           correct use of these functions.
588
589       $nrdisks = $g->add_libvirt_dom ($dom [, readonly => $readonly] [, iface
590       => $iface] [, live => $live] [, readonlydisk => $readonlydisk] [,
591       cachemode => $cachemode] [, discard => $discard] [, copyonread =>
592       $copyonread]);
593           This function adds the disk(s) attached to the libvirt domain
594           "dom".  It works by requesting the domain XML from libvirt, parsing
595           it for disks, and calling "$g->add_drive_opts" on each one.
596
597           In the C API we declare "void *dom", but really it has type
598           "virDomainPtr dom".  This is so we don't need <libvirt.h>.
599
600           The number of disks added is returned.  This operation is atomic:
601           if an error is returned, then no disks are added.
602
603           This function does some minimal checks to make sure the libvirt
604           domain is not running (unless "readonly" is true).  In a future
605           version we will try to acquire the libvirt lock on each disk.
606
607           Disks must be accessible locally.  This often means that adding
608           disks from a remote libvirt connection (see
609           <https://libvirt.org/remote.html>) will fail unless those disks are
610           accessible via the same device path locally too.
611
612           The optional "live" flag controls whether this call will try to
613           connect to a running virtual machine "guestfsd" process if it sees
614           a suitable <channel> element in the libvirt XML definition.  The
615           default (if the flag is omitted) is never to try.  See "ATTACHING
616           TO RUNNING DAEMONS" in guestfs(3) for more information.
617
618           The optional "readonlydisk" parameter controls what we do for disks
619           which are marked <readonly/> in the libvirt XML.  See
620           "$g->add_domain" for possible values.
621
622           If present, the value of "logical_block_size" attribute of
623           <blockio/> tag in libvirt XML will be passed as "blocksize"
624           parameter to "$g->add_drive_opts".
625
626           The other optional parameters are passed directly through to
627           "$g->add_drive_opts".
628
629       $g->aug_clear ($augpath);
630           Set the value associated with "path" to "NULL".  This is the same
631           as the augtool(1) "clear" command.
632
633       $g->aug_close ();
634           Close the current Augeas handle and free up any resources used by
635           it.  After calling this, you have to call "$g->aug_init" again
636           before you can use any other Augeas functions.
637
638       %nrnodescreated = $g->aug_defnode ($name, $expr, $val);
639           Defines a variable "name" whose value is the result of evaluating
640           "expr".
641
642           If "expr" evaluates to an empty nodeset, a node is created,
643           equivalent to calling "$g->aug_set" "expr", "val".  "name" will be
644           the nodeset containing that single node.
645
646           On success this returns a pair containing the number of nodes in
647           the nodeset, and a boolean flag if a node was created.
648
649       $nrnodes = $g->aug_defvar ($name, $expr);
650           Defines an Augeas variable "name" whose value is the result of
651           evaluating "expr".  If "expr" is NULL, then "name" is undefined.
652
653           On success this returns the number of nodes in "expr", or 0 if
654           "expr" evaluates to something which is not a nodeset.
655
656       $val = $g->aug_get ($augpath);
657           Look up the value associated with "path".  If "path" matches
658           exactly one node, the "value" is returned.
659
660       $g->aug_init ($root, $flags);
661           Create a new Augeas handle for editing configuration files.  If
662           there was any previous Augeas handle associated with this guestfs
663           session, then it is closed.
664
665           You must call this before using any other "$g->aug_*" commands.
666
667           "root" is the filesystem root.  "root" must not be NULL, use /
668           instead.
669
670           The flags are the same as the flags defined in <augeas.h>, the
671           logical or of the following integers:
672
673           "AUG_SAVE_BACKUP" = 1
674               Keep the original file with a ".augsave" extension.
675
676           "AUG_SAVE_NEWFILE" = 2
677               Save changes into a file with extension ".augnew", and do not
678               overwrite original.  Overrides "AUG_SAVE_BACKUP".
679
680           "AUG_TYPE_CHECK" = 4
681               Typecheck lenses.
682
683               This option is only useful when debugging Augeas lenses.  Use
684               of this option may require additional memory for the libguestfs
685               appliance.  You may need to set the "LIBGUESTFS_MEMSIZE"
686               environment variable or call "$g->set_memsize".
687
688           "AUG_NO_STDINC" = 8
689               Do not use standard load path for modules.
690
691           "AUG_SAVE_NOOP" = 16
692               Make save a no-op, just record what would have been changed.
693
694           "AUG_NO_LOAD" = 32
695               Do not load the tree in "$g->aug_init".
696
697           To close the handle, you can call "$g->aug_close".
698
699           To find out more about Augeas, see <http://augeas.net/>.
700
701       $g->aug_insert ($augpath, $label, $before);
702           Create a new sibling "label" for "path", inserting it into the tree
703           before or after "path" (depending on the boolean flag "before").
704
705           "path" must match exactly one existing node in the tree, and
706           "label" must be a label, ie. not contain /, "*" or end with a
707           bracketed index "[N]".
708
709       $label = $g->aug_label ($augpath);
710           The label (name of the last element) of the Augeas path expression
711           "augpath" is returned.  "augpath" must match exactly one node, else
712           this function returns an error.
713
714       $g->aug_load ();
715           Load files into the tree.
716
717           See "aug_load" in the Augeas documentation for the full gory
718           details.
719
720       @matches = $g->aug_ls ($augpath);
721           This is just a shortcut for listing "$g->aug_match" "path/*" and
722           sorting the resulting nodes into alphabetical order.
723
724       @matches = $g->aug_match ($augpath);
725           Returns a list of paths which match the path expression "path".
726           The returned paths are sufficiently qualified so that they match
727           exactly one node in the current tree.
728
729       $g->aug_mv ($src, $dest);
730           Move the node "src" to "dest".  "src" must match exactly one node.
731           "dest" is overwritten if it exists.
732
733       $nrnodes = $g->aug_rm ($augpath);
734           Remove "path" and all of its children.
735
736           On success this returns the number of entries which were removed.
737
738       $g->aug_save ();
739           This writes all pending changes to disk.
740
741           The flags which were passed to "$g->aug_init" affect exactly how
742           files are saved.
743
744       $g->aug_set ($augpath, $val);
745           Set the value associated with "augpath" to "val".
746
747           In the Augeas API, it is possible to clear a node by setting the
748           value to NULL.  Due to an oversight in the libguestfs API you
749           cannot do that with this call.  Instead you must use the
750           "$g->aug_clear" call.
751
752       $nodes = $g->aug_setm ($base, $sub, $val);
753           Change multiple Augeas nodes in a single operation.  "base" is an
754           expression matching multiple nodes.  "sub" is a path expression
755           relative to "base".  All nodes matching "base" are found, and then
756           for each node, "sub" is changed to "val".  "sub" may also be "NULL"
757           in which case the "base" nodes are modified.
758
759           This returns the number of nodes modified.
760
761       $g->aug_transform ($lens, $file [, remove => $remove]);
762           Add an Augeas transformation for the specified "lens" so it can
763           handle "file".
764
765           If "remove" is true ("false" by default), then the transformation
766           is removed.
767
768       $g->available (\@groups);
769           This command is used to check the availability of some groups of
770           functionality in the appliance, which not all builds of the
771           libguestfs appliance will be able to provide.
772
773           The libguestfs groups, and the functions that those groups
774           correspond to, are listed in "AVAILABILITY" in guestfs(3).  You can
775           also fetch this list at runtime by calling
776           "$g->available_all_groups".
777
778           The argument "groups" is a list of group names, eg: "["inotify",
779           "augeas"]" would check for the availability of the Linux inotify
780           functions and Augeas (configuration file editing) functions.
781
782           The command returns no error if all requested groups are available.
783
784           It fails with an error if one or more of the requested groups is
785           unavailable in the appliance.
786
787           If an unknown group name is included in the list of groups then an
788           error is always returned.
789
790           Notes:
791
792           •   "$g->feature_available" is the same as this call, but with a
793               slightly simpler to use API: that call returns a boolean
794               true/false instead of throwing an error.
795
796           •   You must call "$g->launch" before calling this function.
797
798               The reason is because we don't know what groups are supported
799               by the appliance/daemon until it is running and can be queried.
800
801           •   If a group of functions is available, this does not necessarily
802               mean that they will work.  You still have to check for errors
803               when calling individual API functions even if they are
804               available.
805
806           •   It is usually the job of distro packagers to build complete
807               functionality into the libguestfs appliance.  Upstream
808               libguestfs, if built from source with all requirements
809               satisfied, will support everything.
810
811           •   This call was added in version 1.0.80.  In previous versions of
812               libguestfs all you could do would be to speculatively execute a
813               command to find out if the daemon implemented it.  See also
814               "$g->version".
815
816           See also "$g->filesystem_available".
817
818       @groups = $g->available_all_groups ();
819           This command returns a list of all optional groups that this daemon
820           knows about.  Note this returns both supported and unsupported
821           groups.  To find out which ones the daemon can actually support you
822           have to call "$g->available" / "$g->feature_available" on each
823           member of the returned list.
824
825           See also "$g->available", "$g->feature_available" and
826           "AVAILABILITY" in guestfs(3).
827
828       $g->base64_in ($base64file, $filename);
829           This command uploads base64-encoded data from "base64file" to
830           filename.
831
832       $g->base64_out ($filename, $base64file);
833           This command downloads the contents of filename, writing it out to
834           local file "base64file" encoded as base64.
835
836       $g->blkdiscard ($device);
837           This discards all blocks on the block device "device", giving the
838           free space back to the host.
839
840           This operation requires support in libguestfs, the host filesystem,
841           qemu and the host kernel.  If this support isn't present it may
842           give an error or even appear to run but do nothing.  You must also
843           set the "discard" attribute on the underlying drive (see
844           "$g->add_drive_opts").
845
846           This function depends on the feature "blkdiscard".  See also
847           "$g->feature-available".
848
849       $zeroes = $g->blkdiscardzeroes ($device);
850           This call returns true if blocks on "device" that have been
851           discarded by a call to "$g->blkdiscard" are returned as blocks of
852           zero bytes when read the next time.
853
854           If it returns false, then it may be that discarded blocks are read
855           as stale or random data.
856
857           This function depends on the feature "blkdiscardzeroes".  See also
858           "$g->feature-available".
859
860       %info = $g->blkid ($device);
861           This command returns block device attributes for "device". The
862           following fields are usually present in the returned hash. Other
863           fields may also be present.
864
865           "UUID"
866               The uuid of this device.
867
868           "LABEL"
869               The label of this device.
870
871           "VERSION"
872               The version of blkid command.
873
874           "TYPE"
875               The filesystem type or RAID of this device.
876
877           "USAGE"
878               The usage of this device, for example "filesystem" or "raid".
879
880       $g->blockdev_flushbufs ($device);
881           This tells the kernel to flush internal buffers associated with
882           "device".
883
884           This uses the blockdev(8) command.
885
886       $blocksize = $g->blockdev_getbsz ($device);
887           This returns the block size of a device.
888
889           Note: this is different from both size in blocks and filesystem
890           block size.  Also this setting is not really used by anything.  You
891           should probably not use it for anything.  Filesystems have their
892           own idea about what block size to choose.
893
894           This uses the blockdev(8) command.
895
896       $ro = $g->blockdev_getro ($device);
897           Returns a boolean indicating if the block device is read-only (true
898           if read-only, false if not).
899
900           This uses the blockdev(8) command.
901
902       $sizeinbytes = $g->blockdev_getsize64 ($device);
903           This returns the size of the device in bytes.
904
905           See also "$g->blockdev_getsz".
906
907           This uses the blockdev(8) command.
908
909       $sectorsize = $g->blockdev_getss ($device);
910           This returns the size of sectors on a block device.  Usually 512,
911           but can be larger for modern devices.
912
913           (Note, this is not the size in sectors, use "$g->blockdev_getsz"
914           for that).
915
916           This uses the blockdev(8) command.
917
918       $sizeinsectors = $g->blockdev_getsz ($device);
919           This returns the size of the device in units of 512-byte sectors
920           (even if the sectorsize isn't 512 bytes ... weird).
921
922           See also "$g->blockdev_getss" for the real sector size of the
923           device, and "$g->blockdev_getsize64" for the more useful size in
924           bytes.
925
926           This uses the blockdev(8) command.
927
928       $g->blockdev_rereadpt ($device);
929           Reread the partition table on "device".
930
931           This uses the blockdev(8) command.
932
933       $g->blockdev_setbsz ($device, $blocksize);
934           This call does nothing and has never done anything because of a bug
935           in blockdev.  Do not use it.
936
937           If you need to set the filesystem block size, use the "blocksize"
938           option of "$g->mkfs".
939
940           This function is deprecated.  There is no replacement.  Consult the
941           API documentation in guestfs(3) for further information.
942
943           Deprecated functions will not be removed from the API, but the fact
944           that they are deprecated indicates that there are problems with
945           correct use of these functions.
946
947       $g->blockdev_setra ($device, $sectors);
948           Set readahead (in 512-byte sectors) for the device.
949
950           This uses the blockdev(8) command.
951
952       $g->blockdev_setro ($device);
953           Sets the block device named "device" to read-only.
954
955           This uses the blockdev(8) command.
956
957       $g->blockdev_setrw ($device);
958           Sets the block device named "device" to read-write.
959
960           This uses the blockdev(8) command.
961
962       $g->btrfs_balance_cancel ($path);
963           Cancel a running balance on a btrfs filesystem.
964
965           This function depends on the feature "btrfs".  See also
966           "$g->feature-available".
967
968       $g->btrfs_balance_pause ($path);
969           Pause a running balance on a btrfs filesystem.
970
971           This function depends on the feature "btrfs".  See also
972           "$g->feature-available".
973
974       $g->btrfs_balance_resume ($path);
975           Resume a paused balance on a btrfs filesystem.
976
977           This function depends on the feature "btrfs".  See also
978           "$g->feature-available".
979
980       %status = $g->btrfs_balance_status ($path);
981           Show the status of a running or paused balance on a btrfs
982           filesystem.
983
984           This function depends on the feature "btrfs".  See also
985           "$g->feature-available".
986
987       $g->btrfs_device_add (\@devices, $fs);
988           Add the list of device(s) in "devices" to the btrfs filesystem
989           mounted at "fs".  If "devices" is an empty list, this does nothing.
990
991           This function depends on the feature "btrfs".  See also
992           "$g->feature-available".
993
994       $g->btrfs_device_delete (\@devices, $fs);
995           Remove the "devices" from the btrfs filesystem mounted at "fs".  If
996           "devices" is an empty list, this does nothing.
997
998           This function depends on the feature "btrfs".  See also
999           "$g->feature-available".
1000
1001       $g->btrfs_filesystem_balance ($fs);
1002           Balance the chunks in the btrfs filesystem mounted at "fs" across
1003           the underlying devices.
1004
1005           This function depends on the feature "btrfs".  See also
1006           "$g->feature-available".
1007
1008       $g->btrfs_filesystem_defragment ($path [, flush => $flush] [, compress
1009       => $compress]);
1010           Defragment a file or directory on a btrfs filesystem. compress is
1011           one of zlib or lzo.
1012
1013           This function depends on the feature "btrfs".  See also
1014           "$g->feature-available".
1015
1016       $g->btrfs_filesystem_resize ($mountpoint [, size => $size]);
1017           This command resizes a btrfs filesystem.
1018
1019           Note that unlike other resize calls, the filesystem has to be
1020           mounted and the parameter is the mountpoint not the device (this is
1021           a requirement of btrfs itself).
1022
1023           The optional parameters are:
1024
1025           "size"
1026               The new size (in bytes) of the filesystem.  If omitted, the
1027               filesystem is resized to the maximum size.
1028
1029           See also btrfs(8).
1030
1031           This function depends on the feature "btrfs".  See also
1032           "$g->feature-available".
1033
1034       @devices = $g->btrfs_filesystem_show ($device);
1035           Show all the devices where the filesystems in "device" is spanned
1036           over.
1037
1038           If not all the devices for the filesystems are present, then this
1039           function fails and the "errno" is set to "ENODEV".
1040
1041           This function depends on the feature "btrfs".  See also
1042           "$g->feature-available".
1043
1044       $g->btrfs_filesystem_sync ($fs);
1045           Force sync on the btrfs filesystem mounted at "fs".
1046
1047           This function depends on the feature "btrfs".  See also
1048           "$g->feature-available".
1049
1050       $g->btrfs_fsck ($device [, superblock => $superblock] [, repair =>
1051       $repair]);
1052           Used to check a btrfs filesystem, "device" is the device file where
1053           the filesystem is stored.
1054
1055           This function depends on the feature "btrfs".  See also
1056           "$g->feature-available".
1057
1058       $g->btrfs_image (\@source, $image [, compresslevel => $compresslevel]);
1059           This is used to create an image of a btrfs filesystem.  All data
1060           will be zeroed, but metadata and the like is preserved.
1061
1062           This function depends on the feature "btrfs".  See also
1063           "$g->feature-available".
1064
1065       $g->btrfs_qgroup_assign ($src, $dst, $path);
1066           Add qgroup "src" to parent qgroup "dst". This command can group
1067           several qgroups into a parent qgroup to share common limit.
1068
1069           This function depends on the feature "btrfs".  See also
1070           "$g->feature-available".
1071
1072       $g->btrfs_qgroup_create ($qgroupid, $subvolume);
1073           Create a quota group (qgroup) for subvolume at "subvolume".
1074
1075           This function depends on the feature "btrfs".  See also
1076           "$g->feature-available".
1077
1078       $g->btrfs_qgroup_destroy ($qgroupid, $subvolume);
1079           Destroy a quota group.
1080
1081           This function depends on the feature "btrfs".  See also
1082           "$g->feature-available".
1083
1084       $g->btrfs_qgroup_limit ($subvolume, $size);
1085           Limit the size of the subvolume with path "subvolume".
1086
1087           This function depends on the feature "btrfs".  See also
1088           "$g->feature-available".
1089
1090       $g->btrfs_qgroup_remove ($src, $dst, $path);
1091           Remove qgroup "src" from the parent qgroup "dst".
1092
1093           This function depends on the feature "btrfs".  See also
1094           "$g->feature-available".
1095
1096       @qgroups = $g->btrfs_qgroup_show ($path);
1097           Show all subvolume quota groups in a btrfs filesystem, including
1098           their usages.
1099
1100           This function depends on the feature "btrfs".  See also
1101           "$g->feature-available".
1102
1103       $g->btrfs_quota_enable ($fs, $enable);
1104           Enable or disable subvolume quota support for filesystem which
1105           contains "path".
1106
1107           This function depends on the feature "btrfs".  See also
1108           "$g->feature-available".
1109
1110       $g->btrfs_quota_rescan ($fs);
1111           Trash all qgroup numbers and scan the metadata again with the
1112           current config.
1113
1114           This function depends on the feature "btrfs".  See also
1115           "$g->feature-available".
1116
1117       $g->btrfs_replace ($srcdev, $targetdev, $mntpoint);
1118           Replace device of a btrfs filesystem. On a live filesystem,
1119           duplicate the data to the target device which is currently stored
1120           on the source device.  After completion of the operation, the
1121           source device is wiped out and removed from the filesystem.
1122
1123           The "targetdev" needs to be same size or larger than the "srcdev".
1124           Devices which are currently mounted are never allowed to be used as
1125           the "targetdev".
1126
1127           This function depends on the feature "btrfs".  See also
1128           "$g->feature-available".
1129
1130       $g->btrfs_rescue_chunk_recover ($device);
1131           Recover the chunk tree of btrfs filesystem by scanning the devices
1132           one by one.
1133
1134           This function depends on the feature "btrfs".  See also
1135           "$g->feature-available".
1136
1137       $g->btrfs_rescue_super_recover ($device);
1138           Recover bad superblocks from good copies.
1139
1140           This function depends on the feature "btrfs".  See also
1141           "$g->feature-available".
1142
1143       $g->btrfs_scrub_cancel ($path);
1144           Cancel a running scrub on a btrfs filesystem.
1145
1146           This function depends on the feature "btrfs".  See also
1147           "$g->feature-available".
1148
1149       $g->btrfs_scrub_resume ($path);
1150           Resume a previously canceled or interrupted scrub on a btrfs
1151           filesystem.
1152
1153           This function depends on the feature "btrfs".  See also
1154           "$g->feature-available".
1155
1156       $g->btrfs_scrub_start ($path);
1157           Reads all the data and metadata on the filesystem, and uses
1158           checksums and the duplicate copies from RAID storage to identify
1159           and repair any corrupt data.
1160
1161           This function depends on the feature "btrfs".  See also
1162           "$g->feature-available".
1163
1164       %status = $g->btrfs_scrub_status ($path);
1165           Show status of running or finished scrub on a btrfs filesystem.
1166
1167           This function depends on the feature "btrfs".  See also
1168           "$g->feature-available".
1169
1170       $g->btrfs_set_seeding ($device, $seeding);
1171           Enable or disable the seeding feature of a device that contains a
1172           btrfs filesystem.
1173
1174           This function depends on the feature "btrfs".  See also
1175           "$g->feature-available".
1176
1177       $g->btrfs_subvolume_create ($dest [, qgroupid => $qgroupid]);
1178           Create a btrfs subvolume.  The "dest" argument is the destination
1179           directory and the name of the subvolume, in the form
1180           /path/to/dest/name.  The optional parameter "qgroupid" represents
1181           the qgroup which the newly created subvolume will be added to.
1182
1183           This function depends on the feature "btrfs".  See also
1184           "$g->feature-available".
1185
1186       $g->btrfs_subvolume_create_opts ($dest [, qgroupid => $qgroupid]);
1187           This is an alias of "btrfs_subvolume_create".
1188
1189       $g->btrfs_subvolume_delete ($subvolume);
1190           Delete the named btrfs subvolume or snapshot.
1191
1192           This function depends on the feature "btrfs".  See also
1193           "$g->feature-available".
1194
1195       $id = $g->btrfs_subvolume_get_default ($fs);
1196           Get the default subvolume or snapshot of a filesystem mounted at
1197           "mountpoint".
1198
1199           This function depends on the feature "btrfs".  See also
1200           "$g->feature-available".
1201
1202       @subvolumes = $g->btrfs_subvolume_list ($fs);
1203           List the btrfs snapshots and subvolumes of the btrfs filesystem
1204           which is mounted at "fs".
1205
1206           This function depends on the feature "btrfs".  See also
1207           "$g->feature-available".
1208
1209       $g->btrfs_subvolume_set_default ($id, $fs);
1210           Set the subvolume of the btrfs filesystem "fs" which will be
1211           mounted by default.  See "$g->btrfs_subvolume_list" to get a list
1212           of subvolumes.
1213
1214           This function depends on the feature "btrfs".  See also
1215           "$g->feature-available".
1216
1217       %btrfssubvolumeinfo = $g->btrfs_subvolume_show ($subvolume);
1218           Return detailed information of the subvolume.
1219
1220           This function depends on the feature "btrfs".  See also
1221           "$g->feature-available".
1222
1223       $g->btrfs_subvolume_snapshot ($source, $dest [, ro => $ro] [, qgroupid
1224       => $qgroupid]);
1225           Create a snapshot of the btrfs subvolume "source".  The "dest"
1226           argument is the destination directory and the name of the snapshot,
1227           in the form /path/to/dest/name. By default the newly created
1228           snapshot is writable, if the value of optional parameter "ro" is
1229           true, then a readonly snapshot is created. The optional parameter
1230           "qgroupid" represents the qgroup which the newly created snapshot
1231           will be added to.
1232
1233           This function depends on the feature "btrfs".  See also
1234           "$g->feature-available".
1235
1236       $g->btrfs_subvolume_snapshot_opts ($source, $dest [, ro => $ro] [,
1237       qgroupid => $qgroupid]);
1238           This is an alias of "btrfs_subvolume_snapshot".
1239
1240       $g->btrfstune_enable_extended_inode_refs ($device);
1241           This will Enable extended inode refs.
1242
1243           This function depends on the feature "btrfs".  See also
1244           "$g->feature-available".
1245
1246       $g->btrfstune_enable_skinny_metadata_extent_refs ($device);
1247           This enable skinny metadata extent refs.
1248
1249           This function depends on the feature "btrfs".  See also
1250           "$g->feature-available".
1251
1252       $g->btrfstune_seeding ($device, $seeding);
1253           Enable seeding of a btrfs device, this will force a fs readonly so
1254           that you can use it to build other filesystems.
1255
1256           This function depends on the feature "btrfs".  See also
1257           "$g->feature-available".
1258
1259       $ptr = $g->c_pointer ();
1260           In non-C language bindings, this allows you to retrieve the
1261           underlying C pointer to the handle (ie. "$g->h *").  The purpose of
1262           this is to allow other libraries to interwork with libguestfs.
1263
1264       $canonical = $g->canonical_device_name ($device);
1265           This utility function is useful when displaying device names to the
1266           user.  It takes a number of irregular device names and returns them
1267           in a consistent format:
1268
1269           /dev/hdX
1270           /dev/vdX
1271               These are returned as /dev/sdX.  Note this works for device
1272               names and partition names.  This is approximately the reverse
1273               of the algorithm described in "BLOCK DEVICE NAMING" in
1274               guestfs(3).
1275
1276           /dev/mapper/VG-LV
1277           /dev/dm-N
1278               Converted to /dev/VG/LV form using "$g->lvm_canonical_lv_name".
1279
1280           Other strings are returned unmodified.
1281
1282       $cap = $g->cap_get_file ($path);
1283           This function returns the Linux capabilities attached to "path".
1284           The capabilities set is returned in text form (see cap_to_text(3)).
1285
1286           If no capabilities are attached to a file, an empty string is
1287           returned.
1288
1289           This function depends on the feature "linuxcaps".  See also
1290           "$g->feature-available".
1291
1292       $g->cap_set_file ($path, $cap);
1293           This function sets the Linux capabilities attached to "path".  The
1294           capabilities set "cap" should be passed in text form (see
1295           cap_from_text(3)).
1296
1297           This function depends on the feature "linuxcaps".  See also
1298           "$g->feature-available".
1299
1300       $rpath = $g->case_sensitive_path ($path);
1301           This can be used to resolve case insensitive paths on a filesystem
1302           which is case sensitive.  The use case is to resolve paths which
1303           you have read from Windows configuration files or the Windows
1304           Registry, to the true path.
1305
1306           The command handles a peculiarity of the Linux ntfs-3g filesystem
1307           driver (and probably others), which is that although the underlying
1308           filesystem is case-insensitive, the driver exports the filesystem
1309           to Linux as case-sensitive.
1310
1311           One consequence of this is that special directories such as
1312           C:\windows may appear as /WINDOWS or /windows (or other things)
1313           depending on the precise details of how they were created.  In
1314           Windows itself this would not be a problem.
1315
1316           Bug or feature?  You decide:
1317           <https://www.tuxera.com/community/ntfs-3g-faq/#posixfilenames1>
1318
1319           "$g->case_sensitive_path" attempts to resolve the true case of each
1320           element in the path. It will return a resolved path if either the
1321           full path or its parent directory exists. If the parent directory
1322           exists but the full path does not, the case of the parent directory
1323           will be correctly resolved, and the remainder appended unmodified.
1324           For example, if the file "/Windows/System32/netkvm.sys" exists:
1325
1326           "$g->case_sensitive_path" ("/windows/system32/netkvm.sys")
1327               "Windows/System32/netkvm.sys"
1328
1329           "$g->case_sensitive_path" ("/windows/system32/NoSuchFile")
1330               "Windows/System32/NoSuchFile"
1331
1332           "$g->case_sensitive_path" ("/windows/system33/netkvm.sys")
1333               ERROR
1334
1335           Note: Because of the above behaviour, "$g->case_sensitive_path"
1336           cannot be used to check for the existence of a file.
1337
1338           Note: This function does not handle drive names, backslashes etc.
1339
1340           See also "$g->realpath".
1341
1342       $content = $g->cat ($path);
1343           Return the contents of the file named "path".
1344
1345           Because, in C, this function returns a "char *", there is no way to
1346           differentiate between a "\0" character in a file and end of string.
1347           To handle binary files, use the "$g->read_file" or "$g->download"
1348           functions.
1349
1350       $checksum = $g->checksum ($csumtype, $path);
1351           This call computes the MD5, SHAx or CRC checksum of the file named
1352           "path".
1353
1354           The type of checksum to compute is given by the "csumtype"
1355           parameter which must have one of the following values:
1356
1357           "crc"
1358               Compute the cyclic redundancy check (CRC) specified by POSIX
1359               for the "cksum" command.
1360
1361           "md5"
1362               Compute the MD5 hash (using the md5sum(1) program).
1363
1364           "sha1"
1365               Compute the SHA1 hash (using the sha1sum(1) program).
1366
1367           "sha224"
1368               Compute the SHA224 hash (using the sha224sum(1) program).
1369
1370           "sha256"
1371               Compute the SHA256 hash (using the sha256sum(1) program).
1372
1373           "sha384"
1374               Compute the SHA384 hash (using the sha384sum(1) program).
1375
1376           "sha512"
1377               Compute the SHA512 hash (using the sha512sum(1) program).
1378
1379           The checksum is returned as a printable string.
1380
1381           To get the checksum for a device, use "$g->checksum_device".
1382
1383           To get the checksums for many files, use "$g->checksums_out".
1384
1385       $checksum = $g->checksum_device ($csumtype, $device);
1386           This call computes the MD5, SHAx or CRC checksum of the contents of
1387           the device named "device".  For the types of checksums supported
1388           see the "$g->checksum" command.
1389
1390       $g->checksums_out ($csumtype, $directory, $sumsfile);
1391           This command computes the checksums of all regular files in
1392           directory and then emits a list of those checksums to the local
1393           output file "sumsfile".
1394
1395           This can be used for verifying the integrity of a virtual machine.
1396           However to be properly secure you should pay attention to the
1397           output of the checksum command (it uses the ones from GNU
1398           coreutils).  In particular when the filename is not printable,
1399           coreutils uses a special backslash syntax.  For more information,
1400           see the GNU coreutils info file.
1401
1402       $g->chmod ($mode, $path);
1403           Change the mode (permissions) of "path" to "mode".  Only numeric
1404           modes are supported.
1405
1406           Note: When using this command from guestfish, "mode" by default
1407           would be decimal, unless you prefix it with 0 to get octal, ie. use
1408           0700 not 700.
1409
1410           The mode actually set is affected by the umask.
1411
1412       $g->chown ($owner, $group, $path);
1413           Change the file owner to "owner" and group to "group".
1414
1415           Only numeric uid and gid are supported.  If you want to use names,
1416           you will need to locate and parse the password file yourself
1417           (Augeas support makes this relatively easy).
1418
1419       $count = $g->clear_backend_setting ($name);
1420           If there is a backend setting string matching "name" or beginning
1421           with "name=", then that string is removed from the backend
1422           settings.
1423
1424           This call returns the number of strings which were removed (which
1425           may be 0, 1 or greater than 1).
1426
1427           See "BACKEND" in guestfs(3), "BACKEND SETTINGS" in guestfs(3).
1428
1429       $output = $g->command (\@arguments);
1430           This call runs a command from the guest filesystem.  The filesystem
1431           must be mounted, and must contain a compatible operating system
1432           (ie. something Linux, with the same or compatible processor
1433           architecture).
1434
1435           The single parameter is an argv-style list of arguments.  The first
1436           element is the name of the program to run.  Subsequent elements are
1437           parameters.  The list must be non-empty (ie. must contain a program
1438           name).  Note that the command runs directly, and is not invoked via
1439           the shell (see "$g->sh").
1440
1441           The return value is anything printed to stdout by the command.
1442
1443           If the command returns a non-zero exit status, then this function
1444           returns an error message.  The error message string is the content
1445           of stderr from the command.
1446
1447           The $PATH environment variable will contain at least /usr/bin and
1448           /bin.  If you require a program from another location, you should
1449           provide the full path in the first parameter.
1450
1451           Shared libraries and data files required by the program must be
1452           available on filesystems which are mounted in the correct places.
1453           It is the callerXs responsibility to ensure all filesystems that
1454           are needed are mounted at the right locations.
1455
1456           Because of the message protocol, there is a transfer limit of
1457           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
1458           guestfs(3).
1459
1460       @lines = $g->command_lines (\@arguments);
1461           This is the same as "$g->command", but splits the result into a
1462           list of lines.
1463
1464           See also: "$g->sh_lines"
1465
1466           Because of the message protocol, there is a transfer limit of
1467           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
1468           guestfs(3).
1469
1470       $g->compress_device_out ($ctype, $device, $zdevice [, level =>
1471       $level]);
1472           This command compresses "device" and writes it out to the local
1473           file "zdevice".
1474
1475           The "ctype" and optional "level" parameters have the same meaning
1476           as in "$g->compress_out".
1477
1478       $g->compress_out ($ctype, $file, $zfile [, level => $level]);
1479           This command compresses file and writes it out to the local file
1480           zfile.
1481
1482           The compression program used is controlled by the "ctype"
1483           parameter.  Currently this includes: "compress", "gzip", "bzip2",
1484           "xz" or "lzop".  Some compression types may not be supported by
1485           particular builds of libguestfs, in which case you will get an
1486           error containing the substring "not supported".
1487
1488           The optional "level" parameter controls compression level.  The
1489           meaning and default for this parameter depends on the compression
1490           program being used.
1491
1492       $g->config ($hvparam, $hvvalue);
1493           This can be used to add arbitrary hypervisor parameters of the form
1494           -param value.  Actually itXs not quite arbitrary - we prevent you
1495           from setting some parameters which would interfere with parameters
1496           that we use.
1497
1498           The first character of "hvparam" string must be a "-" (dash).
1499
1500           "hvvalue" can be NULL.
1501
1502       $g->copy_attributes ($src, $dest [, all => $all] [, mode => $mode] [,
1503       xattributes => $xattributes] [, ownership => $ownership]);
1504           Copy the attributes of a path (which can be a file or a directory)
1505           to another path.
1506
1507           By default no attribute is copied, so make sure to specify any (or
1508           "all" to copy everything).
1509
1510           The optional arguments specify which attributes can be copied:
1511
1512           "mode"
1513               Copy part of the file mode from "source" to "destination". Only
1514               the UNIX permissions and the sticky/setuid/setgid bits can be
1515               copied.
1516
1517           "xattributes"
1518               Copy the Linux extended attributes (xattrs) from "source" to
1519               "destination".  This flag does nothing if the linuxxattrs
1520               feature is not available (see "$g->feature_available").
1521
1522           "ownership"
1523               Copy the owner uid and the group gid of "source" to
1524               "destination".
1525
1526           "all"
1527               Copy all the attributes from "source" to "destination".
1528               Enabling it enables all the other flags, if they are not
1529               specified already.
1530
1531       $g->copy_device_to_device ($src, $dest [, srcoffset => $srcoffset] [,
1532       destoffset => $destoffset] [, size => $size] [, sparse => $sparse] [,
1533       append => $append]);
1534           The four calls "$g->copy_device_to_device",
1535           "$g->copy_device_to_file", "$g->copy_file_to_device", and
1536           "$g->copy_file_to_file" let you copy from a source (device|file) to
1537           a destination (device|file).
1538
1539           Partial copies can be made since you can specify optionally the
1540           source offset, destination offset and size to copy.  These values
1541           are all specified in bytes.  If not given, the offsets both default
1542           to zero, and the size defaults to copying as much as possible until
1543           we hit the end of the source.
1544
1545           The source and destination may be the same object.  However
1546           overlapping regions may not be copied correctly.
1547
1548           If the destination is a file, it is created if required.  If the
1549           destination file is not large enough, it is extended.
1550
1551           If the destination is a file and the "append" flag is not set, then
1552           the destination file is truncated.  If the "append" flag is set,
1553           then the copy appends to the destination file.  The "append" flag
1554           currently cannot be set for devices.
1555
1556           If the "sparse" flag is true then the call avoids writing blocks
1557           that contain only zeroes, which can help in some situations where
1558           the backing disk is thin-provisioned.  Note that unless the target
1559           is already zeroed, using this option will result in incorrect
1560           copying.
1561
1562       $g->copy_device_to_file ($src, $dest [, srcoffset => $srcoffset] [,
1563       destoffset => $destoffset] [, size => $size] [, sparse => $sparse] [,
1564       append => $append]);
1565           See "$g->copy_device_to_device" for a general overview of this
1566           call.
1567
1568       $g->copy_file_to_device ($src, $dest [, srcoffset => $srcoffset] [,
1569       destoffset => $destoffset] [, size => $size] [, sparse => $sparse] [,
1570       append => $append]);
1571           See "$g->copy_device_to_device" for a general overview of this
1572           call.
1573
1574       $g->copy_file_to_file ($src, $dest [, srcoffset => $srcoffset] [,
1575       destoffset => $destoffset] [, size => $size] [, sparse => $sparse] [,
1576       append => $append]);
1577           See "$g->copy_device_to_device" for a general overview of this
1578           call.
1579
1580           This is not the function you want for copying files.  This is for
1581           copying blocks within existing files.  See "$g->cp", "$g->cp_a" and
1582           "$g->mv" for general file copying and moving functions.
1583
1584       $g->copy_in ($localpath, $remotedir);
1585           "$g->copy_in" copies local files or directories recursively into
1586           the disk image, placing them in the directory called "remotedir"
1587           (which must exist).
1588
1589           Wildcards cannot be used.
1590
1591       $g->copy_out ($remotepath, $localdir);
1592           "$g->copy_out" copies remote files or directories recursively out
1593           of the disk image, placing them on the host disk in a local
1594           directory called "localdir" (which must exist).
1595
1596           To download to the current directory, use "." as in:
1597
1598            C<$g-E<gt>copy_out> /home .
1599
1600           Wildcards cannot be used.
1601
1602       $g->copy_size ($src, $dest, $size);
1603           This command copies exactly "size" bytes from one source device or
1604           file "src" to another destination device or file "dest".
1605
1606           Note this will fail if the source is too short or if the
1607           destination is not large enough.
1608
1609           This function is deprecated.  In new code, use the
1610           "copy_device_to_device" call instead.
1611
1612           Deprecated functions will not be removed from the API, but the fact
1613           that they are deprecated indicates that there are problems with
1614           correct use of these functions.
1615
1616       $g->cp ($src, $dest);
1617           This copies a file from "src" to "dest" where "dest" is either a
1618           destination filename or destination directory.
1619
1620       $g->cp_a ($src, $dest);
1621           This copies a file or directory from "src" to "dest" recursively
1622           using the "cp -a" command.
1623
1624       $g->cp_r ($src, $dest);
1625           This copies a file or directory from "src" to "dest" recursively
1626           using the "cp -rP" command.
1627
1628           Most users should use "$g->cp_a" instead.  This command is useful
1629           when you don't want to preserve permissions, because the target
1630           filesystem does not support it (primarily when writing to DOS FAT
1631           filesystems).
1632
1633       $g->cpio_out ($directory, $cpiofile [, format => $format]);
1634           This command packs the contents of directory and downloads it to
1635           local file "cpiofile".
1636
1637           The optional "format" parameter can be used to select the format.
1638           Only the following formats are currently permitted:
1639
1640           "newc"
1641               New (SVR4) portable format.  This format happens to be
1642               compatible with the cpio-like format used by the Linux kernel
1643               for initramfs.
1644
1645               This is the default format.
1646
1647           "crc"
1648               New (SVR4) portable format with a checksum.
1649
1650       $g->cryptsetup_close ($device);
1651           This closes an encrypted device that was created earlier by
1652           "$g->cryptsetup_open".  The "device" parameter must be the name of
1653           the mapping device (ie. /dev/mapper/mapname) and not the name of
1654           the underlying block device.
1655
1656           This function depends on the feature "luks".  See also
1657           "$g->feature-available".
1658
1659       $g->cryptsetup_open ($device, $key, $mapname [, readonly => $readonly]
1660       [, crypttype => $crypttype]);
1661           This command opens a block device which has been encrypted
1662           according to the Linux Unified Key Setup (LUKS) standard, Windows
1663           BitLocker, or some other types.
1664
1665           "device" is the encrypted block device or partition.
1666
1667           The caller must supply one of the keys associated with the
1668           encrypted block device, in the "key" parameter.
1669
1670           This creates a new block device called /dev/mapper/mapname.  Reads
1671           and writes to this block device are decrypted from and encrypted to
1672           the underlying "device" respectively.
1673
1674           "mapname" cannot be "control" because that name is reserved by
1675           device-mapper.
1676
1677           If the optional "crypttype" parameter is not present then
1678           libguestfs tries to guess the correct type (for example LUKS or
1679           BitLocker).  However you can override this by specifying one of the
1680           following types:
1681
1682           "luks"
1683               A Linux LUKS device.
1684
1685           "bitlk"
1686               A Windows BitLocker device.
1687
1688           The optional "readonly" flag, if set to true, creates a read-only
1689           mapping.
1690
1691           If this block device contains LVM volume groups, then calling
1692           "$g->lvm_scan" with the "activate" parameter "true" will make them
1693           visible.
1694
1695           Use "$g->list_dm_devices" to list all device mapper devices.
1696
1697           This function depends on the feature "luks".  See also
1698           "$g->feature-available".
1699
1700       $g->dd ($src, $dest);
1701           This command copies from one source device or file "src" to another
1702           destination device or file "dest".  Normally you would use this to
1703           copy to or from a device or partition, for example to duplicate a
1704           filesystem.
1705
1706           If the destination is a device, it must be as large or larger than
1707           the source file or device, otherwise the copy will fail.  This
1708           command cannot do partial copies (see "$g->copy_device_to_device").
1709
1710           This function is deprecated.  In new code, use the
1711           "copy_device_to_device" call instead.
1712
1713           Deprecated functions will not be removed from the API, but the fact
1714           that they are deprecated indicates that there are problems with
1715           correct use of these functions.
1716
1717       $index = $g->device_index ($device);
1718           This function takes a device name (eg. "/dev/sdb") and returns the
1719           index of the device in the list of devices.
1720
1721           Index numbers start from 0.  The named device must exist, for
1722           example as a string returned from "$g->list_devices".
1723
1724           See also "$g->list_devices", "$g->part_to_dev".
1725
1726       $output = $g->df ();
1727           This command runs the df(1) command to report disk space used.
1728
1729           This command is mostly useful for interactive sessions.  It is not
1730           intended that you try to parse the output string.  Use
1731           "$g->statvfs" from programs.
1732
1733       $output = $g->df_h ();
1734           This command runs the "df -h" command to report disk space used in
1735           human-readable format.
1736
1737           This command is mostly useful for interactive sessions.  It is not
1738           intended that you try to parse the output string.  Use
1739           "$g->statvfs" from programs.
1740
1741       $g->disk_create ($filename, $format, $size [, backingfile =>
1742       $backingfile] [, backingformat => $backingformat] [, preallocation =>
1743       $preallocation] [, compat => $compat] [, clustersize => $clustersize]);
1744           Create a blank disk image called filename (a host file) with format
1745           "format" (usually "raw" or "qcow2").  The size is "size" bytes.
1746
1747           If used with the optional "backingfile" parameter, then a snapshot
1748           is created on top of the backing file.  In this case, "size" must
1749           be passed as "-1".  The size of the snapshot is the same as the
1750           size of the backing file, which is discovered automatically.  You
1751           are encouraged to also pass "backingformat" to describe the format
1752           of "backingfile".
1753
1754           If filename refers to a block device, then the device is formatted.
1755           The "size" is ignored since block devices have an intrinsic size.
1756
1757           The other optional parameters are:
1758
1759           "preallocation"
1760               If format is "raw", then this can be either "off" (or "sparse")
1761               or "full" to create a sparse or fully allocated file
1762               respectively.  The default is "off".
1763
1764               If format is "qcow2", then this can be "off" (or "sparse"),
1765               "metadata" or "full".  Preallocating metadata can be faster
1766               when doing lots of writes, but uses more space.  The default is
1767               "off".
1768
1769           "compat"
1770               "qcow2" only: Pass the string 1.1 to use the advanced qcow2
1771               format supported by qemu X 1.1.
1772
1773           "clustersize"
1774               "qcow2" only: Change the qcow2 cluster size.  The default is
1775               65536 (bytes) and this setting may be any power of two between
1776               512 and 2097152.
1777
1778           Note that this call does not add the new disk to the handle.  You
1779           may need to call "$g->add_drive_opts" separately.
1780
1781       $format = $g->disk_format ($filename);
1782           Detect and return the format of the disk image called filename.
1783           filename can also be a host device, etc.  If the format of the
1784           image could not be detected, then "unknown" is returned.
1785
1786           Note that detecting the disk format can be insecure under some
1787           circumstances.  See "CVE-2010-3851" in guestfs(3).
1788
1789           See also: "DISK IMAGE FORMATS" in guestfs(3)
1790
1791       $backingfile = $g->disk_has_backing_file ($filename);
1792           Detect and return whether the disk image filename has a backing
1793           file.
1794
1795           Note that detecting disk features can be insecure under some
1796           circumstances.  See "CVE-2010-3851" in guestfs(3).
1797
1798       $size = $g->disk_virtual_size ($filename);
1799           Detect and return the virtual size in bytes of the disk image
1800           called filename.
1801
1802           Note that detecting disk features can be insecure under some
1803           circumstances.  See "CVE-2010-3851" in guestfs(3).
1804
1805       $kmsgs = $g->dmesg ();
1806           This returns the kernel messages (dmesg(1) output) from the guest
1807           kernel.  This is sometimes useful for extended debugging of
1808           problems.
1809
1810           Another way to get the same information is to enable verbose
1811           messages with "$g->set_verbose" or by setting the environment
1812           variable "LIBGUESTFS_DEBUG=1" before running the program.
1813
1814       $g->download ($remotefilename, $filename);
1815           Download file remotefilename and save it as filename on the local
1816           machine.
1817
1818           filename can also be a named pipe.
1819
1820           See also "$g->upload", "$g->cat".
1821
1822       $g->download_blocks ($device, $start, $stop, $filename [, unallocated
1823       => $unallocated]);
1824           Download the data units from start address to stop from the disk
1825           partition (eg. /dev/sda1) and save them as filename on the local
1826           machine.
1827
1828           The use of this API on sparse disk image formats such as QCOW, may
1829           result in large zero-filled files downloaded on the host.
1830
1831           The size of a data unit varies across filesystem implementations.
1832           On NTFS filesystems data units are referred as clusters while on
1833           ExtX ones they are referred as fragments.
1834
1835           If the optional "unallocated" flag is true (default is false), only
1836           the unallocated blocks will be extracted.  This is useful to detect
1837           hidden data or to retrieve deleted files which data units have not
1838           been overwritten yet.
1839
1840           This function depends on the feature "sleuthkit".  See also
1841           "$g->feature-available".
1842
1843       $g->download_inode ($device, $inode, $filename);
1844           Download a file given its inode from the disk partition (eg.
1845           /dev/sda1) and save it as filename on the local machine.
1846
1847           It is not required to mount the disk to run this command.
1848
1849           The command is capable of downloading deleted or inaccessible
1850           files.
1851
1852           This function depends on the feature "sleuthkit".  See also
1853           "$g->feature-available".
1854
1855       $g->download_offset ($remotefilename, $filename, $offset, $size);
1856           Download file remotefilename and save it as filename on the local
1857           machine.
1858
1859           remotefilename is read for "size" bytes starting at "offset" (this
1860           region must be within the file or device).
1861
1862           Note that there is no limit on the amount of data that can be
1863           downloaded with this call, unlike with "$g->pread", and this call
1864           always reads the full amount unless an error occurs.
1865
1866           See also "$g->download", "$g->pread".
1867
1868       $g->drop_caches ($whattodrop);
1869           This instructs the guest kernel to drop its page cache, and/or
1870           dentries and inode caches.  The parameter "whattodrop" tells the
1871           kernel what precisely to drop, see
1872           <https://linux-mm.org/Drop_Caches>
1873
1874           Setting "whattodrop" to 3 should drop everything.
1875
1876           This automatically calls sync(2) before the operation, so that the
1877           maximum guest memory is freed.
1878
1879       $sizekb = $g->du ($path);
1880           This command runs the "du -s" command to estimate file space usage
1881           for "path".
1882
1883           "path" can be a file or a directory.  If "path" is a directory then
1884           the estimate includes the contents of the directory and all
1885           subdirectories (recursively).
1886
1887           The result is the estimated size in kilobytes (ie. units of 1024
1888           bytes).
1889
1890       $g->e2fsck ($device [, correct => $correct] [, forceall => $forceall]);
1891           This runs the ext2/ext3 filesystem checker on "device".  It can
1892           take the following optional arguments:
1893
1894           "correct"
1895               Automatically repair the file system. This option will cause
1896               e2fsck to automatically fix any filesystem problems that can be
1897               safely fixed without human intervention.
1898
1899               This option may not be specified at the same time as the
1900               "forceall" option.
1901
1902           "forceall"
1903               Assume an answer of XyesX to all questions; allows e2fsck to be
1904               used non-interactively.
1905
1906               This option may not be specified at the same time as the
1907               "correct" option.
1908
1909       $g->e2fsck_f ($device);
1910           This runs "e2fsck -p -f device", ie. runs the ext2/ext3 filesystem
1911           checker on "device", noninteractively (-p), even if the filesystem
1912           appears to be clean (-f).
1913
1914           This function is deprecated.  In new code, use the "e2fsck" call
1915           instead.
1916
1917           Deprecated functions will not be removed from the API, but the fact
1918           that they are deprecated indicates that there are problems with
1919           correct use of these functions.
1920
1921       $output = $g->echo_daemon (\@words);
1922           This command concatenates the list of "words" passed with single
1923           spaces between them and returns the resulting string.
1924
1925           You can use this command to test the connection through to the
1926           daemon.
1927
1928           See also "$g->ping_daemon".
1929
1930       @lines = $g->egrep ($regex, $path);
1931           This calls the external egrep(1) program and returns the matching
1932           lines.
1933
1934           Because of the message protocol, there is a transfer limit of
1935           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
1936           guestfs(3).
1937
1938           This function is deprecated.  In new code, use the "grep" call
1939           instead.
1940
1941           Deprecated functions will not be removed from the API, but the fact
1942           that they are deprecated indicates that there are problems with
1943           correct use of these functions.
1944
1945       @lines = $g->egrepi ($regex, $path);
1946           This calls the external "egrep -i" program and returns the matching
1947           lines.
1948
1949           Because of the message protocol, there is a transfer limit of
1950           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
1951           guestfs(3).
1952
1953           This function is deprecated.  In new code, use the "grep" call
1954           instead.
1955
1956           Deprecated functions will not be removed from the API, but the fact
1957           that they are deprecated indicates that there are problems with
1958           correct use of these functions.
1959
1960       $equality = $g->equal ($file1, $file2);
1961           This compares the two files file1 and file2 and returns true if
1962           their content is exactly equal, or false otherwise.
1963
1964           The external cmp(1) program is used for the comparison.
1965
1966       $existsflag = $g->exists ($path);
1967           This returns "true" if and only if there is a file, directory (or
1968           anything) with the given "path" name.
1969
1970           See also "$g->is_file", "$g->is_dir", "$g->stat".
1971
1972       $g->extlinux ($directory);
1973           Install the SYSLINUX bootloader on the device mounted at directory.
1974           Unlike "$g->syslinux" which requires a FAT filesystem, this can be
1975           used on an ext2/3/4 or btrfs filesystem.
1976
1977           The directory parameter can be either a mountpoint, or a directory
1978           within the mountpoint.
1979
1980           You also have to mark the partition as "active"
1981           ("$g->part_set_bootable") and a Master Boot Record must be
1982           installed (eg. using "$g->pwrite_device") on the first sector of
1983           the whole disk.  The SYSLINUX package comes with some suitable
1984           Master Boot Records.  See the extlinux(1) man page for further
1985           information.
1986
1987           Additional configuration can be supplied to SYSLINUX by placing a
1988           file called extlinux.conf on the filesystem under directory.  For
1989           further information about the contents of this file, see
1990           extlinux(1).
1991
1992           See also "$g->syslinux".
1993
1994           This function depends on the feature "extlinux".  See also
1995           "$g->feature-available".
1996
1997       $g->f2fs_expand ($device);
1998           This expands a f2fs filesystem to match the size of the underlying
1999           device.
2000
2001           This function depends on the feature "f2fs".  See also
2002           "$g->feature-available".
2003
2004       $g->fallocate ($path, $len);
2005           This command preallocates a file (containing zero bytes) named
2006           "path" of size "len" bytes.  If the file exists already, it is
2007           overwritten.
2008
2009           Do not confuse this with the guestfish-specific "alloc" command
2010           which allocates a file in the host and attaches it as a device.
2011
2012           This function is deprecated.  In new code, use the "fallocate64"
2013           call instead.
2014
2015           Deprecated functions will not be removed from the API, but the fact
2016           that they are deprecated indicates that there are problems with
2017           correct use of these functions.
2018
2019       $g->fallocate64 ($path, $len);
2020           This command preallocates a file (containing zero bytes) named
2021           "path" of size "len" bytes.  If the file exists already, it is
2022           overwritten.
2023
2024           Note that this call allocates disk blocks for the file.  To create
2025           a sparse file use "$g->truncate_size" instead.
2026
2027           The deprecated call "$g->fallocate" does the same, but owing to an
2028           oversight it only allowed 30 bit lengths to be specified,
2029           effectively limiting the maximum size of files created through that
2030           call to 1GB.
2031
2032           Do not confuse this with the guestfish-specific "alloc" and
2033           "sparse" commands which create a file in the host and attach it as
2034           a device.
2035
2036       $isavailable = $g->feature_available (\@groups);
2037           This is the same as "$g->available", but unlike that call it
2038           returns a simple true/false boolean result, instead of throwing an
2039           exception if a feature is not found.  For other documentation see
2040           "$g->available".
2041
2042       @lines = $g->fgrep ($pattern, $path);
2043           This calls the external fgrep(1) program and returns the matching
2044           lines.
2045
2046           Because of the message protocol, there is a transfer limit of
2047           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
2048           guestfs(3).
2049
2050           This function is deprecated.  In new code, use the "grep" call
2051           instead.
2052
2053           Deprecated functions will not be removed from the API, but the fact
2054           that they are deprecated indicates that there are problems with
2055           correct use of these functions.
2056
2057       @lines = $g->fgrepi ($pattern, $path);
2058           This calls the external "fgrep -i" program and returns the matching
2059           lines.
2060
2061           Because of the message protocol, there is a transfer limit of
2062           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
2063           guestfs(3).
2064
2065           This function is deprecated.  In new code, use the "grep" call
2066           instead.
2067
2068           Deprecated functions will not be removed from the API, but the fact
2069           that they are deprecated indicates that there are problems with
2070           correct use of these functions.
2071
2072       $description = $g->file ($path);
2073           This call uses the standard file(1) command to determine the type
2074           or contents of the file.
2075
2076           This call will also transparently look inside various types of
2077           compressed file.
2078
2079           The exact command which runs is "file -zb path".  Note in
2080           particular that the filename is not prepended to the output (the -b
2081           option).
2082
2083           The output depends on the output of the underlying file(1) command
2084           and it can change in future in ways beyond our control.  In other
2085           words, the output is not guaranteed by the ABI.
2086
2087           See also: file(1), "$g->vfs_type", "$g->lstat", "$g->is_file",
2088           "$g->is_blockdev" (etc), "$g->is_zero".
2089
2090       $arch = $g->file_architecture ($filename);
2091           This detects the architecture of the binary filename, and returns
2092           it if known.
2093
2094           Currently defined architectures are:
2095
2096           "aarch64"
2097               64 bit ARM.
2098
2099           "arm"
2100               32 bit ARM.
2101
2102           "i386"
2103               This string is returned for all 32 bit i386, i486, i586, i686
2104               binaries irrespective of the precise processor requirements of
2105               the binary.
2106
2107           "ia64"
2108               Intel Itanium.
2109
2110           "ppc"
2111               32 bit Power PC.
2112
2113           "ppc64"
2114               64 bit Power PC (big endian).
2115
2116           "ppc64le"
2117               64 bit Power PC (little endian).
2118
2119           "riscv32"
2120           "riscv64"
2121           "riscv128"
2122               RISC-V 32-, 64- or 128-bit variants.
2123
2124           "s390"
2125               31 bit IBM S/390.
2126
2127           "s390x"
2128               64 bit IBM S/390.
2129
2130           "sparc"
2131               32 bit SPARC.
2132
2133           "sparc64"
2134               64 bit SPARC V9 and above.
2135
2136           "x86_64"
2137               64 bit x86-64.
2138
2139           Libguestfs may return other architecture strings in future.
2140
2141           The function works on at least the following types of files:
2142
2143           •   many types of Un*x and Linux binary
2144
2145           •   many types of Un*x and Linux shared library
2146
2147           •   Windows Win32 and Win64 binaries
2148
2149           •   Windows Win32 and Win64 DLLs
2150
2151               Win32 binaries and DLLs return "i386".
2152
2153               Win64 binaries and DLLs return "x86_64".
2154
2155           •   Linux kernel modules
2156
2157           •   Linux new-style initrd images
2158
2159           •   some non-x86 Linux vmlinuz kernels
2160
2161           What it can't do currently:
2162
2163           •   static libraries (libfoo.a)
2164
2165           •   Linux old-style initrd as compressed ext2 filesystem (RHEL 3)
2166
2167           •   x86 Linux vmlinuz kernels
2168
2169               x86 vmlinuz images (bzImage format) consist of a mix of 16-,
2170               32- and compressed code, and are horribly hard to unpack.  If
2171               you want to find the architecture of a kernel, use the
2172               architecture of the associated initrd or kernel module(s)
2173               instead.
2174
2175       $size = $g->filesize ($file);
2176           This command returns the size of file in bytes.
2177
2178           To get other stats about a file, use "$g->stat", "$g->lstat",
2179           "$g->is_dir", "$g->is_file" etc.  To get the size of block devices,
2180           use "$g->blockdev_getsize64".
2181
2182       $fsavail = $g->filesystem_available ($filesystem);
2183           Check whether libguestfs supports the named filesystem.  The
2184           argument "filesystem" is a filesystem name, such as "ext3".
2185
2186           You must call "$g->launch" before using this command.
2187
2188           This is mainly useful as a negative test.  If this returns true, it
2189           doesn't mean that a particular filesystem can be created or
2190           mounted, since filesystems can fail for other reasons such as it
2191           being a later version of the filesystem, or having incompatible
2192           features, or lacking the right mkfs.<fs> tool.
2193
2194           See also "$g->available", "$g->feature_available", "AVAILABILITY"
2195           in guestfs(3).
2196
2197       @dirents = $g->filesystem_walk ($device);
2198           Walk through the internal structures of a disk partition (eg.
2199           /dev/sda1) in order to return a list of all the files and
2200           directories stored within.
2201
2202           It is not necessary to mount the disk partition to run this
2203           command.
2204
2205           All entries in the filesystem are returned. This function can list
2206           deleted or unaccessible files. The entries are not sorted.
2207
2208           The "tsk_dirent" structure contains the following fields.
2209
2210           "tsk_inode"
2211               Filesystem reference number of the node. It might be 0 if the
2212               node has been deleted.
2213
2214           "tsk_type"
2215               Basic file type information.  See below for a detailed list of
2216               values.
2217
2218           "tsk_size"
2219               File size in bytes. It might be "-1" if the node has been
2220               deleted.
2221
2222           "tsk_name"
2223               The file path relative to its directory.
2224
2225           "tsk_flags"
2226               Bitfield containing extra information regarding the entry.  It
2227               contains the logical OR of the following values:
2228
2229               0x0001
2230                   If set to 1, the file is allocated and visible within the
2231                   filesystem.  Otherwise, the file has been deleted.  Under
2232                   certain circumstances, the function "download_inode" can be
2233                   used to recover deleted files.
2234
2235               0x0002
2236                   Filesystem such as NTFS and Ext2 or greater, separate the
2237                   file name from the metadata structure.  The bit is set to 1
2238                   when the file name is in an unallocated state and the
2239                   metadata structure is in an allocated one.  This generally
2240                   implies the metadata has been reallocated to a new file.
2241                   Therefore, information such as file type, file size,
2242                   timestamps, number of links and symlink target might not
2243                   correspond with the ones of the original deleted entry.
2244
2245               0x0004
2246                   The bit is set to 1 when the file is compressed using
2247                   filesystem native compression support (NTFS). The API is
2248                   not able to detect application level compression.
2249
2250           "tsk_atime_sec"
2251           "tsk_atime_nsec"
2252           "tsk_mtime_sec"
2253           "tsk_mtime_nsec"
2254           "tsk_ctime_sec"
2255           "tsk_ctime_nsec"
2256           "tsk_crtime_sec"
2257           "tsk_crtime_nsec"
2258               Respectively, access, modification, last status change and
2259               creation time in Unix format in seconds and nanoseconds.
2260
2261           "tsk_nlink"
2262               Number of file names pointing to this entry.
2263
2264           "tsk_link"
2265               If the entry is a symbolic link, this field will contain the
2266               path to the target file.
2267
2268           The "tsk_type" field will contain one of the following characters:
2269
2270           'b' Block special
2271
2272           'c' Char special
2273
2274           'd' Directory
2275
2276           'f' FIFO (named pipe)
2277
2278           'l' Symbolic link
2279
2280           'r' Regular file
2281
2282           's' Socket
2283
2284           'h' Shadow inode (Solaris)
2285
2286           'w' Whiteout inode (BSD)
2287
2288           'u' Unknown file type
2289
2290           This function depends on the feature "libtsk".  See also
2291           "$g->feature-available".
2292
2293       $g->fill ($c, $len, $path);
2294           This command creates a new file called "path".  The initial content
2295           of the file is "len" octets of "c", where "c" must be a number in
2296           the range "[0..255]".
2297
2298           To fill a file with zero bytes (sparsely), it is much more
2299           efficient to use "$g->truncate_size".  To create a file with a
2300           pattern of repeating bytes use "$g->fill_pattern".
2301
2302       $g->fill_dir ($dir, $nr);
2303           This function, useful for testing filesystems, creates "nr" empty
2304           files in the directory "dir" with names 00000000 through "nr-1"
2305           (ie. each file name is 8 digits long padded with zeroes).
2306
2307       $g->fill_pattern ($pattern, $len, $path);
2308           This function is like "$g->fill" except that it creates a new file
2309           of length "len" containing the repeating pattern of bytes in
2310           "pattern".  The pattern is truncated if necessary to ensure the
2311           length of the file is exactly "len" bytes.
2312
2313       @names = $g->find ($directory);
2314           This command lists out all files and directories, recursively,
2315           starting at directory.  It is essentially equivalent to running the
2316           shell command "find directory -print" but some post-processing
2317           happens on the output, described below.
2318
2319           This returns a list of strings without any prefix.  Thus if the
2320           directory structure was:
2321
2322            /tmp/a
2323            /tmp/b
2324            /tmp/c/d
2325
2326           then the returned list from "$g->find" /tmp would be 4 elements:
2327
2328            a
2329            b
2330            c
2331            c/d
2332
2333           If directory is not a directory, then this command returns an
2334           error.
2335
2336           The returned list is sorted.
2337
2338       $g->find0 ($directory, $files);
2339           This command lists out all files and directories, recursively,
2340           starting at directory, placing the resulting list in the external
2341           file called files.
2342
2343           This command works the same way as "$g->find" with the following
2344           exceptions:
2345
2346           •   The resulting list is written to an external file.
2347
2348           •   Items (filenames) in the result are separated by "\0"
2349               characters.  See find(1) option -print0.
2350
2351           •   The result list is not sorted.
2352
2353       @dirents = $g->find_inode ($device, $inode);
2354           Searches all the entries associated with the given inode.
2355
2356           For each entry, a "tsk_dirent" structure is returned.  See
2357           "filesystem_walk" for more information about "tsk_dirent"
2358           structures.
2359
2360           This function depends on the feature "libtsk".  See also
2361           "$g->feature-available".
2362
2363       $device = $g->findfs_label ($label);
2364           This command searches the filesystems and returns the one which has
2365           the given label.  An error is returned if no such filesystem can be
2366           found.
2367
2368           To find the label of a filesystem, use "$g->vfs_label".
2369
2370       $device = $g->findfs_uuid ($uuid);
2371           This command searches the filesystems and returns the one which has
2372           the given UUID.  An error is returned if no such filesystem can be
2373           found.
2374
2375           To find the UUID of a filesystem, use "$g->vfs_uuid".
2376
2377       $status = $g->fsck ($fstype, $device);
2378           This runs the filesystem checker (fsck) on "device" which should
2379           have filesystem type "fstype".
2380
2381           The returned integer is the status.  See fsck(8) for the list of
2382           status codes from "fsck".
2383
2384           Notes:
2385
2386           •   Multiple status codes can be summed together.
2387
2388           •   A non-zero return code can mean "success", for example if
2389               errors have been corrected on the filesystem.
2390
2391           •   Checking or repairing NTFS volumes is not supported (by linux-
2392               ntfs).
2393
2394           This command is entirely equivalent to running "fsck -a -t fstype
2395           device".
2396
2397       $g->fstrim ($mountpoint [, offset => $offset] [, length => $length] [,
2398       minimumfreeextent => $minimumfreeextent]);
2399           Trim the free space in the filesystem mounted on "mountpoint".  The
2400           filesystem must be mounted read-write.
2401
2402           The filesystem contents are not affected, but any free space in the
2403           filesystem is "trimmed", that is, given back to the host device,
2404           thus making disk images more sparse, allowing unused space in qcow2
2405           files to be reused, etc.
2406
2407           This operation requires support in libguestfs, the mounted
2408           filesystem, the host filesystem, qemu and the host kernel.  If this
2409           support isn't present it may give an error or even appear to run
2410           but do nothing.
2411
2412           In the case where the kernel vfs driver does not support trimming,
2413           this call will fail with errno set to "ENOTSUP".  Currently this
2414           happens when trying to trim FAT filesystems.
2415
2416           See also "$g->zero_free_space".  That is a slightly different
2417           operation that turns free space in the filesystem into zeroes.  It
2418           is valid to call "$g->fstrim" either instead of, or after calling
2419           "$g->zero_free_space".
2420
2421           This function depends on the feature "fstrim".  See also
2422           "$g->feature-available".
2423
2424       $append = $g->get_append ();
2425           Return the additional kernel options which are added to the
2426           libguestfs appliance kernel command line.
2427
2428           If "NULL" then no options are added.
2429
2430       $backend = $g->get_attach_method ();
2431           Return the current backend.
2432
2433           See "$g->set_backend" and "BACKEND" in guestfs(3).
2434
2435           This function is deprecated.  In new code, use the "get_backend"
2436           call instead.
2437
2438           Deprecated functions will not be removed from the API, but the fact
2439           that they are deprecated indicates that there are problems with
2440           correct use of these functions.
2441
2442       $autosync = $g->get_autosync ();
2443           Get the autosync flag.
2444
2445       $backend = $g->get_backend ();
2446           Return the current backend.
2447
2448           This handle property was previously called the "attach method".
2449
2450           See "$g->set_backend" and "BACKEND" in guestfs(3).
2451
2452       $val = $g->get_backend_setting ($name);
2453           Find a backend setting string which is either "name" or begins with
2454           "name=".  If "name", this returns the string "1".  If "name=", this
2455           returns the part after the equals sign (which may be an empty
2456           string).
2457
2458           If no such setting is found, this function throws an error.  The
2459           errno (see "$g->last_errno") will be "ESRCH" in this case.
2460
2461           See "BACKEND" in guestfs(3), "BACKEND SETTINGS" in guestfs(3).
2462
2463       @settings = $g->get_backend_settings ();
2464           Return the current backend settings.
2465
2466           This call returns all backend settings strings.  If you want to
2467           find a single backend setting, see "$g->get_backend_setting".
2468
2469           See "BACKEND" in guestfs(3), "BACKEND SETTINGS" in guestfs(3).
2470
2471       $cachedir = $g->get_cachedir ();
2472           Get the directory used by the handle to store the appliance cache.
2473
2474       $direct = $g->get_direct ();
2475           Return the direct appliance mode flag.
2476
2477           This function is deprecated.  In new code, use the
2478           "internal_get_console_socket" call instead.
2479
2480           Deprecated functions will not be removed from the API, but the fact
2481           that they are deprecated indicates that there are problems with
2482           correct use of these functions.
2483
2484       $attrs = $g->get_e2attrs ($file);
2485           This returns the file attributes associated with file.
2486
2487           The attributes are a set of bits associated with each inode which
2488           affect the behaviour of the file.  The attributes are returned as a
2489           string of letters (described below).  The string may be empty,
2490           indicating that no file attributes are set for this file.
2491
2492           These attributes are only present when the file is located on an
2493           ext2/3/4 filesystem.  Using this call on other filesystem types
2494           will result in an error.
2495
2496           The characters (file attributes) in the returned string are
2497           currently:
2498
2499           'A' When the file is accessed, its atime is not modified.
2500
2501           'a' The file is append-only.
2502
2503           'c' The file is compressed on-disk.
2504
2505           'D' (Directories only.)  Changes to this directory are written
2506               synchronously to disk.
2507
2508           'd' The file is not a candidate for backup (see dump(8)).
2509
2510           'E' The file has compression errors.
2511
2512           'e' The file is using extents.
2513
2514           'h' The file is storing its blocks in units of the filesystem
2515               blocksize instead of sectors.
2516
2517           'I' (Directories only.)  The directory is using hashed trees.
2518
2519           'i' The file is immutable.  It cannot be modified, deleted or
2520               renamed.  No link can be created to this file.
2521
2522           'j' The file is data-journaled.
2523
2524           's' When the file is deleted, all its blocks will be zeroed.
2525
2526           'S' Changes to this file are written synchronously to disk.
2527
2528           'T' (Directories only.)  This is a hint to the block allocator that
2529               subdirectories contained in this directory should be spread
2530               across blocks.  If not present, the block allocator will try to
2531               group subdirectories together.
2532
2533           't' For a file, this disables tail-merging.  (Not used by upstream
2534               implementations of ext2.)
2535
2536           'u' When the file is deleted, its blocks will be saved, allowing
2537               the file to be undeleted.
2538
2539           'X' The raw contents of the compressed file may be accessed.
2540
2541           'Z' The compressed file is dirty.
2542
2543           More file attributes may be added to this list later.  Not all file
2544           attributes may be set for all kinds of files.  For detailed
2545           information, consult the chattr(1) man page.
2546
2547           See also "$g->set_e2attrs".
2548
2549           Don't confuse these attributes with extended attributes (see
2550           "$g->getxattr").
2551
2552       $generation = $g->get_e2generation ($file);
2553           This returns the ext2 file generation of a file.  The generation
2554           (which used to be called the "version") is a number associated with
2555           an inode.  This is most commonly used by NFS servers.
2556
2557           The generation is only present when the file is located on an
2558           ext2/3/4 filesystem.  Using this call on other filesystem types
2559           will result in an error.
2560
2561           See "$g->set_e2generation".
2562
2563       $label = $g->get_e2label ($device);
2564           This returns the ext2/3/4 filesystem label of the filesystem on
2565           "device".
2566
2567           This function is deprecated.  In new code, use the "vfs_label" call
2568           instead.
2569
2570           Deprecated functions will not be removed from the API, but the fact
2571           that they are deprecated indicates that there are problems with
2572           correct use of these functions.
2573
2574       $uuid = $g->get_e2uuid ($device);
2575           This returns the ext2/3/4 filesystem UUID of the filesystem on
2576           "device".
2577
2578           This function is deprecated.  In new code, use the "vfs_uuid" call
2579           instead.
2580
2581           Deprecated functions will not be removed from the API, but the fact
2582           that they are deprecated indicates that there are problems with
2583           correct use of these functions.
2584
2585       $hv = $g->get_hv ();
2586           Return the current hypervisor binary.
2587
2588           This is always non-NULL.  If it wasn't set already, then this will
2589           return the default qemu binary name.
2590
2591       $identifier = $g->get_identifier ();
2592           Get the handle identifier.  See "$g->set_identifier".
2593
2594       $challenge = $g->get_libvirt_requested_credential_challenge ($index);
2595           Get the challenge (provided by libvirt) for the "index"'th
2596           requested credential.  If libvirt did not provide a challenge, this
2597           returns the empty string "".
2598
2599           See "LIBVIRT AUTHENTICATION" in guestfs(3) for documentation and
2600           example code.
2601
2602       $defresult = $g->get_libvirt_requested_credential_defresult ($index);
2603           Get the default result (provided by libvirt) for the "index"'th
2604           requested credential.  If libvirt did not provide a default result,
2605           this returns the empty string "".
2606
2607           See "LIBVIRT AUTHENTICATION" in guestfs(3) for documentation and
2608           example code.
2609
2610       $prompt = $g->get_libvirt_requested_credential_prompt ($index);
2611           Get the prompt (provided by libvirt) for the "index"'th requested
2612           credential.  If libvirt did not provide a prompt, this returns the
2613           empty string "".
2614
2615           See "LIBVIRT AUTHENTICATION" in guestfs(3) for documentation and
2616           example code.
2617
2618       @creds = $g->get_libvirt_requested_credentials ();
2619           This should only be called during the event callback for events of
2620           type "GUESTFS_EVENT_LIBVIRT_AUTH".
2621
2622           Return the list of credentials requested by libvirt.  Possible
2623           values are a subset of the strings provided when you called
2624           "$g->set_libvirt_supported_credentials".
2625
2626           See "LIBVIRT AUTHENTICATION" in guestfs(3) for documentation and
2627           example code.
2628
2629       $memsize = $g->get_memsize ();
2630           This gets the memory size in megabytes allocated to the hypervisor.
2631
2632           If "$g->set_memsize" was not called on this handle, and if
2633           "LIBGUESTFS_MEMSIZE" was not set, then this returns the compiled-in
2634           default value for memsize.
2635
2636           For more information on the architecture of libguestfs, see
2637           guestfs(3).
2638
2639       $network = $g->get_network ();
2640           This returns the enable network flag.
2641
2642       $path = $g->get_path ();
2643           Return the current search path.
2644
2645           This is always non-NULL.  If it wasn't set already, then this will
2646           return the default path.
2647
2648       $pgroup = $g->get_pgroup ();
2649           This returns the process group flag.
2650
2651       $pid = $g->get_pid ();
2652           Return the process ID of the hypervisor.  If there is no hypervisor
2653           running, then this will return an error.
2654
2655           This is an internal call used for debugging and testing.
2656
2657       $program = $g->get_program ();
2658           Get the program name.  See "$g->set_program".
2659
2660       $hv = $g->get_qemu ();
2661           Return the current hypervisor binary (usually qemu).
2662
2663           This is always non-NULL.  If it wasn't set already, then this will
2664           return the default qemu binary name.
2665
2666           This function is deprecated.  In new code, use the "get_hv" call
2667           instead.
2668
2669           Deprecated functions will not be removed from the API, but the fact
2670           that they are deprecated indicates that there are problems with
2671           correct use of these functions.
2672
2673       $recoveryproc = $g->get_recovery_proc ();
2674           Return the recovery process enabled flag.
2675
2676       $selinux = $g->get_selinux ();
2677           This returns the current setting of the selinux flag which is
2678           passed to the appliance at boot time.  See "$g->set_selinux".
2679
2680           For more information on the architecture of libguestfs, see
2681           guestfs(3).
2682
2683           This function is deprecated.  In new code, use the
2684           "selinux_relabel" call instead.
2685
2686           Deprecated functions will not be removed from the API, but the fact
2687           that they are deprecated indicates that there are problems with
2688           correct use of these functions.
2689
2690       $smp = $g->get_smp ();
2691           This returns the number of virtual CPUs assigned to the appliance.
2692
2693       $sockdir = $g->get_sockdir ();
2694           Get the directory used by the handle to store temporary socket
2695           files.
2696
2697           This is different from "$g->get_tmpdir", as we need shorter paths
2698           for sockets (due to the limited buffers of filenames for UNIX
2699           sockets), and "$g->get_tmpdir" may be too long for them.
2700
2701           The environment variable "XDG_RUNTIME_DIR" controls the default
2702           value: If "XDG_RUNTIME_DIR" is set, then that is the default.  Else
2703           /tmp is the default.
2704
2705       $state = $g->get_state ();
2706           This returns the current state as an opaque integer.  This is only
2707           useful for printing debug and internal error messages.
2708
2709           For more information on states, see guestfs(3).
2710
2711       $tmpdir = $g->get_tmpdir ();
2712           Get the directory used by the handle to store temporary files.
2713
2714       $trace = $g->get_trace ();
2715           Return the command trace flag.
2716
2717       $mask = $g->get_umask ();
2718           Return the current umask.  By default the umask is 022 unless it
2719           has been set by calling "$g->umask".
2720
2721       $verbose = $g->get_verbose ();
2722           This returns the verbose messages flag.
2723
2724       $context = $g->getcon ();
2725           This gets the SELinux security context of the daemon.
2726
2727           See the documentation about SELINUX in guestfs(3), and "$g->setcon"
2728
2729           This function depends on the feature "selinux".  See also
2730           "$g->feature-available".
2731
2732           This function is deprecated.  In new code, use the
2733           "selinux_relabel" call instead.
2734
2735           Deprecated functions will not be removed from the API, but the fact
2736           that they are deprecated indicates that there are problems with
2737           correct use of these functions.
2738
2739       $xattr = $g->getxattr ($path, $name);
2740           Get a single extended attribute from file "path" named "name".
2741           This call follows symlinks.  If you want to lookup an extended
2742           attribute for the symlink itself, use "$g->lgetxattr".
2743
2744           Normally it is better to get all extended attributes from a file in
2745           one go by calling "$g->getxattrs".  However some Linux filesystem
2746           implementations are buggy and do not provide a way to list out
2747           attributes.  For these filesystems (notably ntfs-3g) you have to
2748           know the names of the extended attributes you want in advance and
2749           call this function.
2750
2751           Extended attribute values are blobs of binary data.  If there is no
2752           extended attribute named "name", this returns an error.
2753
2754           See also: "$g->getxattrs", "$g->lgetxattr", attr(5).
2755
2756           This function depends on the feature "linuxxattrs".  See also
2757           "$g->feature-available".
2758
2759       @xattrs = $g->getxattrs ($path);
2760           This call lists the extended attributes of the file or directory
2761           "path".
2762
2763           At the system call level, this is a combination of the listxattr(2)
2764           and getxattr(2) calls.
2765
2766           See also: "$g->lgetxattrs", attr(5).
2767
2768           This function depends on the feature "linuxxattrs".  See also
2769           "$g->feature-available".
2770
2771       @paths = $g->glob_expand ($pattern [, directoryslash =>
2772       $directoryslash]);
2773           This command searches for all the pathnames matching "pattern"
2774           according to the wildcard expansion rules used by the shell.
2775
2776           If no paths match, then this returns an empty list (note: not an
2777           error).
2778
2779           It is just a wrapper around the C glob(3) function with flags
2780           "GLOB_MARK|GLOB_BRACE".  See that manual page for more details.
2781
2782           "directoryslash" controls whether use the "GLOB_MARK" flag for
2783           glob(3), and it defaults to true.  It can be explicitly set as off
2784           to return no trailing slashes in filenames of directories.
2785
2786           Notice that there is no equivalent command for expanding a device
2787           name (eg. /dev/sd*).  Use "$g->list_devices", "$g->list_partitions"
2788           etc functions instead.
2789
2790       @paths = $g->glob_expand_opts ($pattern [, directoryslash =>
2791       $directoryslash]);
2792           This is an alias of "glob_expand".
2793
2794       @lines = $g->grep ($regex, $path [, extended => $extended] [, fixed =>
2795       $fixed] [, insensitive => $insensitive] [, compressed => $compressed]);
2796           This calls the external grep(1) program and returns the matching
2797           lines.
2798
2799           The optional flags are:
2800
2801           "extended"
2802               Use extended regular expressions.  This is the same as using
2803               the -E flag.
2804
2805           "fixed"
2806               Match fixed (don't use regular expressions).  This is the same
2807               as using the -F flag.
2808
2809           "insensitive"
2810               Match case-insensitive.  This is the same as using the -i flag.
2811
2812           "compressed"
2813               Use zgrep(1) instead of grep(1).  This allows the input to be
2814               compress- or gzip-compressed.
2815
2816           Because of the message protocol, there is a transfer limit of
2817           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
2818           guestfs(3).
2819
2820       @lines = $g->grep_opts ($regex, $path [, extended => $extended] [,
2821       fixed => $fixed] [, insensitive => $insensitive] [, compressed =>
2822       $compressed]);
2823           This is an alias of "grep".
2824
2825       @lines = $g->grepi ($regex, $path);
2826           This calls the external "grep -i" program and returns the matching
2827           lines.
2828
2829           Because of the message protocol, there is a transfer limit of
2830           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
2831           guestfs(3).
2832
2833           This function is deprecated.  In new code, use the "grep" call
2834           instead.
2835
2836           Deprecated functions will not be removed from the API, but the fact
2837           that they are deprecated indicates that there are problems with
2838           correct use of these functions.
2839
2840       $g->grub_install ($root, $device);
2841           This command installs GRUB 1 (the Grand Unified Bootloader) on
2842           "device", with the root directory being "root".
2843
2844           Notes:
2845
2846           •   There is currently no way in the API to install grub2, which is
2847               used by most modern Linux guests.  It is possible to run the
2848               grub2 command from the guest, although see the caveats in
2849               "RUNNING COMMANDS" in guestfs(3).
2850
2851           •   This uses grub-install(8) from the host.  Unfortunately grub is
2852               not always compatible with itself, so this only works in rather
2853               narrow circumstances.  Careful testing with each guest version
2854               is advisable.
2855
2856           •   If grub-install reports the error "No suitable drive was found
2857               in the generated device map."  it may be that you need to
2858               create a /boot/grub/device.map file first that contains the
2859               mapping between grub device names and Linux device names.  It
2860               is usually sufficient to create a file containing:
2861
2862                (hd0) /dev/vda
2863
2864               replacing /dev/vda with the name of the installation device.
2865
2866           This function depends on the feature "grub".  See also
2867           "$g->feature-available".
2868
2869       @lines = $g->head ($path);
2870           This command returns up to the first 10 lines of a file as a list
2871           of strings.
2872
2873           Because of the message protocol, there is a transfer limit of
2874           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
2875           guestfs(3).
2876
2877       @lines = $g->head_n ($nrlines, $path);
2878           If the parameter "nrlines" is a positive number, this returns the
2879           first "nrlines" lines of the file "path".
2880
2881           If the parameter "nrlines" is a negative number, this returns lines
2882           from the file "path", excluding the last "nrlines" lines.
2883
2884           If the parameter "nrlines" is zero, this returns an empty list.
2885
2886           Because of the message protocol, there is a transfer limit of
2887           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
2888           guestfs(3).
2889
2890       $dump = $g->hexdump ($path);
2891           This runs "hexdump -C" on the given "path".  The result is the
2892           human-readable, canonical hex dump of the file.
2893
2894           Because of the message protocol, there is a transfer limit of
2895           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
2896           guestfs(3).
2897
2898       $g->hivex_close ();
2899           Close the current hivex handle.
2900
2901           This is a wrapper around the hivex(3) call of the same name.
2902
2903           This function depends on the feature "hivex".  See also
2904           "$g->feature-available".
2905
2906       $g->hivex_commit ($filename);
2907           Commit (write) changes to the hive.
2908
2909           If the optional filename parameter is null, then the changes are
2910           written back to the same hive that was opened.  If this is not null
2911           then they are written to the alternate filename given and the
2912           original hive is left untouched.
2913
2914           This is a wrapper around the hivex(3) call of the same name.
2915
2916           This function depends on the feature "hivex".  See also
2917           "$g->feature-available".
2918
2919       $nodeh = $g->hivex_node_add_child ($parent, $name);
2920           Add a child node to "parent" named "name".
2921
2922           This is a wrapper around the hivex(3) call of the same name.
2923
2924           This function depends on the feature "hivex".  See also
2925           "$g->feature-available".
2926
2927       @nodehs = $g->hivex_node_children ($nodeh);
2928           Return the list of nodes which are subkeys of "nodeh".
2929
2930           This is a wrapper around the hivex(3) call of the same name.
2931
2932           This function depends on the feature "hivex".  See also
2933           "$g->feature-available".
2934
2935       $g->hivex_node_delete_child ($nodeh);
2936           Delete "nodeh", recursively if necessary.
2937
2938           This is a wrapper around the hivex(3) call of the same name.
2939
2940           This function depends on the feature "hivex".  See also
2941           "$g->feature-available".
2942
2943       $child = $g->hivex_node_get_child ($nodeh, $name);
2944           Return the child of "nodeh" with the name "name", if it exists.
2945           This can return 0 meaning the name was not found.
2946
2947           This is a wrapper around the hivex(3) call of the same name.
2948
2949           This function depends on the feature "hivex".  See also
2950           "$g->feature-available".
2951
2952       $valueh = $g->hivex_node_get_value ($nodeh, $key);
2953           Return the value attached to "nodeh" which has the name "key", if
2954           it exists.  This can return 0 meaning the key was not found.
2955
2956           This is a wrapper around the hivex(3) call of the same name.
2957
2958           This function depends on the feature "hivex".  See also
2959           "$g->feature-available".
2960
2961       $name = $g->hivex_node_name ($nodeh);
2962           Return the name of "nodeh".
2963
2964           This is a wrapper around the hivex(3) call of the same name.
2965
2966           This function depends on the feature "hivex".  See also
2967           "$g->feature-available".
2968
2969       $parent = $g->hivex_node_parent ($nodeh);
2970           Return the parent node of "nodeh".
2971
2972           This is a wrapper around the hivex(3) call of the same name.
2973
2974           This function depends on the feature "hivex".  See also
2975           "$g->feature-available".
2976
2977       $g->hivex_node_set_value ($nodeh, $key, $t, $val);
2978           Set or replace a single value under the node "nodeh".  The "key" is
2979           the name, "t" is the type, and "val" is the data.
2980
2981           This is a wrapper around the hivex(3) call of the same name.
2982
2983           This function depends on the feature "hivex".  See also
2984           "$g->feature-available".
2985
2986       @valuehs = $g->hivex_node_values ($nodeh);
2987           Return the array of (key, datatype, data) tuples attached to
2988           "nodeh".
2989
2990           This is a wrapper around the hivex(3) call of the same name.
2991
2992           This function depends on the feature "hivex".  See also
2993           "$g->feature-available".
2994
2995       $g->hivex_open ($filename [, verbose => $verbose] [, debug => $debug]
2996       [, write => $write] [, unsafe => $unsafe]);
2997           Open the Windows Registry hive file named filename.  If there was
2998           any previous hivex handle associated with this guestfs session,
2999           then it is closed.
3000
3001           This is a wrapper around the hivex(3) call of the same name.
3002
3003           This function depends on the feature "hivex".  See also
3004           "$g->feature-available".
3005
3006       $nodeh = $g->hivex_root ();
3007           Return the root node of the hive.
3008
3009           This is a wrapper around the hivex(3) call of the same name.
3010
3011           This function depends on the feature "hivex".  See also
3012           "$g->feature-available".
3013
3014       $key = $g->hivex_value_key ($valueh);
3015           Return the key (name) field of a (key, datatype, data) tuple.
3016
3017           This is a wrapper around the hivex(3) call of the same name.
3018
3019           This function depends on the feature "hivex".  See also
3020           "$g->feature-available".
3021
3022       $databuf = $g->hivex_value_string ($valueh);
3023           This calls "$g->hivex_value_value" (which returns the data field
3024           from a hivex value tuple).  It then assumes that the field is a
3025           UTF-16LE string and converts the result to UTF-8 (or if this is not
3026           possible, it returns an error).
3027
3028           This is useful for reading strings out of the Windows registry.
3029           However it is not foolproof because the registry is not strongly-
3030           typed and fields can contain arbitrary or unexpected data.
3031
3032           This function depends on the feature "hivex".  See also
3033           "$g->feature-available".
3034
3035       $datatype = $g->hivex_value_type ($valueh);
3036           Return the data type field from a (key, datatype, data) tuple.
3037
3038           This is a wrapper around the hivex(3) call of the same name.
3039
3040           This function depends on the feature "hivex".  See also
3041           "$g->feature-available".
3042
3043       $databuf = $g->hivex_value_utf8 ($valueh);
3044           This calls "$g->hivex_value_value" (which returns the data field
3045           from a hivex value tuple).  It then assumes that the field is a
3046           UTF-16LE string and converts the result to UTF-8 (or if this is not
3047           possible, it returns an error).
3048
3049           This is useful for reading strings out of the Windows registry.
3050           However it is not foolproof because the registry is not strongly-
3051           typed and fields can contain arbitrary or unexpected data.
3052
3053           This function depends on the feature "hivex".  See also
3054           "$g->feature-available".
3055
3056           This function is deprecated.  In new code, use the
3057           "hivex_value_string" call instead.
3058
3059           Deprecated functions will not be removed from the API, but the fact
3060           that they are deprecated indicates that there are problems with
3061           correct use of these functions.
3062
3063       $databuf = $g->hivex_value_value ($valueh);
3064           Return the data field of a (key, datatype, data) tuple.
3065
3066           This is a wrapper around the hivex(3) call of the same name.
3067
3068           See also: "$g->hivex_value_utf8".
3069
3070           This function depends on the feature "hivex".  See also
3071           "$g->feature-available".
3072
3073       $content = $g->initrd_cat ($initrdpath, $filename);
3074           This command unpacks the file filename from the initrd file called
3075           initrdpath.  The filename must be given without the initial /
3076           character.
3077
3078           For example, in guestfish you could use the following command to
3079           examine the boot script (usually called /init) contained in a Linux
3080           initrd or initramfs image:
3081
3082            initrd-cat /boot/initrd-<version>.img init
3083
3084           See also "$g->initrd_list".
3085
3086           Because of the message protocol, there is a transfer limit of
3087           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
3088           guestfs(3).
3089
3090       @filenames = $g->initrd_list ($path);
3091           This command lists out files contained in an initrd.
3092
3093           The files are listed without any initial / character.  The files
3094           are listed in the order they appear (not necessarily alphabetical).
3095           Directory names are listed as separate items.
3096
3097           Old Linux kernels (2.4 and earlier) used a compressed ext2
3098           filesystem as initrd.  We only support the newer initramfs format
3099           (compressed cpio files).
3100
3101       $wd = $g->inotify_add_watch ($path, $mask);
3102           Watch "path" for the events listed in "mask".
3103
3104           Note that if "path" is a directory then events within that
3105           directory are watched, but this does not happen recursively (in
3106           subdirectories).
3107
3108           Note for non-C or non-Linux callers: the inotify events are defined
3109           by the Linux kernel ABI and are listed in
3110           /usr/include/sys/inotify.h.
3111
3112           This function depends on the feature "inotify".  See also
3113           "$g->feature-available".
3114
3115       $g->inotify_close ();
3116           This closes the inotify handle which was previously opened by
3117           inotify_init.  It removes all watches, throws away any pending
3118           events, and deallocates all resources.
3119
3120           This function depends on the feature "inotify".  See also
3121           "$g->feature-available".
3122
3123       @paths = $g->inotify_files ();
3124           This function is a helpful wrapper around "$g->inotify_read" which
3125           just returns a list of pathnames of objects that were touched.  The
3126           returned pathnames are sorted and deduplicated.
3127
3128           This function depends on the feature "inotify".  See also
3129           "$g->feature-available".
3130
3131       $g->inotify_init ($maxevents);
3132           This command creates a new inotify handle.  The inotify subsystem
3133           can be used to notify events which happen to objects in the guest
3134           filesystem.
3135
3136           "maxevents" is the maximum number of events which will be queued up
3137           between calls to "$g->inotify_read" or "$g->inotify_files".  If
3138           this is passed as 0, then the kernel (or previously set) default is
3139           used.  For Linux 2.6.29 the default was 16384 events.  Beyond this
3140           limit, the kernel throws away events, but records the fact that it
3141           threw them away by setting a flag "IN_Q_OVERFLOW" in the returned
3142           structure list (see "$g->inotify_read").
3143
3144           Before any events are generated, you have to add some watches to
3145           the internal watch list.  See: "$g->inotify_add_watch" and
3146           "$g->inotify_rm_watch".
3147
3148           Queued up events should be read periodically by calling
3149           "$g->inotify_read" (or "$g->inotify_files" which is just a helpful
3150           wrapper around "$g->inotify_read").  If you don't read the events
3151           out often enough then you risk the internal queue overflowing.
3152
3153           The handle should be closed after use by calling
3154           "$g->inotify_close".  This also removes any watches automatically.
3155
3156           See also inotify(7) for an overview of the inotify interface as
3157           exposed by the Linux kernel, which is roughly what we expose via
3158           libguestfs.  Note that there is one global inotify handle per
3159           libguestfs instance.
3160
3161           This function depends on the feature "inotify".  See also
3162           "$g->feature-available".
3163
3164       @events = $g->inotify_read ();
3165           Return the complete queue of events that have happened since the
3166           previous read call.
3167
3168           If no events have happened, this returns an empty list.
3169
3170           Note: In order to make sure that all events have been read, you
3171           must call this function repeatedly until it returns an empty list.
3172           The reason is that the call will read events up to the maximum
3173           appliance-to-host message size and leave remaining events in the
3174           queue.
3175
3176           This function depends on the feature "inotify".  See also
3177           "$g->feature-available".
3178
3179       $g->inotify_rm_watch ($wd);
3180           Remove a previously defined inotify watch.  See
3181           "$g->inotify_add_watch".
3182
3183           This function depends on the feature "inotify".  See also
3184           "$g->feature-available".
3185
3186       $arch = $g->inspect_get_arch ($root);
3187           This returns the architecture of the inspected operating system.
3188           The possible return values are listed under
3189           "$g->file_architecture".
3190
3191           If the architecture could not be determined, then the string
3192           "unknown" is returned.
3193
3194           Please read "INSPECTION" in guestfs(3) for more details.
3195
3196       $distro = $g->inspect_get_distro ($root);
3197           This returns the distro (distribution) of the inspected operating
3198           system.
3199
3200           Currently defined distros are:
3201
3202           "alpinelinux"
3203               Alpine Linux.
3204
3205           "altlinux"
3206               ALT Linux.
3207
3208           "archlinux"
3209               Arch Linux.
3210
3211           "buildroot"
3212               Buildroot-derived distro, but not one we specifically
3213               recognize.
3214
3215           "centos"
3216               CentOS.
3217
3218           "cirros"
3219               Cirros.
3220
3221           "coreos"
3222               CoreOS.
3223
3224           "debian"
3225               Debian.
3226
3227           "fedora"
3228               Fedora.
3229
3230           "freebsd"
3231               FreeBSD.
3232
3233           "freedos"
3234               FreeDOS.
3235
3236           "frugalware"
3237               Frugalware.
3238
3239           "gentoo"
3240               Gentoo.
3241
3242           "kalilinux"
3243               Kali Linux.
3244
3245           "linuxmint"
3246               Linux Mint.
3247
3248           "mageia"
3249               Mageia.
3250
3251           "mandriva"
3252               Mandriva.
3253
3254           "meego"
3255               MeeGo.
3256
3257           "msdos"
3258               Microsoft DOS.
3259
3260           "neokylin"
3261               NeoKylin.
3262
3263           "netbsd"
3264               NetBSD.
3265
3266           "openbsd"
3267               OpenBSD.
3268
3269           "openmandriva"
3270               OpenMandriva Lx.
3271
3272           "opensuse"
3273               OpenSUSE.
3274
3275           "oraclelinux"
3276               Oracle Linux.
3277
3278           "pardus"
3279               Pardus.
3280
3281           "pldlinux"
3282               PLD Linux.
3283
3284           "redhat-based"
3285               Some Red Hat-derived distro.
3286
3287           "rhel"
3288               Red Hat Enterprise Linux.
3289
3290           "scientificlinux"
3291               Scientific Linux.
3292
3293           "slackware"
3294               Slackware.
3295
3296           "sles"
3297               SuSE Linux Enterprise Server or Desktop.
3298
3299           "suse-based"
3300               Some openSuSE-derived distro.
3301
3302           "ttylinux"
3303               ttylinux.
3304
3305           "ubuntu"
3306               Ubuntu.
3307
3308           "unknown"
3309               The distro could not be determined.
3310
3311           "voidlinux"
3312               Void Linux.
3313
3314           "windows"
3315               Windows does not have distributions.  This string is returned
3316               if the OS type is Windows.
3317
3318           Future versions of libguestfs may return other strings here.  The
3319           caller should be prepared to handle any string.
3320
3321           Please read "INSPECTION" in guestfs(3) for more details.
3322
3323       %drives = $g->inspect_get_drive_mappings ($root);
3324           This call is useful for Windows which uses a primitive system of
3325           assigning drive letters (like C:\) to partitions.  This inspection
3326           API examines the Windows Registry to find out how disks/partitions
3327           are mapped to drive letters, and returns a hash table as in the
3328           example below:
3329
3330            C      =>     /dev/vda2
3331            E      =>     /dev/vdb1
3332            F      =>     /dev/vdc1
3333
3334           Note that keys are drive letters.  For Windows, the key is case
3335           insensitive and just contains the drive letter, without the
3336           customary colon separator character.
3337
3338           In future we may support other operating systems that also used
3339           drive letters, but the keys for those might not be case insensitive
3340           and might be longer than 1 character.  For example in OS-9, hard
3341           drives were named "h0", "h1" etc.
3342
3343           For Windows guests, currently only hard drive mappings are
3344           returned.  Removable disks (eg. DVD-ROMs) are ignored.
3345
3346           For guests that do not use drive mappings, or if the drive mappings
3347           could not be determined, this returns an empty hash table.
3348
3349           Please read "INSPECTION" in guestfs(3) for more details.  See also
3350           "$g->inspect_get_mountpoints", "$g->inspect_get_filesystems".
3351
3352       @filesystems = $g->inspect_get_filesystems ($root);
3353           This returns a list of all the filesystems that we think are
3354           associated with this operating system.  This includes the root
3355           filesystem, other ordinary filesystems, and non-mounted devices
3356           like swap partitions.
3357
3358           In the case of a multi-boot virtual machine, it is possible for a
3359           filesystem to be shared between operating systems.
3360
3361           Please read "INSPECTION" in guestfs(3) for more details.  See also
3362           "$g->inspect_get_mountpoints".
3363
3364       $format = $g->inspect_get_format ($root);
3365           Before libguestfs 1.38, there was some unreliable support for
3366           detecting installer CDs.  This API would return:
3367
3368           "installed"
3369               This is an installed operating system.
3370
3371           "installer"
3372               The disk image being inspected is not an installed operating
3373               system, but a bootable install disk, live CD, or similar.
3374
3375           "unknown"
3376               The format of this disk image is not known.
3377
3378           In libguestfs X 1.38, this only returns "installed".  Use libosinfo
3379           directly to detect installer CDs.
3380
3381           Please read "INSPECTION" in guestfs(3) for more details.
3382
3383           This function is deprecated.  There is no replacement.  Consult the
3384           API documentation in guestfs(3) for further information.
3385
3386           Deprecated functions will not be removed from the API, but the fact
3387           that they are deprecated indicates that there are problems with
3388           correct use of these functions.
3389
3390       $hostname = $g->inspect_get_hostname ($root);
3391           This function returns the hostname of the operating system as found
3392           by inspection of the guestXs configuration files.
3393
3394           If the hostname could not be determined, then the string "unknown"
3395           is returned.
3396
3397           Please read "INSPECTION" in guestfs(3) for more details.
3398
3399       $icon = $g->inspect_get_icon ($root [, favicon => $favicon] [,
3400       highquality => $highquality]);
3401           This function returns an icon corresponding to the inspected
3402           operating system.  The icon is returned as a buffer containing a
3403           PNG image (re-encoded to PNG if necessary).
3404
3405           If it was not possible to get an icon this function returns a zero-
3406           length (non-NULL) buffer.  Callers must check for this case.
3407
3408           Libguestfs will start by looking for a file called /etc/favicon.png
3409           or C:\etc\favicon.png and if it has the correct format, the
3410           contents of this file will be returned.  You can disable favicons
3411           by passing the optional "favicon" boolean as false (default is
3412           true).
3413
3414           If finding the favicon fails, then we look in other places in the
3415           guest for a suitable icon.
3416
3417           If the optional "highquality" boolean is true then only high
3418           quality icons are returned, which means only icons of high
3419           resolution with an alpha channel.  The default (false) is to return
3420           any icon we can, even if it is of substandard quality.
3421
3422           Notes:
3423
3424           •   Unlike most other inspection API calls, the guestXs disks must
3425               be mounted up before you call this, since it needs to read
3426               information from the guest filesystem during the call.
3427
3428           •   Security: The icon data comes from the untrusted guest, and
3429               should be treated with caution.  PNG files have been known to
3430               contain exploits.  Ensure that libpng (or other relevant
3431               libraries) are fully up to date before trying to process or
3432               display the icon.
3433
3434           •   The PNG image returned can be any size.  It might not be
3435               square.  Libguestfs tries to return the largest, highest
3436               quality icon available.  The application must scale the icon to
3437               the required size.
3438
3439           •   Extracting icons from Windows guests requires the external
3440               wrestool(1) program from the "icoutils" package, and several
3441               programs (bmptopnm(1), pnmtopng(1), pamcut(1)) from the
3442               "netpbm" package.  These must be installed separately.
3443
3444           •   Operating system icons are usually trademarks.  Seek legal
3445               advice before using trademarks in applications.
3446
3447       $major = $g->inspect_get_major_version ($root);
3448           This returns the major version number of the inspected operating
3449           system.
3450
3451           Windows uses a consistent versioning scheme which is not reflected
3452           in the popular public names used by the operating system.  Notably
3453           the operating system known as "Windows 7" is really version 6.1
3454           (ie. major = 6, minor = 1).  You can find out the real versions
3455           corresponding to releases of Windows by consulting Wikipedia or
3456           MSDN.
3457
3458           If the version could not be determined, then 0 is returned.
3459
3460           Please read "INSPECTION" in guestfs(3) for more details.
3461
3462       $minor = $g->inspect_get_minor_version ($root);
3463           This returns the minor version number of the inspected operating
3464           system.
3465
3466           If the version could not be determined, then 0 is returned.
3467
3468           Please read "INSPECTION" in guestfs(3) for more details.  See also
3469           "$g->inspect_get_major_version".
3470
3471       %mountpoints = $g->inspect_get_mountpoints ($root);
3472           This returns a hash of where we think the filesystems associated
3473           with this operating system should be mounted.  Callers should note
3474           that this is at best an educated guess made by reading
3475           configuration files such as /etc/fstab.  In particular note that
3476           this may return filesystems which are non-existent or not mountable
3477           and callers should be prepared to handle or ignore failures if they
3478           try to mount them.
3479
3480           Each element in the returned hashtable has a key which is the path
3481           of the mountpoint (eg. /boot) and a value which is the filesystem
3482           that would be mounted there (eg. /dev/sda1).
3483
3484           Non-mounted devices such as swap devices are not returned in this
3485           list.
3486
3487           For operating systems like Windows which still use drive letters,
3488           this call will only return an entry for the first drive "mounted
3489           on" /.  For information about the mapping of drive letters to
3490           partitions, see "$g->inspect_get_drive_mappings".
3491
3492           Please read "INSPECTION" in guestfs(3) for more details.  See also
3493           "$g->inspect_get_filesystems".
3494
3495       $id = $g->inspect_get_osinfo ($root);
3496           This function returns a possible short ID for libosinfo
3497           corresponding to the guest.
3498
3499           Note: The returned ID is only a guess by libguestfs, and nothing
3500           ensures that it actually exists in osinfo-db.
3501
3502           If no ID could not be determined, then the string "unknown" is
3503           returned.
3504
3505       $packageformat = $g->inspect_get_package_format ($root);
3506           This function and "$g->inspect_get_package_management" return the
3507           package format and package management tool used by the inspected
3508           operating system.  For example for Fedora these functions would
3509           return "rpm" (package format), and "yum" or "dnf" (package
3510           management).
3511
3512           This returns the string "unknown" if we could not determine the
3513           package format or if the operating system does not have a real
3514           packaging system (eg. Windows).
3515
3516           Possible strings include: "rpm", "deb", "ebuild", "pisi", "pacman",
3517           "pkgsrc", "apk", "xbps".  Future versions of libguestfs may return
3518           other strings.
3519
3520           Please read "INSPECTION" in guestfs(3) for more details.
3521
3522       $packagemanagement = $g->inspect_get_package_management ($root);
3523           "$g->inspect_get_package_format" and this function return the
3524           package format and package management tool used by the inspected
3525           operating system.  For example for Fedora these functions would
3526           return "rpm" (package format), and "yum" or "dnf" (package
3527           management).
3528
3529           This returns the string "unknown" if we could not determine the
3530           package management tool or if the operating system does not have a
3531           real packaging system (eg. Windows).
3532
3533           Possible strings include: "yum", "dnf", "up2date", "apt" (for all
3534           Debian derivatives), "portage", "pisi", "pacman", "urpmi",
3535           "zypper", "apk", "xbps".  Future versions of libguestfs may return
3536           other strings.
3537
3538           Please read "INSPECTION" in guestfs(3) for more details.
3539
3540       $product = $g->inspect_get_product_name ($root);
3541           This returns the product name of the inspected operating system.
3542           The product name is generally some freeform string which can be
3543           displayed to the user, but should not be parsed by programs.
3544
3545           If the product name could not be determined, then the string
3546           "unknown" is returned.
3547
3548           Please read "INSPECTION" in guestfs(3) for more details.
3549
3550       $variant = $g->inspect_get_product_variant ($root);
3551           This returns the product variant of the inspected operating system.
3552
3553           For Windows guests, this returns the contents of the Registry key
3554           "HKLM\Software\Microsoft\Windows NT\CurrentVersion"
3555           "InstallationType" which is usually a string such as "Client" or
3556           "Server" (other values are possible).  This can be used to
3557           distinguish consumer and enterprise versions of Windows that have
3558           the same version number (for example, Windows 7 and Windows 2008
3559           Server are both version 6.1, but the former is "Client" and the
3560           latter is "Server").
3561
3562           For enterprise Linux guests, in future we intend this to return the
3563           product variant such as "Desktop", "Server" and so on.  But this is
3564           not implemented at present.
3565
3566           If the product variant could not be determined, then the string
3567           "unknown" is returned.
3568
3569           Please read "INSPECTION" in guestfs(3) for more details.  See also
3570           "$g->inspect_get_product_name", "$g->inspect_get_major_version".
3571
3572       @roots = $g->inspect_get_roots ();
3573           This function is a convenient way to get the list of root devices,
3574           as returned from a previous call to "$g->inspect_os", but without
3575           redoing the whole inspection process.
3576
3577           This returns an empty list if either no root devices were found or
3578           the caller has not called "$g->inspect_os".
3579
3580           Please read "INSPECTION" in guestfs(3) for more details.
3581
3582       $name = $g->inspect_get_type ($root);
3583           This returns the type of the inspected operating system.  Currently
3584           defined types are:
3585
3586           "linux"
3587               Any Linux-based operating system.
3588
3589           "windows"
3590               Any Microsoft Windows operating system.
3591
3592           "freebsd"
3593               FreeBSD.
3594
3595           "netbsd"
3596               NetBSD.
3597
3598           "openbsd"
3599               OpenBSD.
3600
3601           "hurd"
3602               GNU/Hurd.
3603
3604           "dos"
3605               MS-DOS, FreeDOS and others.
3606
3607           "minix"
3608               MINIX.
3609
3610           "unknown"
3611               The operating system type could not be determined.
3612
3613           Future versions of libguestfs may return other strings here.  The
3614           caller should be prepared to handle any string.
3615
3616           Please read "INSPECTION" in guestfs(3) for more details.
3617
3618       $controlset = $g->inspect_get_windows_current_control_set ($root);
3619           This returns the Windows CurrentControlSet of the inspected guest.
3620           The CurrentControlSet is a registry key name such as
3621           "ControlSet001".
3622
3623           This call assumes that the guest is Windows and that the Registry
3624           could be examined by inspection.  If this is not the case then an
3625           error is returned.
3626
3627           Please read "INSPECTION" in guestfs(3) for more details.
3628
3629       $path = $g->inspect_get_windows_software_hive ($root);
3630           This returns the path to the hive (binary Windows Registry file)
3631           corresponding to HKLM\SOFTWARE.
3632
3633           This call assumes that the guest is Windows and that the guest has
3634           a software hive file with the right name.  If this is not the case
3635           then an error is returned.  This call does not check that the hive
3636           is a valid Windows Registry hive.
3637
3638           You can use "$g->hivex_open" to read or write to the hive.
3639
3640           Please read "INSPECTION" in guestfs(3) for more details.
3641
3642       $path = $g->inspect_get_windows_system_hive ($root);
3643           This returns the path to the hive (binary Windows Registry file)
3644           corresponding to HKLM\SYSTEM.
3645
3646           This call assumes that the guest is Windows and that the guest has
3647           a system hive file with the right name.  If this is not the case
3648           then an error is returned.  This call does not check that the hive
3649           is a valid Windows Registry hive.
3650
3651           You can use "$g->hivex_open" to read or write to the hive.
3652
3653           Please read "INSPECTION" in guestfs(3) for more details.
3654
3655       $systemroot = $g->inspect_get_windows_systemroot ($root);
3656           This returns the Windows systemroot of the inspected guest.  The
3657           systemroot is a directory path such as /WINDOWS.
3658
3659           This call assumes that the guest is Windows and that the systemroot
3660           could be determined by inspection.  If this is not the case then an
3661           error is returned.
3662
3663           Please read "INSPECTION" in guestfs(3) for more details.
3664
3665       $live = $g->inspect_is_live ($root);
3666           This is deprecated and always returns "false".
3667
3668           Please read "INSPECTION" in guestfs(3) for more details.
3669
3670           This function is deprecated.  There is no replacement.  Consult the
3671           API documentation in guestfs(3) for further information.
3672
3673           Deprecated functions will not be removed from the API, but the fact
3674           that they are deprecated indicates that there are problems with
3675           correct use of these functions.
3676
3677       $multipart = $g->inspect_is_multipart ($root);
3678           This is deprecated and always returns "false".
3679
3680           Please read "INSPECTION" in guestfs(3) for more details.
3681
3682           This function is deprecated.  There is no replacement.  Consult the
3683           API documentation in guestfs(3) for further information.
3684
3685           Deprecated functions will not be removed from the API, but the fact
3686           that they are deprecated indicates that there are problems with
3687           correct use of these functions.
3688
3689       $netinst = $g->inspect_is_netinst ($root);
3690           This is deprecated and always returns "false".
3691
3692           Please read "INSPECTION" in guestfs(3) for more details.
3693
3694           This function is deprecated.  There is no replacement.  Consult the
3695           API documentation in guestfs(3) for further information.
3696
3697           Deprecated functions will not be removed from the API, but the fact
3698           that they are deprecated indicates that there are problems with
3699           correct use of these functions.
3700
3701       @applications = $g->inspect_list_applications ($root);
3702           Return the list of applications installed in the operating system.
3703
3704           Note: This call works differently from other parts of the
3705           inspection API.  You have to call "$g->inspect_os", then
3706           "$g->inspect_get_mountpoints", then mount up the disks, before
3707           calling this.  Listing applications is a significantly more
3708           difficult operation which requires access to the full filesystem.
3709           Also note that unlike the other "$g->inspect_get_*" calls which are
3710           just returning data cached in the libguestfs handle, this call
3711           actually reads parts of the mounted filesystems during the call.
3712
3713           This returns an empty list if the inspection code was not able to
3714           determine the list of applications.
3715
3716           The application structure contains the following fields:
3717
3718           "app_name"
3719               The name of the application.  For Linux guests, this is the
3720               package name.
3721
3722           "app_display_name"
3723               The display name of the application, sometimes localized to the
3724               install language of the guest operating system.
3725
3726               If unavailable this is returned as an empty string "".  Callers
3727               needing to display something can use "app_name" instead.
3728
3729           "app_epoch"
3730               For package managers which use epochs, this contains the epoch
3731               of the package (an integer).  If unavailable, this is returned
3732               as 0.
3733
3734           "app_version"
3735               The version string of the application or package.  If
3736               unavailable this is returned as an empty string "".
3737
3738           "app_release"
3739               The release string of the application or package, for package
3740               managers that use this.  If unavailable this is returned as an
3741               empty string "".
3742
3743           "app_install_path"
3744               The installation path of the application (on operating systems
3745               such as Windows which use installation paths).  This path is in
3746               the format used by the guest operating system, it is not a
3747               libguestfs path.
3748
3749               If unavailable this is returned as an empty string "".
3750
3751           "app_trans_path"
3752               The install path translated into a libguestfs path.  If
3753               unavailable this is returned as an empty string "".
3754
3755           "app_publisher"
3756               The name of the publisher of the application, for package
3757               managers that use this.  If unavailable this is returned as an
3758               empty string "".
3759
3760           "app_url"
3761               The URL (eg. upstream URL) of the application.  If unavailable
3762               this is returned as an empty string "".
3763
3764           "app_source_package"
3765               For packaging systems which support this, the name of the
3766               source package.  If unavailable this is returned as an empty
3767               string "".
3768
3769           "app_summary"
3770               A short (usually one line) description of the application or
3771               package.  If unavailable this is returned as an empty string
3772               "".
3773
3774           "app_description"
3775               A longer description of the application or package.  If
3776               unavailable this is returned as an empty string "".
3777
3778           Please read "INSPECTION" in guestfs(3) for more details.
3779
3780           This function is deprecated.  In new code, use the
3781           "inspect_list_applications2" call instead.
3782
3783           Deprecated functions will not be removed from the API, but the fact
3784           that they are deprecated indicates that there are problems with
3785           correct use of these functions.
3786
3787       @applications2 = $g->inspect_list_applications2 ($root);
3788           Return the list of applications installed in the operating system.
3789
3790           Note: This call works differently from other parts of the
3791           inspection API.  You have to call "$g->inspect_os", then
3792           "$g->inspect_get_mountpoints", then mount up the disks, before
3793           calling this.  Listing applications is a significantly more
3794           difficult operation which requires access to the full filesystem.
3795           Also note that unlike the other "$g->inspect_get_*" calls which are
3796           just returning data cached in the libguestfs handle, this call
3797           actually reads parts of the mounted filesystems during the call.
3798
3799           This returns an empty list if the inspection code was not able to
3800           determine the list of applications.
3801
3802           The application structure contains the following fields:
3803
3804           "app2_name"
3805               The name of the application.  For Linux guests, this is the
3806               package name.
3807
3808           "app2_display_name"
3809               The display name of the application, sometimes localized to the
3810               install language of the guest operating system.
3811
3812               If unavailable this is returned as an empty string "".  Callers
3813               needing to display something can use "app2_name" instead.
3814
3815           "app2_epoch"
3816               For package managers which use epochs, this contains the epoch
3817               of the package (an integer).  If unavailable, this is returned
3818               as 0.
3819
3820           "app2_version"
3821               The version string of the application or package.  If
3822               unavailable this is returned as an empty string "".
3823
3824           "app2_release"
3825               The release string of the application or package, for package
3826               managers that use this.  If unavailable this is returned as an
3827               empty string "".
3828
3829           "app2_arch"
3830               The architecture string of the application or package, for
3831               package managers that use this.  If unavailable this is
3832               returned as an empty string "".
3833
3834           "app2_install_path"
3835               The installation path of the application (on operating systems
3836               such as Windows which use installation paths).  This path is in
3837               the format used by the guest operating system, it is not a
3838               libguestfs path.
3839
3840               If unavailable this is returned as an empty string "".
3841
3842           "app2_trans_path"
3843               The install path translated into a libguestfs path.  If
3844               unavailable this is returned as an empty string "".
3845
3846           "app2_publisher"
3847               The name of the publisher of the application, for package
3848               managers that use this.  If unavailable this is returned as an
3849               empty string "".
3850
3851           "app2_url"
3852               The URL (eg. upstream URL) of the application.  If unavailable
3853               this is returned as an empty string "".
3854
3855           "app2_source_package"
3856               For packaging systems which support this, the name of the
3857               source package.  If unavailable this is returned as an empty
3858               string "".
3859
3860           "app2_summary"
3861               A short (usually one line) description of the application or
3862               package.  If unavailable this is returned as an empty string
3863               "".
3864
3865           "app2_description"
3866               A longer description of the application or package.  If
3867               unavailable this is returned as an empty string "".
3868
3869           Please read "INSPECTION" in guestfs(3) for more details.
3870
3871       @roots = $g->inspect_os ();
3872           This function uses other libguestfs functions and certain
3873           heuristics to inspect the disk(s) (usually disks belonging to a
3874           virtual machine), looking for operating systems.
3875
3876           The list returned is empty if no operating systems were found.
3877
3878           If one operating system was found, then this returns a list with a
3879           single element, which is the name of the root filesystem of this
3880           operating system.  It is also possible for this function to return
3881           a list containing more than one element, indicating a dual-boot or
3882           multi-boot virtual machine, with each element being the root
3883           filesystem of one of the operating systems.
3884
3885           You can pass the root string(s) returned to other
3886           "$g->inspect_get_*" functions in order to query further information
3887           about each operating system, such as the name and version.
3888
3889           This function uses other libguestfs features such as "$g->mount_ro"
3890           and "$g->umount_all" in order to mount and unmount filesystems and
3891           look at the contents.  This should be called with no disks
3892           currently mounted.  The function may also use Augeas, so any
3893           existing Augeas handle will be closed.
3894
3895           This function cannot decrypt encrypted disks.  The caller must do
3896           that first (supplying the necessary keys) if the disk is encrypted.
3897
3898           Please read "INSPECTION" in guestfs(3) for more details.
3899
3900           See also "$g->list_filesystems".
3901
3902       $flag = $g->is_blockdev ($path [, followsymlinks => $followsymlinks]);
3903           This returns "true" if and only if there is a block device with the
3904           given "path" name.
3905
3906           If the optional flag "followsymlinks" is true, then a symlink (or
3907           chain of symlinks) that ends with a block device also causes the
3908           function to return true.
3909
3910           This call only looks at files within the guest filesystem.
3911           Libguestfs partitions and block devices (eg. /dev/sda) cannot be
3912           used as the "path" parameter of this call.
3913
3914           See also "$g->stat".
3915
3916       $flag = $g->is_blockdev_opts ($path [, followsymlinks =>
3917       $followsymlinks]);
3918           This is an alias of "is_blockdev".
3919
3920       $busy = $g->is_busy ();
3921           This always returns false.  This function is deprecated with no
3922           replacement.  Do not use this function.
3923
3924           For more information on states, see guestfs(3).
3925
3926       $flag = $g->is_chardev ($path [, followsymlinks => $followsymlinks]);
3927           This returns "true" if and only if there is a character device with
3928           the given "path" name.
3929
3930           If the optional flag "followsymlinks" is true, then a symlink (or
3931           chain of symlinks) that ends with a chardev also causes the
3932           function to return true.
3933
3934           See also "$g->stat".
3935
3936       $flag = $g->is_chardev_opts ($path [, followsymlinks =>
3937       $followsymlinks]);
3938           This is an alias of "is_chardev".
3939
3940       $config = $g->is_config ();
3941           This returns true iff this handle is being configured (in the
3942           "CONFIG" state).
3943
3944           For more information on states, see guestfs(3).
3945
3946       $dirflag = $g->is_dir ($path [, followsymlinks => $followsymlinks]);
3947           This returns "true" if and only if there is a directory with the
3948           given "path" name.  Note that it returns false for other objects
3949           like files.
3950
3951           If the optional flag "followsymlinks" is true, then a symlink (or
3952           chain of symlinks) that ends with a directory also causes the
3953           function to return true.
3954
3955           See also "$g->stat".
3956
3957       $dirflag = $g->is_dir_opts ($path [, followsymlinks =>
3958       $followsymlinks]);
3959           This is an alias of "is_dir".
3960
3961       $flag = $g->is_fifo ($path [, followsymlinks => $followsymlinks]);
3962           This returns "true" if and only if there is a FIFO (named pipe)
3963           with the given "path" name.
3964
3965           If the optional flag "followsymlinks" is true, then a symlink (or
3966           chain of symlinks) that ends with a FIFO also causes the function
3967           to return true.
3968
3969           See also "$g->stat".
3970
3971       $flag = $g->is_fifo_opts ($path [, followsymlinks => $followsymlinks]);
3972           This is an alias of "is_fifo".
3973
3974       $fileflag = $g->is_file ($path [, followsymlinks => $followsymlinks]);
3975           This returns "true" if and only if there is a regular file with the
3976           given "path" name.  Note that it returns false for other objects
3977           like directories.
3978
3979           If the optional flag "followsymlinks" is true, then a symlink (or
3980           chain of symlinks) that ends with a file also causes the function
3981           to return true.
3982
3983           See also "$g->stat".
3984
3985       $fileflag = $g->is_file_opts ($path [, followsymlinks =>
3986       $followsymlinks]);
3987           This is an alias of "is_file".
3988
3989       $launching = $g->is_launching ();
3990           This returns true iff this handle is launching the subprocess (in
3991           the "LAUNCHING" state).
3992
3993           For more information on states, see guestfs(3).
3994
3995       $lvflag = $g->is_lv ($mountable);
3996           This command tests whether "mountable" is a logical volume, and
3997           returns true iff this is the case.
3998
3999       $ready = $g->is_ready ();
4000           This returns true iff this handle is ready to accept commands (in
4001           the "READY" state).
4002
4003           For more information on states, see guestfs(3).
4004
4005       $flag = $g->is_socket ($path [, followsymlinks => $followsymlinks]);
4006           This returns "true" if and only if there is a Unix domain socket
4007           with the given "path" name.
4008
4009           If the optional flag "followsymlinks" is true, then a symlink (or
4010           chain of symlinks) that ends with a socket also causes the function
4011           to return true.
4012
4013           See also "$g->stat".
4014
4015       $flag = $g->is_socket_opts ($path [, followsymlinks =>
4016       $followsymlinks]);
4017           This is an alias of "is_socket".
4018
4019       $flag = $g->is_symlink ($path);
4020           This returns "true" if and only if there is a symbolic link with
4021           the given "path" name.
4022
4023           See also "$g->stat".
4024
4025       $flag = $g->is_whole_device ($device);
4026           This returns "true" if and only if "device" refers to a whole block
4027           device. That is, not a partition or a logical device.
4028
4029       $zeroflag = $g->is_zero ($path);
4030           This returns true iff the file exists and the file is empty or it
4031           contains all zero bytes.
4032
4033       $zeroflag = $g->is_zero_device ($device);
4034           This returns true iff the device exists and contains all zero
4035           bytes.
4036
4037           Note that for large devices this can take a long time to run.
4038
4039       %isodata = $g->isoinfo ($isofile);
4040           This is the same as "$g->isoinfo_device" except that it works for
4041           an ISO file located inside some other mounted filesystem.  Note
4042           that in the common case where you have added an ISO file as a
4043           libguestfs device, you would not call this.  Instead you would call
4044           "$g->isoinfo_device".
4045
4046       %isodata = $g->isoinfo_device ($device);
4047           "device" is an ISO device.  This returns a struct of information
4048           read from the primary volume descriptor (the ISO equivalent of the
4049           superblock) of the device.
4050
4051           Usually it is more efficient to use the isoinfo(1) command with the
4052           -d option on the host to analyze ISO files, instead of going
4053           through libguestfs.
4054
4055           For information on the primary volume descriptor fields, see
4056           <https://wiki.osdev.org/ISO_9660#The_Primary_Volume_Descriptor>
4057
4058       $g->journal_close ();
4059           Close the journal handle.
4060
4061           This function depends on the feature "journal".  See also
4062           "$g->feature-available".
4063
4064       @fields = $g->journal_get ();
4065           Read the current journal entry.  This returns all the fields in the
4066           journal as a set of "(attrname, attrval)" pairs.  The "attrname" is
4067           the field name (a string).
4068
4069           The "attrval" is the field value (a binary blob, often but not
4070           always a string).  Please note that "attrval" is a byte array, not
4071           a \0-terminated C string.
4072
4073           The length of data may be truncated to the data threshold (see:
4074           "$g->journal_set_data_threshold",
4075           "$g->journal_get_data_threshold").
4076
4077           If you set the data threshold to unlimited (0) then this call can
4078           read a journal entry of any size, ie. it is not limited by the
4079           libguestfs protocol.
4080
4081           This function depends on the feature "journal".  See also
4082           "$g->feature-available".
4083
4084       $threshold = $g->journal_get_data_threshold ();
4085           Get the current data threshold for reading journal entries.  This
4086           is a hint to the journal that it may truncate data fields to this
4087           size when reading them (note also that it may not truncate them).
4088           If this returns 0, then the threshold is unlimited.
4089
4090           See also "$g->journal_set_data_threshold".
4091
4092           This function depends on the feature "journal".  See also
4093           "$g->feature-available".
4094
4095       $usec = $g->journal_get_realtime_usec ();
4096           Get the realtime (wallclock) timestamp of the current journal
4097           entry.
4098
4099           This function depends on the feature "journal".  See also
4100           "$g->feature-available".
4101
4102       $more = $g->journal_next ();
4103           Move to the next journal entry.  You have to call this at least
4104           once after opening the handle before you are able to read data.
4105
4106           The returned boolean tells you if there are any more journal
4107           records to read.  "true" means you can read the next record (eg.
4108           using "$g->journal_get"), and "false" means you have reached the
4109           end of the journal.
4110
4111           This function depends on the feature "journal".  See also
4112           "$g->feature-available".
4113
4114       $g->journal_open ($directory);
4115           Open the systemd journal located in directory.  Any previously
4116           opened journal handle is closed.
4117
4118           The contents of the journal can be read using "$g->journal_next"
4119           and "$g->journal_get".
4120
4121           After you have finished using the journal, you should close the
4122           handle by calling "$g->journal_close".
4123
4124           This function depends on the feature "journal".  See also
4125           "$g->feature-available".
4126
4127       $g->journal_set_data_threshold ($threshold);
4128           Set the data threshold for reading journal entries.  This is a hint
4129           to the journal that it may truncate data fields to this size when
4130           reading them (note also that it may not truncate them).  If you set
4131           this to 0, then the threshold is unlimited.
4132
4133           See also "$g->journal_get_data_threshold".
4134
4135           This function depends on the feature "journal".  See also
4136           "$g->feature-available".
4137
4138       $rskip = $g->journal_skip ($skip);
4139           Skip forwards ("skip X 0") or backwards ("skip < 0") in the
4140           journal.
4141
4142           The number of entries actually skipped is returned (note
4143           "rskip X 0").  If this is not the same as the absolute value of the
4144           skip parameter ("|skip|") you passed in then it means you have
4145           reached the end or the start of the journal.
4146
4147           This function depends on the feature "journal".  See also
4148           "$g->feature-available".
4149
4150       $g->kill_subprocess ();
4151           This kills the hypervisor.
4152
4153           Do not call this.  See: "$g->shutdown" instead.
4154
4155           This function is deprecated.  In new code, use the "shutdown" call
4156           instead.
4157
4158           Deprecated functions will not be removed from the API, but the fact
4159           that they are deprecated indicates that there are problems with
4160           correct use of these functions.
4161
4162       $g->launch ();
4163           You should call this after configuring the handle (eg. adding
4164           drives) but before performing any actions.
4165
4166           Do not call "$g->launch" twice on the same handle.  Although it
4167           will not give an error (for historical reasons), the precise
4168           behaviour when you do this is not well defined.  Handles are very
4169           cheap to create, so create a new one for each launch.
4170
4171       $g->lchown ($owner, $group, $path);
4172           Change the file owner to "owner" and group to "group".  This is
4173           like "$g->chown" but if "path" is a symlink then the link itself is
4174           changed, not the target.
4175
4176           Only numeric uid and gid are supported.  If you want to use names,
4177           you will need to locate and parse the password file yourself
4178           (Augeas support makes this relatively easy).
4179
4180       $g->ldmtool_create_all ();
4181           This function scans all block devices looking for Windows dynamic
4182           disk volumes and partitions, and creates devices for any that were
4183           found.
4184
4185           Call "$g->list_ldm_volumes" and "$g->list_ldm_partitions" to return
4186           all devices.
4187
4188           Note that you don't normally need to call this explicitly, since it
4189           is done automatically at "$g->launch" time.  However you might want
4190           to call this function if you have hotplugged disks or have just
4191           created a Windows dynamic disk.
4192
4193           This function depends on the feature "ldm".  See also
4194           "$g->feature-available".
4195
4196       @disks = $g->ldmtool_diskgroup_disks ($diskgroup);
4197           Return the disks in a Windows dynamic disk group.  The "diskgroup"
4198           parameter should be the GUID of a disk group, one element from the
4199           list returned by "$g->ldmtool_scan".
4200
4201           This function depends on the feature "ldm".  See also
4202           "$g->feature-available".
4203
4204       $name = $g->ldmtool_diskgroup_name ($diskgroup);
4205           Return the name of a Windows dynamic disk group.  The "diskgroup"
4206           parameter should be the GUID of a disk group, one element from the
4207           list returned by "$g->ldmtool_scan".
4208
4209           This function depends on the feature "ldm".  See also
4210           "$g->feature-available".
4211
4212       @volumes = $g->ldmtool_diskgroup_volumes ($diskgroup);
4213           Return the volumes in a Windows dynamic disk group.  The
4214           "diskgroup" parameter should be the GUID of a disk group, one
4215           element from the list returned by "$g->ldmtool_scan".
4216
4217           This function depends on the feature "ldm".  See also
4218           "$g->feature-available".
4219
4220       $g->ldmtool_remove_all ();
4221           This is essentially the opposite of "$g->ldmtool_create_all".  It
4222           removes the device mapper mappings for all Windows dynamic disk
4223           volumes
4224
4225           This function depends on the feature "ldm".  See also
4226           "$g->feature-available".
4227
4228       @guids = $g->ldmtool_scan ();
4229           This function scans for Windows dynamic disks.  It returns a list
4230           of identifiers (GUIDs) for all disk groups that were found.  These
4231           identifiers can be passed to other "$g->ldmtool_*" functions.
4232
4233           This function scans all block devices.  To scan a subset of block
4234           devices, call "$g->ldmtool_scan_devices" instead.
4235
4236           This function depends on the feature "ldm".  See also
4237           "$g->feature-available".
4238
4239       @guids = $g->ldmtool_scan_devices (\@devices);
4240           This function scans for Windows dynamic disks.  It returns a list
4241           of identifiers (GUIDs) for all disk groups that were found.  These
4242           identifiers can be passed to other "$g->ldmtool_*" functions.
4243
4244           The parameter "devices" is a list of block devices which are
4245           scanned.  If this list is empty, all block devices are scanned.
4246
4247           This function depends on the feature "ldm".  See also
4248           "$g->feature-available".
4249
4250       $hint = $g->ldmtool_volume_hint ($diskgroup, $volume);
4251           Return the hint field of the volume named "volume" in the disk
4252           group with GUID "diskgroup".  This may not be defined, in which
4253           case the empty string is returned.  The hint field is often, though
4254           not always, the name of a Windows drive, eg. "E:".
4255
4256           This function depends on the feature "ldm".  See also
4257           "$g->feature-available".
4258
4259       @partitions = $g->ldmtool_volume_partitions ($diskgroup, $volume);
4260           Return the list of partitions in the volume named "volume" in the
4261           disk group with GUID "diskgroup".
4262
4263           This function depends on the feature "ldm".  See also
4264           "$g->feature-available".
4265
4266       $voltype = $g->ldmtool_volume_type ($diskgroup, $volume);
4267           Return the type of the volume named "volume" in the disk group with
4268           GUID "diskgroup".
4269
4270           Possible volume types that can be returned here include: "simple",
4271           "spanned", "striped", "mirrored", "raid5".  Other types may also be
4272           returned.
4273
4274           This function depends on the feature "ldm".  See also
4275           "$g->feature-available".
4276
4277       $xattr = $g->lgetxattr ($path, $name);
4278           Get a single extended attribute from file "path" named "name".  If
4279           "path" is a symlink, then this call returns an extended attribute
4280           from the symlink.
4281
4282           Normally it is better to get all extended attributes from a file in
4283           one go by calling "$g->getxattrs".  However some Linux filesystem
4284           implementations are buggy and do not provide a way to list out
4285           attributes.  For these filesystems (notably ntfs-3g) you have to
4286           know the names of the extended attributes you want in advance and
4287           call this function.
4288
4289           Extended attribute values are blobs of binary data.  If there is no
4290           extended attribute named "name", this returns an error.
4291
4292           See also: "$g->lgetxattrs", "$g->getxattr", attr(5).
4293
4294           This function depends on the feature "linuxxattrs".  See also
4295           "$g->feature-available".
4296
4297       @xattrs = $g->lgetxattrs ($path);
4298           This is the same as "$g->getxattrs", but if "path" is a symbolic
4299           link, then it returns the extended attributes of the link itself.
4300
4301           This function depends on the feature "linuxxattrs".  See also
4302           "$g->feature-available".
4303
4304       @mounttags = $g->list_9p ();
4305           List all 9p filesystems attached to the guest.  A list of mount
4306           tags is returned.
4307
4308       @devices = $g->list_devices ();
4309           List all the block devices.
4310
4311           The full block device names are returned, eg. /dev/sda.
4312
4313           See also "$g->list_filesystems".
4314
4315       %labels = $g->list_disk_labels ();
4316           If you add drives using the optional "label" parameter of
4317           "$g->add_drive_opts", you can use this call to map between disk
4318           labels, and raw block device and partition names (like /dev/sda and
4319           /dev/sda1).
4320
4321           This returns a hashtable, where keys are the disk labels (without
4322           the /dev/disk/guestfs prefix), and the values are the full raw
4323           block device and partition names (eg. /dev/sda and /dev/sda1).
4324
4325       @devices = $g->list_dm_devices ();
4326           List all device mapper devices.
4327
4328           The returned list contains /dev/mapper/* devices, eg. ones created
4329           by a previous call to "$g->luks_open".
4330
4331           Device mapper devices which correspond to logical volumes are not
4332           returned in this list.  Call "$g->lvs" if you want to list logical
4333           volumes.
4334
4335       %fses = $g->list_filesystems ();
4336           This inspection command looks for filesystems on partitions, block
4337           devices and logical volumes, returning a list of "mountables"
4338           containing filesystems and their type.
4339
4340           The return value is a hash, where the keys are the devices
4341           containing filesystems, and the values are the filesystem types.
4342           For example:
4343
4344            "/dev/sda1" => "ntfs"
4345            "/dev/sda2" => "ext2"
4346            "/dev/vg_guest/lv_root" => "ext4"
4347            "/dev/vg_guest/lv_swap" => "swap"
4348
4349           The key is not necessarily a block device. It may also be an opaque
4350           XmountableX string which can be passed to "$g->mount".
4351
4352           The value can have the special value "unknown", meaning the content
4353           of the device is undetermined or empty.  "swap" means a Linux swap
4354           partition.
4355
4356           In libguestfs X 1.36 this command ran other libguestfs commands,
4357           which might have included "$g->mount" and "$g->umount", and
4358           therefore you had to use this soon after launch and only when
4359           nothing else was mounted.  This restriction is removed in
4360           libguestfs X 1.38.
4361
4362           Not all of the filesystems returned will be mountable.  In
4363           particular, swap partitions are returned in the list.  Also this
4364           command does not check that each filesystem found is valid and
4365           mountable, and some filesystems might be mountable but require
4366           special options.  Filesystems may not all belong to a single
4367           logical operating system (use "$g->inspect_os" to look for OSes).
4368
4369       @devices = $g->list_ldm_partitions ();
4370           This function returns all Windows dynamic disk partitions that were
4371           found at launch time.  It returns a list of device names.
4372
4373           This function depends on the feature "ldm".  See also
4374           "$g->feature-available".
4375
4376       @devices = $g->list_ldm_volumes ();
4377           This function returns all Windows dynamic disk volumes that were
4378           found at launch time.  It returns a list of device names.
4379
4380           This function depends on the feature "ldm".  See also
4381           "$g->feature-available".
4382
4383       @devices = $g->list_md_devices ();
4384           List all Linux md devices.
4385
4386       @partitions = $g->list_partitions ();
4387           List all the partitions detected on all block devices.
4388
4389           The full partition device names are returned, eg. /dev/sda1
4390
4391           This does not return logical volumes.  For that you will need to
4392           call "$g->lvs".
4393
4394           See also "$g->list_filesystems".
4395
4396       $listing = $g->ll ($directory);
4397           List the files in directory (relative to the root directory, there
4398           is no cwd) in the format of "ls -la".
4399
4400           This command is mostly useful for interactive sessions.  It is not
4401           intended that you try to parse the output string.
4402
4403       $listing = $g->llz ($directory);
4404           List the files in directory in the format of "ls -laZ".
4405
4406           This command is mostly useful for interactive sessions.  It is not
4407           intended that you try to parse the output string.
4408
4409           This function is deprecated.  In new code, use the "lgetxattrs"
4410           call instead.
4411
4412           Deprecated functions will not be removed from the API, but the fact
4413           that they are deprecated indicates that there are problems with
4414           correct use of these functions.
4415
4416       $g->ln ($target, $linkname);
4417           This command creates a hard link.
4418
4419       $g->ln_f ($target, $linkname);
4420           This command creates a hard link, removing the link "linkname" if
4421           it exists already.
4422
4423       $g->ln_s ($target, $linkname);
4424           This command creates a symbolic link using the "ln -s" command.
4425
4426       $g->ln_sf ($target, $linkname);
4427           This command creates a symbolic link using the "ln -sf" command,
4428           The -f option removes the link ("linkname") if it exists already.
4429
4430       $g->lremovexattr ($xattr, $path);
4431           This is the same as "$g->removexattr", but if "path" is a symbolic
4432           link, then it removes an extended attribute of the link itself.
4433
4434           This function depends on the feature "linuxxattrs".  See also
4435           "$g->feature-available".
4436
4437       @listing = $g->ls ($directory);
4438           List the files in directory (relative to the root directory, there
4439           is no cwd).  The "." and ".." entries are not returned, but hidden
4440           files are shown.
4441
4442       $g->ls0 ($dir, $filenames);
4443           This specialized command is used to get a listing of the filenames
4444           in the directory "dir".  The list of filenames is written to the
4445           local file filenames (on the host).
4446
4447           In the output file, the filenames are separated by "\0" characters.
4448
4449           "." and ".." are not returned.  The filenames are not sorted.
4450
4451       $g->lsetxattr ($xattr, $val, $vallen, $path);
4452           This is the same as "$g->setxattr", but if "path" is a symbolic
4453           link, then it sets an extended attribute of the link itself.
4454
4455           This function depends on the feature "linuxxattrs".  See also
4456           "$g->feature-available".
4457
4458       %statbuf = $g->lstat ($path);
4459           Returns file information for the given "path".
4460
4461           This is the same as "$g->stat" except that if "path" is a symbolic
4462           link, then the link is stat-ed, not the file it refers to.
4463
4464           This is the same as the lstat(2) system call.
4465
4466           This function is deprecated.  In new code, use the "lstatns" call
4467           instead.
4468
4469           Deprecated functions will not be removed from the API, but the fact
4470           that they are deprecated indicates that there are problems with
4471           correct use of these functions.
4472
4473       @statbufs = $g->lstatlist ($path, \@names);
4474           This call allows you to perform the "$g->lstat" operation on
4475           multiple files, where all files are in the directory "path".
4476           "names" is the list of files from this directory.
4477
4478           On return you get a list of stat structs, with a one-to-one
4479           correspondence to the "names" list.  If any name did not exist or
4480           could not be lstat'd, then the "st_ino" field of that structure is
4481           set to "-1".
4482
4483           This call is intended for programs that want to efficiently list a
4484           directory contents without making many round-trips.  See also
4485           "$g->lxattrlist" for a similarly efficient call for getting
4486           extended attributes.
4487
4488           This function is deprecated.  In new code, use the "lstatnslist"
4489           call instead.
4490
4491           Deprecated functions will not be removed from the API, but the fact
4492           that they are deprecated indicates that there are problems with
4493           correct use of these functions.
4494
4495       %statbuf = $g->lstatns ($path);
4496           Returns file information for the given "path".
4497
4498           This is the same as "$g->statns" except that if "path" is a
4499           symbolic link, then the link is stat-ed, not the file it refers to.
4500
4501           This is the same as the lstat(2) system call.
4502
4503       @statbufs = $g->lstatnslist ($path, \@names);
4504           This call allows you to perform the "$g->lstatns" operation on
4505           multiple files, where all files are in the directory "path".
4506           "names" is the list of files from this directory.
4507
4508           On return you get a list of stat structs, with a one-to-one
4509           correspondence to the "names" list.  If any name did not exist or
4510           could not be lstat'd, then the "st_ino" field of that structure is
4511           set to "-1".
4512
4513           This call is intended for programs that want to efficiently list a
4514           directory contents without making many round-trips.  See also
4515           "$g->lxattrlist" for a similarly efficient call for getting
4516           extended attributes.
4517
4518       $g->luks_add_key ($device, $key, $newkey, $keyslot);
4519           This command adds a new key on LUKS device "device".  "key" is any
4520           existing key, and is used to access the device.  "newkey" is the
4521           new key to add.  "keyslot" is the key slot that will be replaced.
4522
4523           Note that if "keyslot" already contains a key, then this command
4524           will fail.  You have to use "$g->luks_kill_slot" first to remove
4525           that key.
4526
4527           This function depends on the feature "luks".  See also
4528           "$g->feature-available".
4529
4530       $g->luks_close ($device);
4531           This closes a LUKS device that was created earlier by
4532           "$g->luks_open" or "$g->luks_open_ro".  The "device" parameter must
4533           be the name of the LUKS mapping device (ie. /dev/mapper/mapname)
4534           and not the name of the underlying block device.
4535
4536           This function depends on the feature "luks".  See also
4537           "$g->feature-available".
4538
4539           This function is deprecated.  In new code, use the
4540           "cryptsetup_close" call instead.
4541
4542           Deprecated functions will not be removed from the API, but the fact
4543           that they are deprecated indicates that there are problems with
4544           correct use of these functions.
4545
4546       $g->luks_format ($device, $key, $keyslot);
4547           This command erases existing data on "device" and formats the
4548           device as a LUKS encrypted device.  "key" is the initial key, which
4549           is added to key slot "keyslot".  (LUKS supports 8 key slots,
4550           numbered 0-7).
4551
4552           This function depends on the feature "luks".  See also
4553           "$g->feature-available".
4554
4555       $g->luks_format_cipher ($device, $key, $keyslot, $cipher);
4556           This command is the same as "$g->luks_format" but it also allows
4557           you to set the "cipher" used.
4558
4559           This function depends on the feature "luks".  See also
4560           "$g->feature-available".
4561
4562       $g->luks_kill_slot ($device, $key, $keyslot);
4563           This command deletes the key in key slot "keyslot" from the
4564           encrypted LUKS device "device".  "key" must be one of the other
4565           keys.
4566
4567           This function depends on the feature "luks".  See also
4568           "$g->feature-available".
4569
4570       $g->luks_open ($device, $key, $mapname);
4571           This command opens a block device which has been encrypted
4572           according to the Linux Unified Key Setup (LUKS) standard.
4573
4574           "device" is the encrypted block device or partition.
4575
4576           The caller must supply one of the keys associated with the LUKS
4577           block device, in the "key" parameter.
4578
4579           This creates a new block device called /dev/mapper/mapname.  Reads
4580           and writes to this block device are decrypted from and encrypted to
4581           the underlying "device" respectively.
4582
4583           If this block device contains LVM volume groups, then calling
4584           "$g->lvm_scan" with the "activate" parameter "true" will make them
4585           visible.
4586
4587           Use "$g->list_dm_devices" to list all device mapper devices.
4588
4589           This function depends on the feature "luks".  See also
4590           "$g->feature-available".
4591
4592           This function is deprecated.  In new code, use the
4593           "cryptsetup_open" call instead.
4594
4595           Deprecated functions will not be removed from the API, but the fact
4596           that they are deprecated indicates that there are problems with
4597           correct use of these functions.
4598
4599       $g->luks_open_ro ($device, $key, $mapname);
4600           This is the same as "$g->luks_open" except that a read-only mapping
4601           is created.
4602
4603           This function depends on the feature "luks".  See also
4604           "$g->feature-available".
4605
4606           This function is deprecated.  In new code, use the
4607           "cryptsetup_open" call instead.
4608
4609           Deprecated functions will not be removed from the API, but the fact
4610           that they are deprecated indicates that there are problems with
4611           correct use of these functions.
4612
4613       $uuid = $g->luks_uuid ($device);
4614           This returns the UUID of the LUKS device "device".
4615
4616           This function depends on the feature "luks".  See also
4617           "$g->feature-available".
4618
4619       $g->lvcreate ($logvol, $volgroup, $mbytes);
4620           This creates an LVM logical volume called "logvol" on the volume
4621           group "volgroup", with "size" megabytes.
4622
4623           This function depends on the feature "lvm2".  See also
4624           "$g->feature-available".
4625
4626       $g->lvcreate_free ($logvol, $volgroup, $percent);
4627           Create an LVM logical volume called /dev/volgroup/logvol, using
4628           approximately "percent" % of the free space remaining in the volume
4629           group.  Most usefully, when "percent" is 100 this will create the
4630           largest possible LV.
4631
4632           This function depends on the feature "lvm2".  See also
4633           "$g->feature-available".
4634
4635       $lv = $g->lvm_canonical_lv_name ($lvname);
4636           This converts alternative naming schemes for LVs that you might
4637           find to the canonical name.  For example, /dev/mapper/VG-LV is
4638           converted to /dev/VG/LV.
4639
4640           This command returns an error if the "lvname" parameter does not
4641           refer to a logical volume.  In this case errno will be set to
4642           "EINVAL".
4643
4644           See also "$g->is_lv", "$g->canonical_device_name".
4645
4646       $g->lvm_clear_filter ();
4647           This undoes the effect of "$g->lvm_set_filter".  LVM will be able
4648           to see every block device.
4649
4650           This command also clears the LVM cache and performs a volume group
4651           scan.
4652
4653       $g->lvm_remove_all ();
4654           This command removes all LVM logical volumes, volume groups and
4655           physical volumes.
4656
4657           This function depends on the feature "lvm2".  See also
4658           "$g->feature-available".
4659
4660       $g->lvm_scan ($activate);
4661           This scans all block devices and rebuilds the list of LVM physical
4662           volumes, volume groups and logical volumes.
4663
4664           If the "activate" parameter is "true" then newly found volume
4665           groups and logical volumes are activated, meaning the LV /dev/VG/LV
4666           devices become visible.
4667
4668           When a libguestfs handle is launched it scans for existing devices,
4669           so you do not normally need to use this API.  However it is useful
4670           when you have added a new device or deleted an existing device
4671           (such as when the "$g->luks_open" API is used).
4672
4673       $g->lvm_set_filter (\@devices);
4674           This sets the LVM device filter so that LVM will only be able to
4675           "see" the block devices in the list "devices", and will ignore all
4676           other attached block devices.
4677
4678           Where disk image(s) contain duplicate PVs or VGs, this command is
4679           useful to get LVM to ignore the duplicates, otherwise LVM can get
4680           confused.  Note also there are two types of duplication possible:
4681           either cloned PVs/VGs which have identical UUIDs; or VGs that are
4682           not cloned but just happen to have the same name.  In normal
4683           operation you cannot create this situation, but you can do it
4684           outside LVM, eg.  by cloning disk images or by bit twiddling inside
4685           the LVM metadata.
4686
4687           This command also clears the LVM cache and performs a volume group
4688           scan.
4689
4690           You can filter whole block devices or individual partitions.
4691
4692           You cannot use this if any VG is currently in use (eg.  contains a
4693           mounted filesystem), even if you are not filtering out that VG.
4694
4695           This function depends on the feature "lvm2".  See also
4696           "$g->feature-available".
4697
4698       $g->lvremove ($device);
4699           Remove an LVM logical volume "device", where "device" is the path
4700           to the LV, such as /dev/VG/LV.
4701
4702           You can also remove all LVs in a volume group by specifying the VG
4703           name, /dev/VG.
4704
4705           This function depends on the feature "lvm2".  See also
4706           "$g->feature-available".
4707
4708       $g->lvrename ($logvol, $newlogvol);
4709           Rename a logical volume "logvol" with the new name "newlogvol".
4710
4711       $g->lvresize ($device, $mbytes);
4712           This resizes (expands or shrinks) an existing LVM logical volume to
4713           "mbytes".  When reducing, data in the reduced part is lost.
4714
4715           This function depends on the feature "lvm2".  See also
4716           "$g->feature-available".
4717
4718       $g->lvresize_free ($lv, $percent);
4719           This expands an existing logical volume "lv" so that it fills "pc"
4720           % of the remaining free space in the volume group.  Commonly you
4721           would call this with pc = 100 which expands the logical volume as
4722           much as possible, using all remaining free space in the volume
4723           group.
4724
4725           This function depends on the feature "lvm2".  See also
4726           "$g->feature-available".
4727
4728       @logvols = $g->lvs ();
4729           List all the logical volumes detected.  This is the equivalent of
4730           the lvs(8) command.
4731
4732           This returns a list of the logical volume device names (eg.
4733           /dev/VolGroup00/LogVol00).
4734
4735           See also "$g->lvs_full", "$g->list_filesystems".
4736
4737           This function depends on the feature "lvm2".  See also
4738           "$g->feature-available".
4739
4740       @logvols = $g->lvs_full ();
4741           List all the logical volumes detected.  This is the equivalent of
4742           the lvs(8) command.  The "full" version includes all fields.
4743
4744           This function depends on the feature "lvm2".  See also
4745           "$g->feature-available".
4746
4747       $uuid = $g->lvuuid ($device);
4748           This command returns the UUID of the LVM LV "device".
4749
4750       @xattrs = $g->lxattrlist ($path, \@names);
4751           This call allows you to get the extended attributes of multiple
4752           files, where all files are in the directory "path".  "names" is the
4753           list of files from this directory.
4754
4755           On return you get a flat list of xattr structs which must be
4756           interpreted sequentially.  The first xattr struct always has a
4757           zero-length "attrname".  "attrval" in this struct is zero-length to
4758           indicate there was an error doing "$g->lgetxattr" for this file, or
4759           is a C string which is a decimal number (the number of following
4760           attributes for this file, which could be "0").  Then after the
4761           first xattr struct are the zero or more attributes for the first
4762           named file.  This repeats for the second and subsequent files.
4763
4764           This call is intended for programs that want to efficiently list a
4765           directory contents without making many round-trips.  See also
4766           "$g->lstatlist" for a similarly efficient call for getting standard
4767           stats.
4768
4769           This function depends on the feature "linuxxattrs".  See also
4770           "$g->feature-available".
4771
4772       $disks = $g->max_disks ();
4773           Return the maximum number of disks that may be added to a handle
4774           (eg. by "$g->add_drive_opts" and similar calls).
4775
4776           This function was added in libguestfs 1.19.7.  In previous versions
4777           of libguestfs the limit was 25.
4778
4779           See "MAXIMUM NUMBER OF DISKS" in guestfs(3) for additional
4780           information on this topic.
4781
4782       $g->md_create ($name, \@devices [, missingbitmap => $missingbitmap] [,
4783       nrdevices => $nrdevices] [, spare => $spare] [, chunk => $chunk] [,
4784       level => $level]);
4785           Create a Linux md (RAID) device named "name" on the devices in the
4786           list "devices".
4787
4788           The optional parameters are:
4789
4790           "missingbitmap"
4791               A bitmap of missing devices.  If a bit is set it means that a
4792               missing device is added to the array.  The least significant
4793               bit corresponds to the first device in the array.
4794
4795               As examples:
4796
4797               If "devices = ["/dev/sda"]" and "missingbitmap = 0x1" then the
4798               resulting array would be "[<missing>, "/dev/sda"]".
4799
4800               If "devices = ["/dev/sda"]" and "missingbitmap = 0x2" then the
4801               resulting array would be "["/dev/sda", <missing>]".
4802
4803               This defaults to 0 (no missing devices).
4804
4805               The length of "devices" + the number of bits set in
4806               "missingbitmap" must equal "nrdevices" + "spare".
4807
4808           "nrdevices"
4809               The number of active RAID devices.
4810
4811               If not set, this defaults to the length of "devices" plus the
4812               number of bits set in "missingbitmap".
4813
4814           "spare"
4815               The number of spare devices.
4816
4817               If not set, this defaults to 0.
4818
4819           "chunk"
4820               The chunk size in bytes.
4821
4822           "level"
4823               The RAID level, which can be one of: "linear", "raid0", 0,
4824               "stripe", "raid1", 1, "mirror", "raid4", 4, "raid5", 5,
4825               "raid6", 6, "raid10", 10.  Some of these are synonymous, and
4826               more levels may be added in future.
4827
4828               If not set, this defaults to "raid1".
4829
4830           This function depends on the feature "mdadm".  See also
4831           "$g->feature-available".
4832
4833       %info = $g->md_detail ($md);
4834           This command exposes the output of "mdadm -DY <md>".  The following
4835           fields are usually present in the returned hash.  Other fields may
4836           also be present.
4837
4838           "level"
4839               The raid level of the MD device.
4840
4841           "devices"
4842               The number of underlying devices in the MD device.
4843
4844           "metadata"
4845               The metadata version used.
4846
4847           "uuid"
4848               The UUID of the MD device.
4849
4850           "name"
4851               The name of the MD device.
4852
4853           This function depends on the feature "mdadm".  See also
4854           "$g->feature-available".
4855
4856       @devices = $g->md_stat ($md);
4857           This call returns a list of the underlying devices which make up
4858           the single software RAID array device "md".
4859
4860           To get a list of software RAID devices, call "$g->list_md_devices".
4861
4862           Each structure returned corresponds to one device along with
4863           additional status information:
4864
4865           "mdstat_device"
4866               The name of the underlying device.
4867
4868           "mdstat_index"
4869               The index of this device within the array.
4870
4871           "mdstat_flags"
4872               Flags associated with this device.  This is a string containing
4873               (in no specific order) zero or more of the following flags:
4874
4875               "W" write-mostly
4876
4877               "F" device is faulty
4878
4879               "S" device is a RAID spare
4880
4881               "R" replacement
4882
4883           This function depends on the feature "mdadm".  See also
4884           "$g->feature-available".
4885
4886       $g->md_stop ($md);
4887           This command deactivates the MD array named "md".  The device is
4888           stopped, but it is not destroyed or zeroed.
4889
4890           This function depends on the feature "mdadm".  See also
4891           "$g->feature-available".
4892
4893       $g->mkdir ($path);
4894           Create a directory named "path".
4895
4896       $g->mkdir_mode ($path, $mode);
4897           This command creates a directory, setting the initial permissions
4898           of the directory to "mode".
4899
4900           For common Linux filesystems, the actual mode which is set will be
4901           "mode & ~umask & 01777".  Non-native-Linux filesystems may
4902           interpret the mode in other ways.
4903
4904           See also "$g->mkdir", "$g->umask"
4905
4906       $g->mkdir_p ($path);
4907           Create a directory named "path", creating any parent directories as
4908           necessary.  This is like the "mkdir -p" shell command.
4909
4910       $dir = $g->mkdtemp ($tmpl);
4911           This command creates a temporary directory.  The "tmpl" parameter
4912           should be a full pathname for the temporary directory name with the
4913           final six characters being "XXXXXX".
4914
4915           For example: "/tmp/myprogXXXXXX" or "/Temp/myprogXXXXXX", the
4916           second one being suitable for Windows filesystems.
4917
4918           The name of the temporary directory that was created is returned.
4919
4920           The temporary directory is created with mode 0700 and is owned by
4921           root.
4922
4923           The caller is responsible for deleting the temporary directory and
4924           its contents after use.
4925
4926           See also: mkdtemp(3)
4927
4928       $g->mke2fs ($device [, blockscount => $blockscount] [, blocksize =>
4929       $blocksize] [, fragsize => $fragsize] [, blockspergroup =>
4930       $blockspergroup] [, numberofgroups => $numberofgroups] [, bytesperinode
4931       => $bytesperinode] [, inodesize => $inodesize] [, journalsize =>
4932       $journalsize] [, numberofinodes => $numberofinodes] [, stridesize =>
4933       $stridesize] [, stripewidth => $stripewidth] [, maxonlineresize =>
4934       $maxonlineresize] [, reservedblockspercentage =>
4935       $reservedblockspercentage] [, mmpupdateinterval => $mmpupdateinterval]
4936       [, journaldevice => $journaldevice] [, label => $label] [,
4937       lastmounteddir => $lastmounteddir] [, creatoros => $creatoros] [,
4938       fstype => $fstype] [, usagetype => $usagetype] [, uuid => $uuid] [,
4939       forcecreate => $forcecreate] [, writesbandgrouponly =>
4940       $writesbandgrouponly] [, lazyitableinit => $lazyitableinit] [,
4941       lazyjournalinit => $lazyjournalinit] [, testfs => $testfs] [, discard
4942       => $discard] [, quotatype => $quotatype] [, extent => $extent] [,
4943       filetype => $filetype] [, flexbg => $flexbg] [, hasjournal =>
4944       $hasjournal] [, journaldev => $journaldev] [, largefile => $largefile]
4945       [, quota => $quota] [, resizeinode => $resizeinode] [, sparsesuper =>
4946       $sparsesuper] [, uninitbg => $uninitbg]);
4947           "mke2fs" is used to create an ext2, ext3, or ext4 filesystem on
4948           "device".
4949
4950           The optional "blockscount" is the size of the filesystem in blocks.
4951           If omitted it defaults to the size of "device".  Note if the
4952           filesystem is too small to contain a journal, "mke2fs" will
4953           silently create an ext2 filesystem instead.
4954
4955       $g->mke2fs_J ($fstype, $blocksize, $device, $journal);
4956           This creates an ext2/3/4 filesystem on "device" with an external
4957           journal on "journal".  It is equivalent to the command:
4958
4959            mke2fs -t fstype -b blocksize -J device=<journal> <device>
4960
4961           See also "$g->mke2journal".
4962
4963           This function is deprecated.  In new code, use the "mke2fs" call
4964           instead.
4965
4966           Deprecated functions will not be removed from the API, but the fact
4967           that they are deprecated indicates that there are problems with
4968           correct use of these functions.
4969
4970       $g->mke2fs_JL ($fstype, $blocksize, $device, $label);
4971           This creates an ext2/3/4 filesystem on "device" with an external
4972           journal on the journal labeled "label".
4973
4974           See also "$g->mke2journal_L".
4975
4976           This function is deprecated.  In new code, use the "mke2fs" call
4977           instead.
4978
4979           Deprecated functions will not be removed from the API, but the fact
4980           that they are deprecated indicates that there are problems with
4981           correct use of these functions.
4982
4983       $g->mke2fs_JU ($fstype, $blocksize, $device, $uuid);
4984           This creates an ext2/3/4 filesystem on "device" with an external
4985           journal on the journal with UUID "uuid".
4986
4987           See also "$g->mke2journal_U".
4988
4989           This function depends on the feature "linuxfsuuid".  See also
4990           "$g->feature-available".
4991
4992           This function is deprecated.  In new code, use the "mke2fs" call
4993           instead.
4994
4995           Deprecated functions will not be removed from the API, but the fact
4996           that they are deprecated indicates that there are problems with
4997           correct use of these functions.
4998
4999       $g->mke2journal ($blocksize, $device);
5000           This creates an ext2 external journal on "device".  It is
5001           equivalent to the command:
5002
5003            mke2fs -O journal_dev -b blocksize device
5004
5005           This function is deprecated.  In new code, use the "mke2fs" call
5006           instead.
5007
5008           Deprecated functions will not be removed from the API, but the fact
5009           that they are deprecated indicates that there are problems with
5010           correct use of these functions.
5011
5012       $g->mke2journal_L ($blocksize, $label, $device);
5013           This creates an ext2 external journal on "device" with label
5014           "label".
5015
5016           This function is deprecated.  In new code, use the "mke2fs" call
5017           instead.
5018
5019           Deprecated functions will not be removed from the API, but the fact
5020           that they are deprecated indicates that there are problems with
5021           correct use of these functions.
5022
5023       $g->mke2journal_U ($blocksize, $uuid, $device);
5024           This creates an ext2 external journal on "device" with UUID "uuid".
5025
5026           This function depends on the feature "linuxfsuuid".  See also
5027           "$g->feature-available".
5028
5029           This function is deprecated.  In new code, use the "mke2fs" call
5030           instead.
5031
5032           Deprecated functions will not be removed from the API, but the fact
5033           that they are deprecated indicates that there are problems with
5034           correct use of these functions.
5035
5036       $g->mkfifo ($mode, $path);
5037           This call creates a FIFO (named pipe) called "path" with mode
5038           "mode".  It is just a convenient wrapper around "$g->mknod".
5039
5040           Unlike with "$g->mknod", "mode" must contain only permissions bits.
5041
5042           The mode actually set is affected by the umask.
5043
5044           This function depends on the feature "mknod".  See also
5045           "$g->feature-available".
5046
5047       $g->mkfs ($fstype, $device [, blocksize => $blocksize] [, features =>
5048       $features] [, inode => $inode] [, sectorsize => $sectorsize] [, label
5049       => $label]);
5050           This function creates a filesystem on "device".  The filesystem
5051           type is "fstype", for example "ext3".
5052
5053           The optional arguments are:
5054
5055           "blocksize"
5056               The filesystem block size.  Supported block sizes depend on the
5057               filesystem type, but typically they are 1024, 2048 or 4096 for
5058               Linux ext2/3 filesystems.
5059
5060               For VFAT and NTFS the "blocksize" parameter is treated as the
5061               requested cluster size.
5062
5063               For UFS block sizes, please see mkfs.ufs(8).
5064
5065           "features"
5066               This passes the -O parameter to the external mkfs program.
5067
5068               For certain filesystem types, this allows extra filesystem
5069               features to be selected.  See mke2fs(8) and mkfs.ufs(8) for
5070               more details.
5071
5072               You cannot use this optional parameter with the "gfs" or "gfs2"
5073               filesystem type.
5074
5075           "inode"
5076               This passes the -I parameter to the external mke2fs(8) program
5077               which sets the inode size (only for ext2/3/4 filesystems at
5078               present).
5079
5080           "sectorsize"
5081               This passes the -S parameter to external mkfs.ufs(8) program,
5082               which sets sector size for ufs filesystem.
5083
5084       $g->mkfs_opts ($fstype, $device [, blocksize => $blocksize] [, features
5085       => $features] [, inode => $inode] [, sectorsize => $sectorsize] [,
5086       label => $label]);
5087           This is an alias of "mkfs".
5088
5089       $g->mkfs_b ($fstype, $blocksize, $device);
5090           This call is similar to "$g->mkfs", but it allows you to control
5091           the block size of the resulting filesystem.  Supported block sizes
5092           depend on the filesystem type, but typically they are 1024, 2048 or
5093           4096 only.
5094
5095           For VFAT and NTFS the "blocksize" parameter is treated as the
5096           requested cluster size.
5097
5098           This function is deprecated.  In new code, use the "mkfs" call
5099           instead.
5100
5101           Deprecated functions will not be removed from the API, but the fact
5102           that they are deprecated indicates that there are problems with
5103           correct use of these functions.
5104
5105       $g->mkfs_btrfs (\@devices [, allocstart => $allocstart] [, bytecount =>
5106       $bytecount] [, datatype => $datatype] [, leafsize => $leafsize] [,
5107       label => $label] [, metadata => $metadata] [, nodesize => $nodesize] [,
5108       sectorsize => $sectorsize]);
5109           Create a btrfs filesystem, allowing all configurables to be set.
5110           For more information on the optional arguments, see mkfs.btrfs(8).
5111
5112           Since btrfs filesystems can span multiple devices, this takes a
5113           non-empty list of devices.
5114
5115           To create general filesystems, use "$g->mkfs".
5116
5117           This function depends on the feature "btrfs".  See also
5118           "$g->feature-available".
5119
5120       $g->mklost_and_found ($mountpoint);
5121           Make the "lost+found" directory, normally in the root directory of
5122           an ext2/3/4 filesystem.  "mountpoint" is the directory under which
5123           we try to create the "lost+found" directory.
5124
5125       $g->mkmountpoint ($exemptpath);
5126           "$g->mkmountpoint" and "$g->rmmountpoint" are specialized calls
5127           that can be used to create extra mountpoints before mounting the
5128           first filesystem.
5129
5130           These calls are only necessary in some very limited circumstances,
5131           mainly the case where you want to mount a mix of unrelated and/or
5132           read-only filesystems together.
5133
5134           For example, live CDs often contain a "Russian doll" nest of
5135           filesystems, an ISO outer layer, with a squashfs image inside, with
5136           an ext2/3 image inside that.  You can unpack this as follows in
5137           guestfish:
5138
5139            add-ro Fedora-11-i686-Live.iso
5140            run
5141            mkmountpoint /cd
5142            mkmountpoint /sqsh
5143            mkmountpoint /ext3fs
5144            mount /dev/sda /cd
5145            mount-loop /cd/LiveOS/squashfs.img /sqsh
5146            mount-loop /sqsh/LiveOS/ext3fs.img /ext3fs
5147
5148           The inner filesystem is now unpacked under the /ext3fs mountpoint.
5149
5150           "$g->mkmountpoint" is not compatible with "$g->umount_all".  You
5151           may get unexpected errors if you try to mix these calls.  It is
5152           safest to manually unmount filesystems and remove mountpoints after
5153           use.
5154
5155           "$g->umount_all" unmounts filesystems by sorting the paths longest
5156           first, so for this to work for manual mountpoints, you must ensure
5157           that the innermost mountpoints have the longest pathnames, as in
5158           the example code above.
5159
5160           For more details see
5161           <https://bugzilla.redhat.com/show_bug.cgi?id=599503>
5162
5163           Autosync [see "$g->set_autosync", this is set by default on
5164           handles] can cause "$g->umount_all" to be called when the handle is
5165           closed which can also trigger these issues.
5166
5167       $g->mknod ($mode, $devmajor, $devminor, $path);
5168           This call creates block or character special devices, or named
5169           pipes (FIFOs).
5170
5171           The "mode" parameter should be the mode, using the standard
5172           constants.  "devmajor" and "devminor" are the device major and
5173           minor numbers, only used when creating block and character special
5174           devices.
5175
5176           Note that, just like mknod(2), the mode must be bitwise OR'd with
5177           S_IFBLK, S_IFCHR, S_IFIFO or S_IFSOCK (otherwise this call just
5178           creates a regular file).  These constants are available in the
5179           standard Linux header files, or you can use "$g->mknod_b",
5180           "$g->mknod_c" or "$g->mkfifo" which are wrappers around this
5181           command which bitwise OR in the appropriate constant for you.
5182
5183           The mode actually set is affected by the umask.
5184
5185           This function depends on the feature "mknod".  See also
5186           "$g->feature-available".
5187
5188       $g->mknod_b ($mode, $devmajor, $devminor, $path);
5189           This call creates a block device node called "path" with mode
5190           "mode" and device major/minor "devmajor" and "devminor".  It is
5191           just a convenient wrapper around "$g->mknod".
5192
5193           Unlike with "$g->mknod", "mode" must contain only permissions bits.
5194
5195           The mode actually set is affected by the umask.
5196
5197           This function depends on the feature "mknod".  See also
5198           "$g->feature-available".
5199
5200       $g->mknod_c ($mode, $devmajor, $devminor, $path);
5201           This call creates a char device node called "path" with mode "mode"
5202           and device major/minor "devmajor" and "devminor".  It is just a
5203           convenient wrapper around "$g->mknod".
5204
5205           Unlike with "$g->mknod", "mode" must contain only permissions bits.
5206
5207           The mode actually set is affected by the umask.
5208
5209           This function depends on the feature "mknod".  See also
5210           "$g->feature-available".
5211
5212       $g->mksquashfs ($path, $filename [, compress => $compress] [, excludes
5213       => $excludes]);
5214           Create a squashfs filesystem for the specified "path".
5215
5216           The optional "compress" flag controls compression.  If not given,
5217           then the output compressed using "gzip".  Otherwise one of the
5218           following strings may be given to select the compression type of
5219           the squashfs: "gzip", "lzma", "lzo", "lz4", "xz".
5220
5221           The other optional arguments are:
5222
5223           "excludes"
5224               A list of wildcards.  Files are excluded if they match any of
5225               the wildcards.
5226
5227           Please note that this API may fail when used to compress
5228           directories with large files, such as the resulting squashfs will
5229           be over 3GB big.
5230
5231           This function depends on the feature "squashfs".  See also
5232           "$g->feature-available".
5233
5234       $g->mkswap ($device [, label => $label] [, uuid => $uuid]);
5235           Create a Linux swap partition on "device".
5236
5237           The option arguments "label" and "uuid" allow you to set the label
5238           and/or UUID of the new swap partition.
5239
5240       $g->mkswap_opts ($device [, label => $label] [, uuid => $uuid]);
5241           This is an alias of "mkswap".
5242
5243       $g->mkswap_L ($label, $device);
5244           Create a swap partition on "device" with label "label".
5245
5246           Note that you cannot attach a swap label to a block device (eg.
5247           /dev/sda), just to a partition.  This appears to be a limitation of
5248           the kernel or swap tools.
5249
5250           This function is deprecated.  In new code, use the "mkswap" call
5251           instead.
5252
5253           Deprecated functions will not be removed from the API, but the fact
5254           that they are deprecated indicates that there are problems with
5255           correct use of these functions.
5256
5257       $g->mkswap_U ($uuid, $device);
5258           Create a swap partition on "device" with UUID "uuid".
5259
5260           This function depends on the feature "linuxfsuuid".  See also
5261           "$g->feature-available".
5262
5263           This function is deprecated.  In new code, use the "mkswap" call
5264           instead.
5265
5266           Deprecated functions will not be removed from the API, but the fact
5267           that they are deprecated indicates that there are problems with
5268           correct use of these functions.
5269
5270       $g->mkswap_file ($path);
5271           Create a swap file.
5272
5273           This command just writes a swap file signature to an existing file.
5274           To create the file itself, use something like "$g->fallocate".
5275
5276       $path = $g->mktemp ($tmpl [, suffix => $suffix]);
5277           This command creates a temporary file.  The "tmpl" parameter should
5278           be a full pathname for the temporary directory name with the final
5279           six characters being "XXXXXX".
5280
5281           For example: "/tmp/myprogXXXXXX" or "/Temp/myprogXXXXXX", the
5282           second one being suitable for Windows filesystems.
5283
5284           The name of the temporary file that was created is returned.
5285
5286           The temporary file is created with mode 0600 and is owned by root.
5287
5288           The caller is responsible for deleting the temporary file after
5289           use.
5290
5291           If the optional "suffix" parameter is given, then the suffix (eg.
5292           ".txt") is appended to the temporary name.
5293
5294           See also: "$g->mkdtemp".
5295
5296       $g->modprobe ($modulename);
5297           This loads a kernel module in the appliance.
5298
5299           This function depends on the feature "linuxmodules".  See also
5300           "$g->feature-available".
5301
5302       $g->mount ($mountable, $mountpoint);
5303           Mount a guest disk at a position in the filesystem.  Block devices
5304           are named /dev/sda, /dev/sdb and so on, as they were added to the
5305           guest.  If those block devices contain partitions, they will have
5306           the usual names (eg. /dev/sda1).  Also LVM /dev/VG/LV-style names
5307           can be used, or XmountableX strings returned by
5308           "$g->list_filesystems" or "$g->inspect_get_mountpoints".
5309
5310           The rules are the same as for mount(2):  A filesystem must first be
5311           mounted on / before others can be mounted.  Other filesystems can
5312           only be mounted on directories which already exist.
5313
5314           The mounted filesystem is writable, if we have sufficient
5315           permissions on the underlying device.
5316
5317           Before libguestfs 1.13.16, this call implicitly added the options
5318           "sync" and "noatime".  The "sync" option greatly slowed writes and
5319           caused many problems for users.  If your program might need to work
5320           with older versions of libguestfs, use "$g->mount_options" instead
5321           (using an empty string for the first parameter if you don't want
5322           any options).
5323
5324       $g->mount_9p ($mounttag, $mountpoint [, options => $options]);
5325           Mount the virtio-9p filesystem with the tag "mounttag" on the
5326           directory "mountpoint".
5327
5328           If required, "trans=virtio" will be automatically added to the
5329           options.  Any other options required can be passed in the optional
5330           "options" parameter.
5331
5332       $g->mount_local ($localmountpoint [, readonly => $readonly] [, options
5333       => $options] [, cachetimeout => $cachetimeout] [, debugcalls =>
5334       $debugcalls]);
5335           This call exports the libguestfs-accessible filesystem to a local
5336           mountpoint (directory) called "localmountpoint".  Ordinary reads
5337           and writes to files and directories under "localmountpoint" are
5338           redirected through libguestfs.
5339
5340           If the optional "readonly" flag is set to true, then writes to the
5341           filesystem return error "EROFS".
5342
5343           "options" is a comma-separated list of mount options.  See
5344           guestmount(1) for some useful options.
5345
5346           "cachetimeout" sets the timeout (in seconds) for cached directory
5347           entries.  The default is 60 seconds.  See guestmount(1) for further
5348           information.
5349
5350           If "debugcalls" is set to true, then additional debugging
5351           information is generated for every FUSE call.
5352
5353           When "$g->mount_local" returns, the filesystem is ready, but is not
5354           processing requests (access to it will block).  You have to call
5355           "$g->mount_local_run" to run the main loop.
5356
5357           See "MOUNT LOCAL" in guestfs(3) for full documentation.
5358
5359       $g->mount_local_run ();
5360           Run the main loop which translates kernel calls to libguestfs
5361           calls.
5362
5363           This should only be called after "$g->mount_local" returns
5364           successfully.  The call will not return until the filesystem is
5365           unmounted.
5366
5367           Note you must not make concurrent libguestfs calls on the same
5368           handle from another thread.
5369
5370           You may call this from a different thread than the one which called
5371           "$g->mount_local", subject to the usual rules for threads and
5372           libguestfs (see "MULTIPLE HANDLES AND MULTIPLE THREADS" in
5373           guestfs(3)).
5374
5375           See "MOUNT LOCAL" in guestfs(3) for full documentation.
5376
5377       $g->mount_loop ($file, $mountpoint);
5378           This command lets you mount file (a filesystem image in a file) on
5379           a mount point.  It is entirely equivalent to the command "mount -o
5380           loop file mountpoint".
5381
5382       $g->mount_options ($options, $mountable, $mountpoint);
5383           This is the same as the "$g->mount" command, but it allows you to
5384           set the mount options as for the mount(8) -o flag.
5385
5386           If the "options" parameter is an empty string, then no options are
5387           passed (all options default to whatever the filesystem uses).
5388
5389       $g->mount_ro ($mountable, $mountpoint);
5390           This is the same as the "$g->mount" command, but it mounts the
5391           filesystem with the read-only (-o ro) flag.
5392
5393       $g->mount_vfs ($options, $vfstype, $mountable, $mountpoint);
5394           This is the same as the "$g->mount" command, but it allows you to
5395           set both the mount options and the vfstype as for the mount(8) -o
5396           and -t flags.
5397
5398       $device = $g->mountable_device ($mountable);
5399           Returns the device name of a mountable. In quite a lot of cases,
5400           the mountable is the device name.
5401
5402           However this doesn't apply for btrfs subvolumes, where the
5403           mountable is a combination of both the device name and the
5404           subvolume path (see also "$g->mountable_subvolume" to extract the
5405           subvolume path of the mountable if any).
5406
5407       $subvolume = $g->mountable_subvolume ($mountable);
5408           Returns the subvolume path of a mountable. Btrfs subvolumes
5409           mountables are a combination of both the device name and the
5410           subvolume path (see also "$g->mountable_device" to extract the
5411           device of the mountable).
5412
5413           If the mountable does not represent a btrfs subvolume, then this
5414           function fails and the "errno" is set to "EINVAL".
5415
5416       %mps = $g->mountpoints ();
5417           This call is similar to "$g->mounts".  That call returns a list of
5418           devices.  This one returns a hash table (map) of device name to
5419           directory where the device is mounted.
5420
5421       @devices = $g->mounts ();
5422           This returns the list of currently mounted filesystems.  It returns
5423           the list of devices (eg. /dev/sda1, /dev/VG/LV).
5424
5425           Some internal mounts are not shown.
5426
5427           See also: "$g->mountpoints"
5428
5429       $g->mv ($src, $dest);
5430           This moves a file from "src" to "dest" where "dest" is either a
5431           destination filename or destination directory.
5432
5433           See also: "$g->rename".
5434
5435       $nrdisks = $g->nr_devices ();
5436           This returns the number of whole block devices that were added.
5437           This is the same as the number of devices that would be returned if
5438           you called "$g->list_devices".
5439
5440           To find out the maximum number of devices that could be added, call
5441           "$g->max_disks".
5442
5443       $status = $g->ntfs_3g_probe ($rw, $device);
5444           This command runs the ntfs-3g.probe(8) command which probes an NTFS
5445           "device" for mountability.  (Not all NTFS volumes can be mounted
5446           read-write, and some cannot be mounted at all).
5447
5448           "rw" is a boolean flag.  Set it to true if you want to test if the
5449           volume can be mounted read-write.  Set it to false if you want to
5450           test if the volume can be mounted read-only.
5451
5452           The return value is an integer which 0 if the operation would
5453           succeed, or some non-zero value documented in the ntfs-3g.probe(8)
5454           manual page.
5455
5456           This function depends on the feature "ntfs3g".  See also
5457           "$g->feature-available".
5458
5459       $g->ntfscat_i ($device, $inode, $filename);
5460           Download a file given its inode from a NTFS filesystem and save it
5461           as filename on the local machine.
5462
5463           This allows to download some otherwise inaccessible files such as
5464           the ones within the $Extend folder.
5465
5466           The filesystem from which to extract the file must be unmounted,
5467           otherwise the call will fail.
5468
5469       $g->ntfsclone_in ($backupfile, $device);
5470           Restore the "backupfile" (from a previous call to
5471           "$g->ntfsclone_out") to "device", overwriting any existing contents
5472           of this device.
5473
5474           This function depends on the feature "ntfs3g".  See also
5475           "$g->feature-available".
5476
5477       $g->ntfsclone_out ($device, $backupfile [, metadataonly =>
5478       $metadataonly] [, rescue => $rescue] [, ignorefscheck =>
5479       $ignorefscheck] [, preservetimestamps => $preservetimestamps] [, force
5480       => $force]);
5481           Stream the NTFS filesystem "device" to the local file "backupfile".
5482           The format used for the backup file is a special format used by the
5483           ntfsclone(8) tool.
5484
5485           If the optional "metadataonly" flag is true, then only the metadata
5486           is saved, losing all the user data (this is useful for diagnosing
5487           some filesystem problems).
5488
5489           The optional "rescue", "ignorefscheck", "preservetimestamps" and
5490           "force" flags have precise meanings detailed in the ntfsclone(8)
5491           man page.
5492
5493           Use "$g->ntfsclone_in" to restore the file back to a libguestfs
5494           device.
5495
5496           This function depends on the feature "ntfs3g".  See also
5497           "$g->feature-available".
5498
5499       $g->ntfsfix ($device [, clearbadsectors => $clearbadsectors]);
5500           This command repairs some fundamental NTFS inconsistencies, resets
5501           the NTFS journal file, and schedules an NTFS consistency check for
5502           the first boot into Windows.
5503
5504           This is not an equivalent of Windows "chkdsk".  It does not scan
5505           the filesystem for inconsistencies.
5506
5507           The optional "clearbadsectors" flag clears the list of bad sectors.
5508           This is useful after cloning a disk with bad sectors to a new disk.
5509
5510           This function depends on the feature "ntfs3g".  See also
5511           "$g->feature-available".
5512
5513       $g->ntfsresize ($device [, size => $size] [, force => $force]);
5514           This command resizes an NTFS filesystem, expanding or shrinking it
5515           to the size of the underlying device.
5516
5517           The optional parameters are:
5518
5519           "size"
5520               The new size (in bytes) of the filesystem.  If omitted, the
5521               filesystem is resized to fit the container (eg. partition).
5522
5523           "force"
5524               If this option is true, then force the resize of the filesystem
5525               even if the filesystem is marked as requiring a consistency
5526               check.
5527
5528               After the resize operation, the filesystem is always marked as
5529               requiring a consistency check (for safety).  You have to boot
5530               into Windows to perform this check and clear this condition.
5531               If you don't set the "force" option then it is not possible to
5532               call "$g->ntfsresize" multiple times on a single filesystem
5533               without booting into Windows between each resize.
5534
5535           See also ntfsresize(8).
5536
5537           This function depends on the feature "ntfsprogs".  See also
5538           "$g->feature-available".
5539
5540       $g->ntfsresize_opts ($device [, size => $size] [, force => $force]);
5541           This is an alias of "ntfsresize".
5542
5543       $g->ntfsresize_size ($device, $size);
5544           This command is the same as "$g->ntfsresize" except that it allows
5545           you to specify the new size (in bytes) explicitly.
5546
5547           This function depends on the feature "ntfsprogs".  See also
5548           "$g->feature-available".
5549
5550           This function is deprecated.  In new code, use the "ntfsresize"
5551           call instead.
5552
5553           Deprecated functions will not be removed from the API, but the fact
5554           that they are deprecated indicates that there are problems with
5555           correct use of these functions.
5556
5557       $g->parse_environment ();
5558           Parse the programXs environment and set flags in the handle
5559           accordingly.  For example if "LIBGUESTFS_DEBUG=1" then the
5560           XverboseX flag is set in the handle.
5561
5562           Most programs do not need to call this.  It is done implicitly when
5563           you call "$g->create".
5564
5565           See "ENVIRONMENT VARIABLES" in guestfs(3) for a list of environment
5566           variables that can affect libguestfs handles.  See also
5567           "guestfs_create_flags" in guestfs(3), and
5568           "$g->parse_environment_list".
5569
5570       $g->parse_environment_list (\@environment);
5571           Parse the list of strings in the argument "environment" and set
5572           flags in the handle accordingly.  For example if
5573           "LIBGUESTFS_DEBUG=1" is a string in the list, then the XverboseX
5574           flag is set in the handle.
5575
5576           This is the same as "$g->parse_environment" except that it parses
5577           an explicit list of strings instead of the program's environment.
5578
5579       $g->part_add ($device, $prlogex, $startsect, $endsect);
5580           This command adds a partition to "device".  If there is no
5581           partition table on the device, call "$g->part_init" first.
5582
5583           The "prlogex" parameter is the type of partition.  Normally you
5584           should pass "p" or "primary" here, but MBR partition tables also
5585           support "l" (or "logical") and "e" (or "extended") partition types.
5586
5587           "startsect" and "endsect" are the start and end of the partition in
5588           sectors.  "endsect" may be negative, which means it counts
5589           backwards from the end of the disk ("-1" is the last sector).
5590
5591           Creating a partition which covers the whole disk is not so easy.
5592           Use "$g->part_disk" to do that.
5593
5594       $g->part_del ($device, $partnum);
5595           This command deletes the partition numbered "partnum" on "device".
5596
5597           Note that in the case of MBR partitioning, deleting an extended
5598           partition also deletes any logical partitions it contains.
5599
5600       $g->part_disk ($device, $parttype);
5601           This command is simply a combination of "$g->part_init" followed by
5602           "$g->part_add" to create a single primary partition covering the
5603           whole disk.
5604
5605           "parttype" is the partition table type, usually "mbr" or "gpt", but
5606           other possible values are described in "$g->part_init".
5607
5608       $g->part_expand_gpt ($device);
5609           Move backup GPT data structures to the end of the disk.  This is
5610           useful in case of in-place image expand since disk space after
5611           backup GPT header is not usable.  This is equivalent to "sgdisk
5612           -e".
5613
5614           See also sgdisk(8).
5615
5616           This function depends on the feature "gdisk".  See also
5617           "$g->feature-available".
5618
5619       $bootable = $g->part_get_bootable ($device, $partnum);
5620           This command returns true if the partition "partnum" on "device"
5621           has the bootable flag set.
5622
5623           See also "$g->part_set_bootable".
5624
5625       $guid = $g->part_get_disk_guid ($device);
5626           Return the disk identifier (GUID) of a GPT-partitioned "device".
5627           Behaviour is undefined for other partition types.
5628
5629           This function depends on the feature "gdisk".  See also
5630           "$g->feature-available".
5631
5632       $attributes = $g->part_get_gpt_attributes ($device, $partnum);
5633           Return the attribute flags of numbered GPT partition "partnum".  An
5634           error is returned for MBR partitions.
5635
5636           This function depends on the feature "gdisk".  See also
5637           "$g->feature-available".
5638
5639       $guid = $g->part_get_gpt_guid ($device, $partnum);
5640           Return the GUID of numbered GPT partition "partnum".
5641
5642           This function depends on the feature "gdisk".  See also
5643           "$g->feature-available".
5644
5645       $guid = $g->part_get_gpt_type ($device, $partnum);
5646           Return the type GUID of numbered GPT partition "partnum". For MBR
5647           partitions, return an appropriate GUID corresponding to the MBR
5648           type. Behaviour is undefined for other partition types.
5649
5650           This function depends on the feature "gdisk".  See also
5651           "$g->feature-available".
5652
5653       $idbyte = $g->part_get_mbr_id ($device, $partnum);
5654           Returns the MBR type byte (also known as the ID byte) from the
5655           numbered partition "partnum".
5656
5657           Note that only MBR (old DOS-style) partitions have type bytes.  You
5658           will get undefined results for other partition table types (see
5659           "$g->part_get_parttype").
5660
5661       $partitiontype = $g->part_get_mbr_part_type ($device, $partnum);
5662           This returns the partition type of an MBR partition numbered
5663           "partnum" on device "device".
5664
5665           It returns "primary", "logical", or "extended".
5666
5667       $name = $g->part_get_name ($device, $partnum);
5668           This gets the partition name on partition numbered "partnum" on
5669           device "device".  Note that partitions are numbered from 1.
5670
5671           The partition name can only be read on certain types of partition
5672           table.  This works on "gpt" but not on "mbr" partitions.
5673
5674       $parttype = $g->part_get_parttype ($device);
5675           This command examines the partition table on "device" and returns
5676           the partition table type (format) being used.
5677
5678           Common return values include: "msdos" (a DOS/Windows style MBR
5679           partition table), "gpt" (a GPT/EFI-style partition table).  Other
5680           values are possible, although unusual.  See "$g->part_init" for a
5681           full list.
5682
5683       $g->part_init ($device, $parttype);
5684           This creates an empty partition table on "device" of one of the
5685           partition types listed below.  Usually "parttype" should be either
5686           "msdos" or "gpt" (for large disks).
5687
5688           Initially there are no partitions.  Following this, you should call
5689           "$g->part_add" for each partition required.
5690
5691           Possible values for "parttype" are:
5692
5693           "efi"
5694           "gpt"
5695               Intel EFI / GPT partition table.
5696
5697               This is recommended for >= 2 TB partitions that will be
5698               accessed from Linux and Intel-based Mac OS X.  It also has
5699               limited backwards compatibility with the "mbr" format.
5700
5701           "mbr"
5702           "msdos"
5703               The standard PC "Master Boot Record" (MBR) format used by MS-
5704               DOS and Windows.  This partition type will only work for device
5705               sizes up to 2 TB.  For large disks we recommend using "gpt".
5706
5707           Other partition table types that may work but are not supported
5708           include:
5709
5710           "aix"
5711               AIX disk labels.
5712
5713           "amiga"
5714           "rdb"
5715               Amiga "Rigid Disk Block" format.
5716
5717           "bsd"
5718               BSD disk labels.
5719
5720           "dasd"
5721               DASD, used on IBM mainframes.
5722
5723           "dvh"
5724               MIPS/SGI volumes.
5725
5726           "mac"
5727               Old Mac partition format.  Modern Macs use "gpt".
5728
5729           "pc98"
5730               NEC PC-98 format, common in Japan apparently.
5731
5732           "sun"
5733               Sun disk labels.
5734
5735       @partitions = $g->part_list ($device);
5736           This command parses the partition table on "device" and returns the
5737           list of partitions found.
5738
5739           The fields in the returned structure are:
5740
5741           "part_num"
5742               Partition number, counting from 1.
5743
5744           "part_start"
5745               Start of the partition in bytes.  To get sectors you have to
5746               divide by the deviceXs sector size, see "$g->blockdev_getss".
5747
5748           "part_end"
5749               End of the partition in bytes.
5750
5751           "part_size"
5752               Size of the partition in bytes.
5753
5754       $g->part_resize ($device, $partnum, $endsect);
5755           This command resizes the partition numbered "partnum" on "device"
5756           by moving the end position.
5757
5758           Note that this does not modify any filesystem present in the
5759           partition.  If you wish to do this, you will need to use filesystem
5760           resizing commands like "$g->resize2fs".
5761
5762           When growing a partition you will want to grow the filesystem
5763           afterwards, but when shrinking, you need to shrink the filesystem
5764           before the partition.
5765
5766       $g->part_set_bootable ($device, $partnum, $bootable);
5767           This sets the bootable flag on partition numbered "partnum" on
5768           device "device".  Note that partitions are numbered from 1.
5769
5770           The bootable flag is used by some operating systems (notably
5771           Windows) to determine which partition to boot from.  It is by no
5772           means universally recognized.
5773
5774       $g->part_set_disk_guid ($device, $guid);
5775           Set the disk identifier (GUID) of a GPT-partitioned "device" to
5776           "guid".  Return an error if the partition table of "device" isn't
5777           GPT, or if "guid" is not a valid GUID.
5778
5779           This function depends on the feature "gdisk".  See also
5780           "$g->feature-available".
5781
5782       $g->part_set_disk_guid_random ($device);
5783           Set the disk identifier (GUID) of a GPT-partitioned "device" to a
5784           randomly generated value.  Return an error if the partition table
5785           of "device" isn't GPT.
5786
5787           This function depends on the feature "gdisk".  See also
5788           "$g->feature-available".
5789
5790       $g->part_set_gpt_attributes ($device, $partnum, $attributes);
5791           Set the attribute flags of numbered GPT partition "partnum" to
5792           "attributes". Return an error if the partition table of "device"
5793           isn't GPT.
5794
5795           See
5796           <https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_entries>
5797           for a useful list of partition attributes.
5798
5799           This function depends on the feature "gdisk".  See also
5800           "$g->feature-available".
5801
5802       $g->part_set_gpt_guid ($device, $partnum, $guid);
5803           Set the GUID of numbered GPT partition "partnum" to "guid".  Return
5804           an error if the partition table of "device" isn't GPT, or if "guid"
5805           is not a valid GUID.
5806
5807           This function depends on the feature "gdisk".  See also
5808           "$g->feature-available".
5809
5810       $g->part_set_gpt_type ($device, $partnum, $guid);
5811           Set the type GUID of numbered GPT partition "partnum" to "guid".
5812           Return an error if the partition table of "device" isn't GPT, or if
5813           "guid" is not a valid GUID.
5814
5815           See
5816           <https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs>
5817           for a useful list of type GUIDs.
5818
5819           This function depends on the feature "gdisk".  See also
5820           "$g->feature-available".
5821
5822       $g->part_set_mbr_id ($device, $partnum, $idbyte);
5823           Sets the MBR type byte (also known as the ID byte) of the numbered
5824           partition "partnum" to "idbyte".  Note that the type bytes quoted
5825           in most documentation are in fact hexadecimal numbers, but usually
5826           documented without any leading "0x" which might be confusing.
5827
5828           Note that only MBR (old DOS-style) partitions have type bytes.  You
5829           will get undefined results for other partition table types (see
5830           "$g->part_get_parttype").
5831
5832       $g->part_set_name ($device, $partnum, $name);
5833           This sets the partition name on partition numbered "partnum" on
5834           device "device".  Note that partitions are numbered from 1.
5835
5836           The partition name can only be set on certain types of partition
5837           table.  This works on "gpt" but not on "mbr" partitions.
5838
5839       $device = $g->part_to_dev ($partition);
5840           This function takes a partition name (eg. "/dev/sdb1") and removes
5841           the partition number, returning the device name (eg. "/dev/sdb").
5842
5843           The named partition must exist, for example as a string returned
5844           from "$g->list_partitions".
5845
5846           See also "$g->part_to_partnum", "$g->device_index".
5847
5848       $partnum = $g->part_to_partnum ($partition);
5849           This function takes a partition name (eg. "/dev/sdb1") and returns
5850           the partition number (eg. 1).
5851
5852           The named partition must exist, for example as a string returned
5853           from "$g->list_partitions".
5854
5855           See also "$g->part_to_dev".
5856
5857       $g->ping_daemon ();
5858           This is a test probe into the guestfs daemon running inside the
5859           libguestfs appliance.  Calling this function checks that the daemon
5860           responds to the ping message, without affecting the daemon or
5861           attached block device(s) in any other way.
5862
5863       $content = $g->pread ($path, $count, $offset);
5864           This command lets you read part of a file.  It reads "count" bytes
5865           of the file, starting at "offset", from file "path".
5866
5867           This may read fewer bytes than requested.  For further details see
5868           the pread(2) system call.
5869
5870           See also "$g->pwrite", "$g->pread_device".
5871
5872           Because of the message protocol, there is a transfer limit of
5873           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
5874           guestfs(3).
5875
5876       $content = $g->pread_device ($device, $count, $offset);
5877           This command lets you read part of a block device.  It reads
5878           "count" bytes of "device", starting at "offset".
5879
5880           This may read fewer bytes than requested.  For further details see
5881           the pread(2) system call.
5882
5883           See also "$g->pread".
5884
5885           Because of the message protocol, there is a transfer limit of
5886           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
5887           guestfs(3).
5888
5889       $g->pvchange_uuid ($device);
5890           Generate a new random UUID for the physical volume "device".
5891
5892           This function depends on the feature "lvm2".  See also
5893           "$g->feature-available".
5894
5895       $g->pvchange_uuid_all ();
5896           Generate new random UUIDs for all physical volumes.
5897
5898           This function depends on the feature "lvm2".  See also
5899           "$g->feature-available".
5900
5901       $g->pvcreate ($device);
5902           This creates an LVM physical volume on the named "device", where
5903           "device" should usually be a partition name such as /dev/sda1.
5904
5905           This function depends on the feature "lvm2".  See also
5906           "$g->feature-available".
5907
5908       $g->pvremove ($device);
5909           This wipes a physical volume "device" so that LVM will no longer
5910           recognise it.
5911
5912           The implementation uses the pvremove(8) command which refuses to
5913           wipe physical volumes that contain any volume groups, so you have
5914           to remove those first.
5915
5916           This function depends on the feature "lvm2".  See also
5917           "$g->feature-available".
5918
5919       $g->pvresize ($device);
5920           This resizes (expands or shrinks) an existing LVM physical volume
5921           to match the new size of the underlying device.
5922
5923           This function depends on the feature "lvm2".  See also
5924           "$g->feature-available".
5925
5926       $g->pvresize_size ($device, $size);
5927           This command is the same as "$g->pvresize" except that it allows
5928           you to specify the new size (in bytes) explicitly.
5929
5930           This function depends on the feature "lvm2".  See also
5931           "$g->feature-available".
5932
5933       @physvols = $g->pvs ();
5934           List all the physical volumes detected.  This is the equivalent of
5935           the pvs(8) command.
5936
5937           This returns a list of just the device names that contain PVs (eg.
5938           /dev/sda2).
5939
5940           See also "$g->pvs_full".
5941
5942           This function depends on the feature "lvm2".  See also
5943           "$g->feature-available".
5944
5945       @physvols = $g->pvs_full ();
5946           List all the physical volumes detected.  This is the equivalent of
5947           the pvs(8) command.  The "full" version includes all fields.
5948
5949           This function depends on the feature "lvm2".  See also
5950           "$g->feature-available".
5951
5952       $uuid = $g->pvuuid ($device);
5953           This command returns the UUID of the LVM PV "device".
5954
5955       $nbytes = $g->pwrite ($path, $content, $offset);
5956           This command writes to part of a file.  It writes the data buffer
5957           "content" to the file "path" starting at offset "offset".
5958
5959           This command implements the pwrite(2) system call, and like that
5960           system call it may not write the full data requested.  The return
5961           value is the number of bytes that were actually written to the
5962           file.  This could even be 0, although short writes are unlikely for
5963           regular files in ordinary circumstances.
5964
5965           See also "$g->pread", "$g->pwrite_device".
5966
5967           Because of the message protocol, there is a transfer limit of
5968           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
5969           guestfs(3).
5970
5971       $nbytes = $g->pwrite_device ($device, $content, $offset);
5972           This command writes to part of a device.  It writes the data buffer
5973           "content" to "device" starting at offset "offset".
5974
5975           This command implements the pwrite(2) system call, and like that
5976           system call it may not write the full data requested (although
5977           short writes to disk devices and partitions are probably impossible
5978           with standard Linux kernels).
5979
5980           See also "$g->pwrite".
5981
5982           Because of the message protocol, there is a transfer limit of
5983           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
5984           guestfs(3).
5985
5986       $content = $g->read_file ($path);
5987           This calls returns the contents of the file "path" as a buffer.
5988
5989           Unlike "$g->cat", this function can correctly handle files that
5990           contain embedded ASCII NUL characters.
5991
5992       @lines = $g->read_lines ($path);
5993           Return the contents of the file named "path".
5994
5995           The file contents are returned as a list of lines.  Trailing "LF"
5996           and "CRLF" character sequences are not returned.
5997
5998           Note that this function cannot correctly handle binary files
5999           (specifically, files containing "\0" character which is treated as
6000           end of string).  For those you need to use the "$g->read_file"
6001           function and split the buffer into lines yourself.
6002
6003       @entries = $g->readdir ($dir);
6004           This returns the list of directory entries in directory "dir".
6005
6006           All entries in the directory are returned, including "." and "..".
6007           The entries are not sorted, but returned in the same order as the
6008           underlying filesystem.
6009
6010           Also this call returns basic file type information about each file.
6011           The "ftyp" field will contain one of the following characters:
6012
6013           'b' Block special
6014
6015           'c' Char special
6016
6017           'd' Directory
6018
6019           'f' FIFO (named pipe)
6020
6021           'l' Symbolic link
6022
6023           'r' Regular file
6024
6025           's' Socket
6026
6027           'u' Unknown file type
6028
6029           '?' The readdir(3) call returned a "d_type" field with an
6030               unexpected value
6031
6032           This function is primarily intended for use by programs.  To get a
6033           simple list of names, use "$g->ls".  To get a printable directory
6034           for human consumption, use "$g->ll".
6035
6036           Because of the message protocol, there is a transfer limit of
6037           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
6038           guestfs(3).
6039
6040       $link = $g->readlink ($path);
6041           This command reads the target of a symbolic link.
6042
6043       @links = $g->readlinklist ($path, \@names);
6044           This call allows you to do a "readlink" operation on multiple
6045           files, where all files are in the directory "path".  "names" is the
6046           list of files from this directory.
6047
6048           On return you get a list of strings, with a one-to-one
6049           correspondence to the "names" list.  Each string is the value of
6050           the symbolic link.
6051
6052           If the readlink(2) operation fails on any name, then the
6053           corresponding result string is the empty string "".  However the
6054           whole operation is completed even if there were readlink(2) errors,
6055           and so you can call this function with names where you don't know
6056           if they are symbolic links already (albeit slightly less
6057           efficient).
6058
6059           This call is intended for programs that want to efficiently list a
6060           directory contents without making many round-trips.
6061
6062       $rpath = $g->realpath ($path);
6063           Return the canonicalized absolute pathname of "path".  The returned
6064           path has no ".", ".." or symbolic link path elements.
6065
6066       $g->remount ($mountpoint [, rw => $rw]);
6067           This call allows you to change the "rw" (readonly/read-write) flag
6068           on an already mounted filesystem at "mountpoint", converting a
6069           readonly filesystem to be read-write, or vice-versa.
6070
6071           Note that at the moment you must supply the "optional" "rw"
6072           parameter.  In future we may allow other flags to be adjusted.
6073
6074       $g->remove_drive ($label);
6075           This function is conceptually the opposite of "$g->add_drive_opts".
6076           It removes the drive that was previously added with label "label".
6077
6078           Note that in order to remove drives, you have to add them with
6079           labels (see the optional "label" argument to "$g->add_drive_opts").
6080           If you didn't use a label, then they cannot be removed.
6081
6082           You can call this function before or after launching the handle.
6083           If called after launch, if the backend supports it, we try to hot
6084           unplug the drive: see "HOTPLUGGING" in guestfs(3).  The disk must
6085           not be in use (eg. mounted) when you do this.  We try to detect if
6086           the disk is in use and stop you from doing this.
6087
6088       $g->removexattr ($xattr, $path);
6089           This call removes the extended attribute named "xattr" of the file
6090           "path".
6091
6092           See also: "$g->lremovexattr", attr(5).
6093
6094           This function depends on the feature "linuxxattrs".  See also
6095           "$g->feature-available".
6096
6097       $g->rename ($oldpath, $newpath);
6098           Rename a file to a new place on the same filesystem.  This is the
6099           same as the Linux rename(2) system call.  In most cases you are
6100           better to use "$g->mv" instead.
6101
6102       $g->resize2fs ($device);
6103           This resizes an ext2, ext3 or ext4 filesystem to match the size of
6104           the underlying device.
6105
6106           See also "RESIZE2FS ERRORS" in guestfs(3).
6107
6108       $g->resize2fs_M ($device);
6109           This command is the same as "$g->resize2fs", but the filesystem is
6110           resized to its minimum size.  This works like the -M option to the
6111           resize2fs(8) command.
6112
6113           To get the resulting size of the filesystem you should call
6114           "$g->tune2fs_l" and read the "Block size" and "Block count" values.
6115           These two numbers, multiplied together, give the resulting size of
6116           the minimal filesystem in bytes.
6117
6118           See also "RESIZE2FS ERRORS" in guestfs(3).
6119
6120       $g->resize2fs_size ($device, $size);
6121           This command is the same as "$g->resize2fs" except that it allows
6122           you to specify the new size (in bytes) explicitly.
6123
6124           See also "RESIZE2FS ERRORS" in guestfs(3).
6125
6126       $g->rm ($path);
6127           Remove the single file "path".
6128
6129       $g->rm_f ($path);
6130           Remove the file "path".
6131
6132           If the file doesn't exist, that error is ignored.  (Other errors,
6133           eg. I/O errors or bad paths, are not ignored)
6134
6135           This call cannot remove directories.  Use "$g->rmdir" to remove an
6136           empty directory, or "$g->rm_rf" to remove directories recursively.
6137
6138       $g->rm_rf ($path);
6139           Remove the file or directory "path", recursively removing the
6140           contents if its a directory.  This is like the "rm -rf" shell
6141           command.
6142
6143       $g->rmdir ($path);
6144           Remove the single directory "path".
6145
6146       $g->rmmountpoint ($exemptpath);
6147           This call removes a mountpoint that was previously created with
6148           "$g->mkmountpoint".  See "$g->mkmountpoint" for full details.
6149
6150       $g->rsync ($src, $dest [, archive => $archive] [, deletedest =>
6151       $deletedest]);
6152           This call may be used to copy or synchronize two directories under
6153           the same libguestfs handle.  This uses the rsync(1) program which
6154           uses a fast algorithm that avoids copying files unnecessarily.
6155
6156           "src" and "dest" are the source and destination directories.  Files
6157           are copied from "src" to "dest".
6158
6159           The optional arguments are:
6160
6161           "archive"
6162               Turns on archive mode.  This is the same as passing the
6163               --archive flag to "rsync".
6164
6165           "deletedest"
6166               Delete files at the destination that do not exist at the
6167               source.
6168
6169           This function depends on the feature "rsync".  See also
6170           "$g->feature-available".
6171
6172       $g->rsync_in ($remote, $dest [, archive => $archive] [, deletedest =>
6173       $deletedest]);
6174           This call may be used to copy or synchronize the filesystem on the
6175           host or on a remote computer with the filesystem within libguestfs.
6176           This uses the rsync(1) program which uses a fast algorithm that
6177           avoids copying files unnecessarily.
6178
6179           This call only works if the network is enabled.  See
6180           "$g->set_network" or the --network option to various tools like
6181           guestfish(1).
6182
6183           Files are copied from the remote server and directory specified by
6184           "remote" to the destination directory "dest".
6185
6186           The format of the remote server string is defined by rsync(1).
6187           Note that there is no way to supply a password or passphrase so the
6188           target must be set up not to require one.
6189
6190           The optional arguments are the same as those of "$g->rsync".
6191
6192           This function depends on the feature "rsync".  See also
6193           "$g->feature-available".
6194
6195       $g->rsync_out ($src, $remote [, archive => $archive] [, deletedest =>
6196       $deletedest]);
6197           This call may be used to copy or synchronize the filesystem within
6198           libguestfs with a filesystem on the host or on a remote computer.
6199           This uses the rsync(1) program which uses a fast algorithm that
6200           avoids copying files unnecessarily.
6201
6202           This call only works if the network is enabled.  See
6203           "$g->set_network" or the --network option to various tools like
6204           guestfish(1).
6205
6206           Files are copied from the source directory "src" to the remote
6207           server and directory specified by "remote".
6208
6209           The format of the remote server string is defined by rsync(1).
6210           Note that there is no way to supply a password or passphrase so the
6211           target must be set up not to require one.
6212
6213           The optional arguments are the same as those of "$g->rsync".
6214
6215           Globbing does not happen on the "src" parameter.  In programs which
6216           use the API directly you have to expand wildcards yourself (see
6217           "$g->glob_expand").  In guestfish you can use the "glob" command
6218           (see "glob" in guestfish(1)), for example:
6219
6220            ><fs> glob rsync-out /* rsync://remote/
6221
6222           This function depends on the feature "rsync".  See also
6223           "$g->feature-available".
6224
6225       $g->scrub_device ($device);
6226           This command writes patterns over "device" to make data retrieval
6227           more difficult.
6228
6229           It is an interface to the scrub(1) program.  See that manual page
6230           for more details.
6231
6232           This function depends on the feature "scrub".  See also
6233           "$g->feature-available".
6234
6235       $g->scrub_file ($file);
6236           This command writes patterns over a file to make data retrieval
6237           more difficult.
6238
6239           The file is removed after scrubbing.
6240
6241           It is an interface to the scrub(1) program.  See that manual page
6242           for more details.
6243
6244           This function depends on the feature "scrub".  See also
6245           "$g->feature-available".
6246
6247       $g->scrub_freespace ($dir);
6248           This command creates the directory "dir" and then fills it with
6249           files until the filesystem is full, and scrubs the files as for
6250           "$g->scrub_file", and deletes them.  The intention is to scrub any
6251           free space on the partition containing "dir".
6252
6253           It is an interface to the scrub(1) program.  See that manual page
6254           for more details.
6255
6256           This function depends on the feature "scrub".  See also
6257           "$g->feature-available".
6258
6259       $g->selinux_relabel ($specfile, $path [, force => $force]);
6260           SELinux relabel parts of the filesystem.
6261
6262           The "specfile" parameter controls the policy spec file used.  You
6263           have to parse "/etc/selinux/config" to find the correct SELinux
6264           policy and then pass the spec file, usually: "/etc/selinux/" +
6265           selinuxtype + "/contexts/files/file_contexts".
6266
6267           The required "path" parameter is the top level directory where
6268           relabelling starts.  Normally you should pass "path" as "/" to
6269           relabel the whole guest filesystem.
6270
6271           The optional "force" boolean controls whether the context is reset
6272           for customizable files, and also whether the user, role and range
6273           parts of the file context is changed.
6274
6275           This function depends on the feature "selinuxrelabel".  See also
6276           "$g->feature-available".
6277
6278       $g->set_append ($append);
6279           This function is used to add additional options to the libguestfs
6280           appliance kernel command line.
6281
6282           The default is "NULL" unless overridden by setting
6283           "LIBGUESTFS_APPEND" environment variable.
6284
6285           Setting "append" to "NULL" means no additional options are passed
6286           (libguestfs always adds a few of its own).
6287
6288       $g->set_attach_method ($backend);
6289           Set the method that libguestfs uses to connect to the backend
6290           guestfsd daemon.
6291
6292           See "BACKEND" in guestfs(3).
6293
6294           This function is deprecated.  In new code, use the "set_backend"
6295           call instead.
6296
6297           Deprecated functions will not be removed from the API, but the fact
6298           that they are deprecated indicates that there are problems with
6299           correct use of these functions.
6300
6301       $g->set_autosync ($autosync);
6302           If "autosync" is true, this enables autosync.  Libguestfs will make
6303           a best effort attempt to make filesystems consistent and
6304           synchronized when the handle is closed (also if the program exits
6305           without closing handles).
6306
6307           This is enabled by default (since libguestfs 1.5.24, previously it
6308           was disabled by default).
6309
6310       $g->set_backend ($backend);
6311           Set the method that libguestfs uses to connect to the backend
6312           guestfsd daemon.
6313
6314           This handle property was previously called the "attach method".
6315
6316           See "BACKEND" in guestfs(3).
6317
6318       $g->set_backend_setting ($name, $val);
6319           Append "name=value" to the backend settings string list.  However
6320           if a string already exists matching "name" or beginning with
6321           "name=", then that setting is replaced.
6322
6323           See "BACKEND" in guestfs(3), "BACKEND SETTINGS" in guestfs(3).
6324
6325       $g->set_backend_settings (\@settings);
6326           Set a list of zero or more settings which are passed through to the
6327           current backend.  Each setting is a string which is interpreted in
6328           a backend-specific way, or ignored if not understood by the
6329           backend.
6330
6331           The default value is an empty list, unless the environment variable
6332           "LIBGUESTFS_BACKEND_SETTINGS" was set when the handle was created.
6333           This environment variable contains a colon-separated list of
6334           settings.
6335
6336           This call replaces all backend settings.  If you want to replace a
6337           single backend setting, see "$g->set_backend_setting".  If you want
6338           to clear a single backend setting, see "$g->clear_backend_setting".
6339
6340           See "BACKEND" in guestfs(3), "BACKEND SETTINGS" in guestfs(3).
6341
6342       $g->set_cachedir ($cachedir);
6343           Set the directory used by the handle to store the appliance cache,
6344           when using a supermin appliance.  The appliance is cached and
6345           shared between all handles which have the same effective user ID.
6346
6347           The environment variables "LIBGUESTFS_CACHEDIR" and "TMPDIR"
6348           control the default value: If "LIBGUESTFS_CACHEDIR" is set, then
6349           that is the default.  Else if "TMPDIR" is set, then that is the
6350           default.  Else /var/tmp is the default.
6351
6352       $g->set_direct ($direct);
6353           If the direct appliance mode flag is enabled, then stdin and stdout
6354           are passed directly through to the appliance once it is launched.
6355
6356           One consequence of this is that log messages aren't caught by the
6357           library and handled by "$g->set_log_message_callback", but go
6358           straight to stdout.
6359
6360           You probably don't want to use this unless you know what you are
6361           doing.
6362
6363           The default is disabled.
6364
6365           This function is deprecated.  In new code, use the
6366           "internal_get_console_socket" call instead.
6367
6368           Deprecated functions will not be removed from the API, but the fact
6369           that they are deprecated indicates that there are problems with
6370           correct use of these functions.
6371
6372       $g->set_e2attrs ($file, $attrs [, clear => $clear]);
6373           This sets or clears the file attributes "attrs" associated with the
6374           inode file.
6375
6376           "attrs" is a string of characters representing file attributes.
6377           See "$g->get_e2attrs" for a list of possible attributes.  Not all
6378           attributes can be changed.
6379
6380           If optional boolean "clear" is not present or false, then the
6381           "attrs" listed are set in the inode.
6382
6383           If "clear" is true, then the "attrs" listed are cleared in the
6384           inode.
6385
6386           In both cases, other attributes not present in the "attrs" string
6387           are left unchanged.
6388
6389           These attributes are only present when the file is located on an
6390           ext2/3/4 filesystem.  Using this call on other filesystem types
6391           will result in an error.
6392
6393       $g->set_e2generation ($file, $generation);
6394           This sets the ext2 file generation of a file.
6395
6396           See "$g->get_e2generation".
6397
6398       $g->set_e2label ($device, $label);
6399           This sets the ext2/3/4 filesystem label of the filesystem on
6400           "device" to "label".  Filesystem labels are limited to 16
6401           characters.
6402
6403           You can use either "$g->tune2fs_l" or "$g->get_e2label" to return
6404           the existing label on a filesystem.
6405
6406           This function is deprecated.  In new code, use the "set_label" call
6407           instead.
6408
6409           Deprecated functions will not be removed from the API, but the fact
6410           that they are deprecated indicates that there are problems with
6411           correct use of these functions.
6412
6413       $g->set_e2uuid ($device, $uuid);
6414           This sets the ext2/3/4 filesystem UUID of the filesystem on
6415           "device" to "uuid".  The format of the UUID and alternatives such
6416           as "clear", "random" and "time" are described in the tune2fs(8)
6417           manpage.
6418
6419           You can use "$g->vfs_uuid" to return the existing UUID of a
6420           filesystem.
6421
6422           This function is deprecated.  In new code, use the "set_uuid" call
6423           instead.
6424
6425           Deprecated functions will not be removed from the API, but the fact
6426           that they are deprecated indicates that there are problems with
6427           correct use of these functions.
6428
6429       $g->set_hv ($hv);
6430           Set the hypervisor binary that we will use.  The hypervisor depends
6431           on the backend, but is usually the location of the qemu/KVM
6432           hypervisor.  For the uml backend, it is the location of the "linux"
6433           or "vmlinux" binary.
6434
6435           The default is chosen when the library was compiled by the
6436           configure script.
6437
6438           You can also override this by setting the "LIBGUESTFS_HV"
6439           environment variable.
6440
6441           Note that you should call this function as early as possible after
6442           creating the handle.  This is because some pre-launch operations
6443           depend on testing qemu features (by running "qemu -help").  If the
6444           qemu binary changes, we don't retest features, and so you might see
6445           inconsistent results.  Using the environment variable
6446           "LIBGUESTFS_HV" is safest of all since that picks the qemu binary
6447           at the same time as the handle is created.
6448
6449       $g->set_identifier ($identifier);
6450           This is an informative string which the caller may optionally set
6451           in the handle.  It is printed in various places, allowing the
6452           current handle to be identified in debugging output.
6453
6454           One important place is when tracing is enabled.  If the identifier
6455           string is not an empty string, then trace messages change from
6456           this:
6457
6458            libguestfs: trace: get_tmpdir
6459            libguestfs: trace: get_tmpdir = "/tmp"
6460
6461           to this:
6462
6463            libguestfs: trace: ID: get_tmpdir
6464            libguestfs: trace: ID: get_tmpdir = "/tmp"
6465
6466           where "ID" is the identifier string set by this call.
6467
6468           The identifier must only contain alphanumeric ASCII characters,
6469           underscore and minus sign.  The default is the empty string.
6470
6471           See also "$g->set_program", "$g->set_trace", "$g->get_identifier".
6472
6473       $g->set_label ($mountable, $label);
6474           Set the filesystem label on "mountable" to "label".
6475
6476           Only some filesystem types support labels, and libguestfs supports
6477           setting labels on only a subset of these.
6478
6479           ext2, ext3, ext4
6480               Labels are limited to 16 bytes.
6481
6482           NTFS
6483               Labels are limited to 128 unicode characters.
6484
6485           XFS The label is limited to 12 bytes.  The filesystem must not be
6486               mounted when trying to set the label.
6487
6488           btrfs
6489               The label is limited to 255 bytes and some characters are not
6490               allowed.  Setting the label on a btrfs subvolume will set the
6491               label on its parent filesystem.  The filesystem must not be
6492               mounted when trying to set the label.
6493
6494           fat The label is limited to 11 bytes.
6495
6496           swap
6497               The label is limited to 16 bytes.
6498
6499           If there is no support for changing the label for the type of the
6500           specified filesystem, set_label will fail and set errno as ENOTSUP.
6501
6502           To read the label on a filesystem, call "$g->vfs_label".
6503
6504       $g->set_libvirt_requested_credential ($index, $cred);
6505           After requesting the "index"'th credential from the user, call this
6506           function to pass the answer back to libvirt.
6507
6508           See "LIBVIRT AUTHENTICATION" in guestfs(3) for documentation and
6509           example code.
6510
6511       $g->set_libvirt_supported_credentials (\@creds);
6512           Call this function before setting an event handler for
6513           "GUESTFS_EVENT_LIBVIRT_AUTH", to supply the list of credential
6514           types that the program knows how to process.
6515
6516           The "creds" list must be a non-empty list of strings.  Possible
6517           strings are:
6518
6519           "username"
6520           "authname"
6521           "language"
6522           "cnonce"
6523           "passphrase"
6524           "echoprompt"
6525           "noechoprompt"
6526           "realm"
6527           "external"
6528
6529           See libvirt documentation for the meaning of these credential
6530           types.
6531
6532           See "LIBVIRT AUTHENTICATION" in guestfs(3) for documentation and
6533           example code.
6534
6535       $g->set_memsize ($memsize);
6536           This sets the memory size in megabytes allocated to the hypervisor.
6537           This only has any effect if called before "$g->launch".
6538
6539           You can also change this by setting the environment variable
6540           "LIBGUESTFS_MEMSIZE" before the handle is created.
6541
6542           For more information on the architecture of libguestfs, see
6543           guestfs(3).
6544
6545       $g->set_network ($network);
6546           If "network" is true, then the network is enabled in the libguestfs
6547           appliance.  The default is false.
6548
6549           This affects whether commands are able to access the network (see
6550           "RUNNING COMMANDS" in guestfs(3)).
6551
6552           You must call this before calling "$g->launch", otherwise it has no
6553           effect.
6554
6555       $g->set_path ($searchpath);
6556           Set the path that libguestfs searches for kernel and initrd.img.
6557
6558           The default is "$libdir/guestfs" unless overridden by setting
6559           "LIBGUESTFS_PATH" environment variable.
6560
6561           Setting "path" to "NULL" restores the default path.
6562
6563       $g->set_pgroup ($pgroup);
6564           If "pgroup" is true, child processes are placed into their own
6565           process group.
6566
6567           The practical upshot of this is that signals like "SIGINT" (from
6568           users pressing "^C") won't be received by the child process.
6569
6570           The default for this flag is false, because usually you want "^C"
6571           to kill the subprocess.  Guestfish sets this flag to true when used
6572           interactively, so that "^C" can cancel long-running commands
6573           gracefully (see "$g->user_cancel").
6574
6575       $g->set_program ($program);
6576           Set the program name.  This is an informative string which the main
6577           program may optionally set in the handle.
6578
6579           When the handle is created, the program name in the handle is set
6580           to the basename from "argv[0]".  The program name can never be
6581           "NULL".
6582
6583       $g->set_qemu ($hv);
6584           Set the hypervisor binary (usually qemu) that we will use.
6585
6586           The default is chosen when the library was compiled by the
6587           configure script.
6588
6589           You can also override this by setting the "LIBGUESTFS_HV"
6590           environment variable.
6591
6592           Setting "hv" to "NULL" restores the default qemu binary.
6593
6594           Note that you should call this function as early as possible after
6595           creating the handle.  This is because some pre-launch operations
6596           depend on testing qemu features (by running "qemu -help").  If the
6597           qemu binary changes, we don't retest features, and so you might see
6598           inconsistent results.  Using the environment variable
6599           "LIBGUESTFS_HV" is safest of all since that picks the qemu binary
6600           at the same time as the handle is created.
6601
6602           This function is deprecated.  In new code, use the "set_hv" call
6603           instead.
6604
6605           Deprecated functions will not be removed from the API, but the fact
6606           that they are deprecated indicates that there are problems with
6607           correct use of these functions.
6608
6609       $g->set_recovery_proc ($recoveryproc);
6610           If this is called with the parameter "false" then "$g->launch" does
6611           not create a recovery process.  The purpose of the recovery process
6612           is to stop runaway hypervisor processes in the case where the main
6613           program aborts abruptly.
6614
6615           This only has any effect if called before "$g->launch", and the
6616           default is true.
6617
6618           About the only time when you would want to disable this is if the
6619           main process will fork itself into the background ("daemonize"
6620           itself).  In this case the recovery process thinks that the main
6621           program has disappeared and so kills the hypervisor, which is not
6622           very helpful.
6623
6624       $g->set_selinux ($selinux);
6625           This sets the selinux flag that is passed to the appliance at boot
6626           time.  The default is "selinux=0" (disabled).
6627
6628           Note that if SELinux is enabled, it is always in Permissive mode
6629           ("enforcing=0").
6630
6631           For more information on the architecture of libguestfs, see
6632           guestfs(3).
6633
6634           This function is deprecated.  In new code, use the
6635           "selinux_relabel" call instead.
6636
6637           Deprecated functions will not be removed from the API, but the fact
6638           that they are deprecated indicates that there are problems with
6639           correct use of these functions.
6640
6641       $g->set_smp ($smp);
6642           Change the number of virtual CPUs assigned to the appliance.  The
6643           default is 1.  Increasing this may improve performance, though
6644           often it has no effect.
6645
6646           This function must be called before "$g->launch".
6647
6648       $g->set_tmpdir ($tmpdir);
6649           Set the directory used by the handle to store temporary files.
6650
6651           The environment variables "LIBGUESTFS_TMPDIR" and "TMPDIR" control
6652           the default value: If "LIBGUESTFS_TMPDIR" is set, then that is the
6653           default.  Else if "TMPDIR" is set, then that is the default.  Else
6654           /tmp is the default.
6655
6656       $g->set_trace ($trace);
6657           If the command trace flag is set to 1, then libguestfs calls,
6658           parameters and return values are traced.
6659
6660           If you want to trace C API calls into libguestfs (and other
6661           libraries) then possibly a better way is to use the external
6662           ltrace(1) command.
6663
6664           Command traces are disabled unless the environment variable
6665           "LIBGUESTFS_TRACE" is defined and set to 1.
6666
6667           Trace messages are normally sent to "stderr", unless you register a
6668           callback to send them somewhere else (see
6669           "$g->set_event_callback").
6670
6671       $g->set_uuid ($device, $uuid);
6672           Set the filesystem UUID on "device" to "uuid".  If this fails and
6673           the errno is ENOTSUP, means that there is no support for changing
6674           the UUID for the type of the specified filesystem.
6675
6676           Only some filesystem types support setting UUIDs.
6677
6678           To read the UUID on a filesystem, call "$g->vfs_uuid".
6679
6680       $g->set_uuid_random ($device);
6681           Set the filesystem UUID on "device" to a random UUID.  If this
6682           fails and the errno is ENOTSUP, means that there is no support for
6683           changing the UUID for the type of the specified filesystem.
6684
6685           Only some filesystem types support setting UUIDs.
6686
6687           To read the UUID on a filesystem, call "$g->vfs_uuid".
6688
6689       $g->set_verbose ($verbose);
6690           If "verbose" is true, this turns on verbose messages.
6691
6692           Verbose messages are disabled unless the environment variable
6693           "LIBGUESTFS_DEBUG" is defined and set to 1.
6694
6695           Verbose messages are normally sent to "stderr", unless you register
6696           a callback to send them somewhere else (see
6697           "$g->set_event_callback").
6698
6699       $g->setcon ($context);
6700           This sets the SELinux security context of the daemon to the string
6701           "context".
6702
6703           See the documentation about SELINUX in guestfs(3).
6704
6705           This function depends on the feature "selinux".  See also
6706           "$g->feature-available".
6707
6708           This function is deprecated.  In new code, use the
6709           "selinux_relabel" call instead.
6710
6711           Deprecated functions will not be removed from the API, but the fact
6712           that they are deprecated indicates that there are problems with
6713           correct use of these functions.
6714
6715       $g->setxattr ($xattr, $val, $vallen, $path);
6716           This call sets the extended attribute named "xattr" of the file
6717           "path" to the value "val" (of length "vallen").  The value is
6718           arbitrary 8 bit data.
6719
6720           See also: "$g->lsetxattr", attr(5).
6721
6722           This function depends on the feature "linuxxattrs".  See also
6723           "$g->feature-available".
6724
6725       $g->sfdisk ($device, $cyls, $heads, $sectors, \@lines);
6726           This is a direct interface to the sfdisk(8) program for creating
6727           partitions on block devices.
6728
6729           "device" should be a block device, for example /dev/sda.
6730
6731           "cyls", "heads" and "sectors" are the number of cylinders, heads
6732           and sectors on the device, which are passed directly to sfdisk(8)
6733           as the -C, -H and -S parameters.  If you pass 0 for any of these,
6734           then the corresponding parameter is omitted.  Usually for XlargeX
6735           disks, you can just pass 0 for these, but for small (floppy-sized)
6736           disks, sfdisk(8) (or rather, the kernel) cannot work out the right
6737           geometry and you will need to tell it.
6738
6739           "lines" is a list of lines that we feed to sfdisk(8).  For more
6740           information refer to the sfdisk(8) manpage.
6741
6742           To create a single partition occupying the whole disk, you would
6743           pass "lines" as a single element list, when the single element
6744           being the string "," (comma).
6745
6746           See also: "$g->sfdisk_l", "$g->sfdisk_N", "$g->part_init"
6747
6748           This function is deprecated.  In new code, use the "part_add" call
6749           instead.
6750
6751           Deprecated functions will not be removed from the API, but the fact
6752           that they are deprecated indicates that there are problems with
6753           correct use of these functions.
6754
6755       $g->sfdiskM ($device, \@lines);
6756           This is a simplified interface to the "$g->sfdisk" command, where
6757           partition sizes are specified in megabytes only (rounded to the
6758           nearest cylinder) and you don't need to specify the cyls, heads and
6759           sectors parameters which were rarely if ever used anyway.
6760
6761           See also: "$g->sfdisk", the sfdisk(8) manpage and "$g->part_disk"
6762
6763           This function is deprecated.  In new code, use the "part_add" call
6764           instead.
6765
6766           Deprecated functions will not be removed from the API, but the fact
6767           that they are deprecated indicates that there are problems with
6768           correct use of these functions.
6769
6770       $g->sfdisk_N ($device, $partnum, $cyls, $heads, $sectors, $line);
6771           This runs sfdisk(8) option to modify just the single partition "n"
6772           (note: "n" counts from 1).
6773
6774           For other parameters, see "$g->sfdisk".  You should usually pass 0
6775           for the cyls/heads/sectors parameters.
6776
6777           See also: "$g->part_add"
6778
6779           This function is deprecated.  In new code, use the "part_add" call
6780           instead.
6781
6782           Deprecated functions will not be removed from the API, but the fact
6783           that they are deprecated indicates that there are problems with
6784           correct use of these functions.
6785
6786       $partitions = $g->sfdisk_disk_geometry ($device);
6787           This displays the disk geometry of "device" read from the partition
6788           table.  Especially in the case where the underlying block device
6789           has been resized, this can be different from the kernelXs idea of
6790           the geometry (see "$g->sfdisk_kernel_geometry").
6791
6792           The result is in human-readable format, and not designed to be
6793           parsed.
6794
6795       $partitions = $g->sfdisk_kernel_geometry ($device);
6796           This displays the kernelXs idea of the geometry of "device".
6797
6798           The result is in human-readable format, and not designed to be
6799           parsed.
6800
6801       $partitions = $g->sfdisk_l ($device);
6802           This displays the partition table on "device", in the human-
6803           readable output of the sfdisk(8) command.  It is not intended to be
6804           parsed.
6805
6806           See also: "$g->part_list"
6807
6808           This function is deprecated.  In new code, use the "part_list" call
6809           instead.
6810
6811           Deprecated functions will not be removed from the API, but the fact
6812           that they are deprecated indicates that there are problems with
6813           correct use of these functions.
6814
6815       $output = $g->sh ($command);
6816           This call runs a command from the guest filesystem via the guestXs
6817           /bin/sh.
6818
6819           This is like "$g->command", but passes the command to:
6820
6821            /bin/sh -c "command"
6822
6823           Depending on the guestXs shell, this usually results in wildcards
6824           being expanded, shell expressions being interpolated and so on.
6825
6826           All the provisos about "$g->command" apply to this call.
6827
6828       @lines = $g->sh_lines ($command);
6829           This is the same as "$g->sh", but splits the result into a list of
6830           lines.
6831
6832           See also: "$g->command_lines"
6833
6834       $g->shutdown ();
6835           This is the opposite of "$g->launch".  It performs an orderly
6836           shutdown of the backend process(es).  If the autosync flag is set
6837           (which is the default) then the disk image is synchronized.
6838
6839           If the subprocess exits with an error then this function will
6840           return an error, which should not be ignored (it may indicate that
6841           the disk image could not be written out properly).
6842
6843           It is safe to call this multiple times.  Extra calls are ignored.
6844
6845           This call does not close or free up the handle.  You still need to
6846           call "$g->close" afterwards.
6847
6848           "$g->close" will call this if you don't do it explicitly, but note
6849           that any errors are ignored in that case.
6850
6851       $g->sleep ($secs);
6852           Sleep for "secs" seconds.
6853
6854       %statbuf = $g->stat ($path);
6855           Returns file information for the given "path".
6856
6857           This is the same as the stat(2) system call.
6858
6859           This function is deprecated.  In new code, use the "statns" call
6860           instead.
6861
6862           Deprecated functions will not be removed from the API, but the fact
6863           that they are deprecated indicates that there are problems with
6864           correct use of these functions.
6865
6866       %statbuf = $g->statns ($path);
6867           Returns file information for the given "path".
6868
6869           This is the same as the stat(2) system call.
6870
6871       %statbuf = $g->statvfs ($path);
6872           Returns file system statistics for any mounted file system.  "path"
6873           should be a file or directory in the mounted file system (typically
6874           it is the mount point itself, but it doesn't need to be).
6875
6876           This is the same as the statvfs(2) system call.
6877
6878       @stringsout = $g->strings ($path);
6879           This runs the strings(1) command on a file and returns the list of
6880           printable strings found.
6881
6882           The "strings" command has, in the past, had problems with parsing
6883           untrusted files.  These are mitigated in the current version of
6884           libguestfs, but see "CVE-2014-8484" in guestfs(3).
6885
6886           Because of the message protocol, there is a transfer limit of
6887           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
6888           guestfs(3).
6889
6890       @stringsout = $g->strings_e ($encoding, $path);
6891           This is like the "$g->strings" command, but allows you to specify
6892           the encoding of strings that are looked for in the source file
6893           "path".
6894
6895           Allowed encodings are:
6896
6897           s   Single 7-bit-byte characters like ASCII and the ASCII-
6898               compatible parts of ISO-8859-X (this is what "$g->strings"
6899               uses).
6900
6901           S   Single 8-bit-byte characters.
6902
6903           b   16-bit big endian strings such as those encoded in UTF-16BE or
6904               UCS-2BE.
6905
6906           l (lower case letter L)
6907               16-bit little endian such as UTF-16LE and UCS-2LE.  This is
6908               useful for examining binaries in Windows guests.
6909
6910           B   32-bit big endian such as UCS-4BE.
6911
6912           L   32-bit little endian such as UCS-4LE.
6913
6914           The returned strings are transcoded to UTF-8.
6915
6916           The "strings" command has, in the past, had problems with parsing
6917           untrusted files.  These are mitigated in the current version of
6918           libguestfs, but see "CVE-2014-8484" in guestfs(3).
6919
6920           Because of the message protocol, there is a transfer limit of
6921           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
6922           guestfs(3).
6923
6924       $g->swapoff_device ($device);
6925           This command disables the libguestfs appliance swap device or
6926           partition named "device".  See "$g->swapon_device".
6927
6928       $g->swapoff_file ($file);
6929           This command disables the libguestfs appliance swap on file.
6930
6931       $g->swapoff_label ($label);
6932           This command disables the libguestfs appliance swap on labeled swap
6933           partition.
6934
6935       $g->swapoff_uuid ($uuid);
6936           This command disables the libguestfs appliance swap partition with
6937           the given UUID.
6938
6939           This function depends on the feature "linuxfsuuid".  See also
6940           "$g->feature-available".
6941
6942       $g->swapon_device ($device);
6943           This command enables the libguestfs appliance to use the swap
6944           device or partition named "device".  The increased memory is made
6945           available for all commands, for example those run using
6946           "$g->command" or "$g->sh".
6947
6948           Note that you should not swap to existing guest swap partitions
6949           unless you know what you are doing.  They may contain hibernation
6950           information, or other information that the guest doesn't want you
6951           to trash.  You also risk leaking information about the host to the
6952           guest this way.  Instead, attach a new host device to the guest and
6953           swap on that.
6954
6955       $g->swapon_file ($file);
6956           This command enables swap to a file.  See "$g->swapon_device" for
6957           other notes.
6958
6959       $g->swapon_label ($label);
6960           This command enables swap to a labeled swap partition.  See
6961           "$g->swapon_device" for other notes.
6962
6963       $g->swapon_uuid ($uuid);
6964           This command enables swap to a swap partition with the given UUID.
6965           See "$g->swapon_device" for other notes.
6966
6967           This function depends on the feature "linuxfsuuid".  See also
6968           "$g->feature-available".
6969
6970       $g->sync ();
6971           This syncs the disk, so that any writes are flushed through to the
6972           underlying disk image.
6973
6974           You should always call this if you have modified a disk image,
6975           before closing the handle.
6976
6977       $g->syslinux ($device [, directory => $directory]);
6978           Install the SYSLINUX bootloader on "device".
6979
6980           The device parameter must be either a whole disk formatted as a FAT
6981           filesystem, or a partition formatted as a FAT filesystem.  In the
6982           latter case, the partition should be marked as "active"
6983           ("$g->part_set_bootable") and a Master Boot Record must be
6984           installed (eg. using "$g->pwrite_device") on the first sector of
6985           the whole disk.  The SYSLINUX package comes with some suitable
6986           Master Boot Records.  See the syslinux(1) man page for further
6987           information.
6988
6989           The optional arguments are:
6990
6991           directory
6992               Install SYSLINUX in the named subdirectory, instead of in the
6993               root directory of the FAT filesystem.
6994
6995           Additional configuration can be supplied to SYSLINUX by placing a
6996           file called syslinux.cfg on the FAT filesystem, either in the root
6997           directory, or under directory if that optional argument is being
6998           used.  For further information about the contents of this file, see
6999           syslinux(1).
7000
7001           See also "$g->extlinux".
7002
7003           This function depends on the feature "syslinux".  See also
7004           "$g->feature-available".
7005
7006       @lines = $g->tail ($path);
7007           This command returns up to the last 10 lines of a file as a list of
7008           strings.
7009
7010           Because of the message protocol, there is a transfer limit of
7011           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
7012           guestfs(3).
7013
7014       @lines = $g->tail_n ($nrlines, $path);
7015           If the parameter "nrlines" is a positive number, this returns the
7016           last "nrlines" lines of the file "path".
7017
7018           If the parameter "nrlines" is a negative number, this returns lines
7019           from the file "path", starting with the "-nrlines"'th line.
7020
7021           If the parameter "nrlines" is zero, this returns an empty list.
7022
7023           Because of the message protocol, there is a transfer limit of
7024           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
7025           guestfs(3).
7026
7027       $g->tar_in ($tarfile, $directory [, compress => $compress] [, xattrs =>
7028       $xattrs] [, selinux => $selinux] [, acls => $acls]);
7029           This command uploads and unpacks local file "tarfile" into
7030           directory.
7031
7032           The optional "compress" flag controls compression.  If not given,
7033           then the input should be an uncompressed tar file.  Otherwise one
7034           of the following strings may be given to select the compression
7035           type of the input file: "compress", "gzip", "bzip2", "xz", "lzop".
7036           (Note that not all builds of libguestfs will support all of these
7037           compression types).
7038
7039           The other optional arguments are:
7040
7041           "xattrs"
7042               If set to true, extended attributes are restored from the tar
7043               file.
7044
7045           "selinux"
7046               If set to true, SELinux contexts are restored from the tar
7047               file.
7048
7049           "acls"
7050               If set to true, POSIX ACLs are restored from the tar file.
7051
7052       $g->tar_in_opts ($tarfile, $directory [, compress => $compress] [,
7053       xattrs => $xattrs] [, selinux => $selinux] [, acls => $acls]);
7054           This is an alias of "tar_in".
7055
7056       $g->tar_out ($directory, $tarfile [, compress => $compress] [,
7057       numericowner => $numericowner] [, excludes => $excludes] [, xattrs =>
7058       $xattrs] [, selinux => $selinux] [, acls => $acls]);
7059           This command packs the contents of directory and downloads it to
7060           local file "tarfile".
7061
7062           The optional "compress" flag controls compression.  If not given,
7063           then the output will be an uncompressed tar file.  Otherwise one of
7064           the following strings may be given to select the compression type
7065           of the output file: "compress", "gzip", "bzip2", "xz", "lzop".
7066           (Note that not all builds of libguestfs will support all of these
7067           compression types).
7068
7069           The other optional arguments are:
7070
7071           "excludes"
7072               A list of wildcards.  Files are excluded if they match any of
7073               the wildcards.
7074
7075           "numericowner"
7076               If set to true, the output tar file will contain UID/GID
7077               numbers instead of user/group names.
7078
7079           "xattrs"
7080               If set to true, extended attributes are saved in the output
7081               tar.
7082
7083           "selinux"
7084               If set to true, SELinux contexts are saved in the output tar.
7085
7086           "acls"
7087               If set to true, POSIX ACLs are saved in the output tar.
7088
7089       $g->tar_out_opts ($directory, $tarfile [, compress => $compress] [,
7090       numericowner => $numericowner] [, excludes => $excludes] [, xattrs =>
7091       $xattrs] [, selinux => $selinux] [, acls => $acls]);
7092           This is an alias of "tar_out".
7093
7094       $g->tgz_in ($tarball, $directory);
7095           This command uploads and unpacks local file "tarball" (a gzip
7096           compressed tar file) into directory.
7097
7098           This function is deprecated.  In new code, use the "tar_in" call
7099           instead.
7100
7101           Deprecated functions will not be removed from the API, but the fact
7102           that they are deprecated indicates that there are problems with
7103           correct use of these functions.
7104
7105       $g->tgz_out ($directory, $tarball);
7106           This command packs the contents of directory and downloads it to
7107           local file "tarball".
7108
7109           This function is deprecated.  In new code, use the "tar_out" call
7110           instead.
7111
7112           Deprecated functions will not be removed from the API, but the fact
7113           that they are deprecated indicates that there are problems with
7114           correct use of these functions.
7115
7116       $g->touch ($path);
7117           Touch acts like the touch(1) command.  It can be used to update the
7118           timestamps on a file, or, if the file does not exist, to create a
7119           new zero-length file.
7120
7121           This command only works on regular files, and will fail on other
7122           file types such as directories, symbolic links, block special etc.
7123
7124       $g->truncate ($path);
7125           This command truncates "path" to a zero-length file.  The file must
7126           exist already.
7127
7128       $g->truncate_size ($path, $size);
7129           This command truncates "path" to size "size" bytes.  The file must
7130           exist already.
7131
7132           If the current file size is less than "size" then the file is
7133           extended to the required size with zero bytes.  This creates a
7134           sparse file (ie. disk blocks are not allocated for the file until
7135           you write to it).  To create a non-sparse file of zeroes, use
7136           "$g->fallocate64" instead.
7137
7138       $g->tune2fs ($device [, force => $force] [, maxmountcount =>
7139       $maxmountcount] [, mountcount => $mountcount] [, errorbehavior =>
7140       $errorbehavior] [, group => $group] [, intervalbetweenchecks =>
7141       $intervalbetweenchecks] [, reservedblockspercentage =>
7142       $reservedblockspercentage] [, lastmounteddirectory =>
7143       $lastmounteddirectory] [, reservedblockscount => $reservedblockscount]
7144       [, user => $user]);
7145           This call allows you to adjust various filesystem parameters of an
7146           ext2/ext3/ext4 filesystem called "device".
7147
7148           The optional parameters are:
7149
7150           "force"
7151               Force tune2fs to complete the operation even in the face of
7152               errors.  This is the same as the tune2fs(8) "-f" option.
7153
7154           "maxmountcount"
7155               Set the number of mounts after which the filesystem is checked
7156               by e2fsck(8).  If this is 0 then the number of mounts is
7157               disregarded.  This is the same as the tune2fs(8) "-c" option.
7158
7159           "mountcount"
7160               Set the number of times the filesystem has been mounted.  This
7161               is the same as the tune2fs(8) "-C" option.
7162
7163           "errorbehavior"
7164               Change the behavior of the kernel code when errors are
7165               detected.  Possible values currently are: "continue",
7166               "remount-ro", "panic".  In practice these options don't really
7167               make any difference, particularly for write errors.
7168
7169               This is the same as the tune2fs(8) "-e" option.
7170
7171           "group"
7172               Set the group which can use reserved filesystem blocks.  This
7173               is the same as the tune2fs(8) "-g" option except that it can
7174               only be specified as a number.
7175
7176           "intervalbetweenchecks"
7177               Adjust the maximal time between two filesystem checks (in
7178               seconds).  If the option is passed as 0 then time-dependent
7179               checking is disabled.
7180
7181               This is the same as the tune2fs(8) "-i" option.
7182
7183           "reservedblockspercentage"
7184               Set the percentage of the filesystem which may only be
7185               allocated by privileged processes.  This is the same as the
7186               tune2fs(8) "-m" option.
7187
7188           "lastmounteddirectory"
7189               Set the last mounted directory.  This is the same as the
7190               tune2fs(8) "-M" option.
7191
7192           "reservedblockscount" Set the number of reserved filesystem blocks.
7193           This is the same as the tune2fs(8) "-r" option.
7194           "user"
7195               Set the user who can use the reserved filesystem blocks.  This
7196               is the same as the tune2fs(8) "-u" option except that it can
7197               only be specified as a number.
7198
7199           To get the current values of filesystem parameters, see
7200           "$g->tune2fs_l".  For precise details of how tune2fs works, see the
7201           tune2fs(8) man page.
7202
7203       %superblock = $g->tune2fs_l ($device);
7204           This returns the contents of the ext2, ext3 or ext4 filesystem
7205           superblock on "device".
7206
7207           It is the same as running "tune2fs -l device".  See tune2fs(8)
7208           manpage for more details.  The list of fields returned isn't
7209           clearly defined, and depends on both the version of "tune2fs" that
7210           libguestfs was built against, and the filesystem itself.
7211
7212       $g->txz_in ($tarball, $directory);
7213           This command uploads and unpacks local file "tarball" (an xz
7214           compressed tar file) into directory.
7215
7216           This function depends on the feature "xz".  See also
7217           "$g->feature-available".
7218
7219           This function is deprecated.  In new code, use the "tar_in" call
7220           instead.
7221
7222           Deprecated functions will not be removed from the API, but the fact
7223           that they are deprecated indicates that there are problems with
7224           correct use of these functions.
7225
7226       $g->txz_out ($directory, $tarball);
7227           This command packs the contents of directory and downloads it to
7228           local file "tarball" (as an xz compressed tar archive).
7229
7230           This function depends on the feature "xz".  See also
7231           "$g->feature-available".
7232
7233           This function is deprecated.  In new code, use the "tar_out" call
7234           instead.
7235
7236           Deprecated functions will not be removed from the API, but the fact
7237           that they are deprecated indicates that there are problems with
7238           correct use of these functions.
7239
7240       $oldmask = $g->umask ($mask);
7241           This function sets the mask used for creating new files and device
7242           nodes to "mask & 0777".
7243
7244           Typical umask values would be 022 which creates new files with
7245           permissions like "-rw-r--r--" or "-rwxr-xr-x", and 002 which
7246           creates new files with permissions like "-rw-rw-r--" or
7247           "-rwxrwxr-x".
7248
7249           The default umask is 022.  This is important because it means that
7250           directories and device nodes will be created with 0644 or 0755 mode
7251           even if you specify 0777.
7252
7253           See also "$g->get_umask", umask(2), "$g->mknod", "$g->mkdir".
7254
7255           This call returns the previous umask.
7256
7257       $g->umount ($pathordevice [, force => $force] [, lazyunmount =>
7258       $lazyunmount]);
7259           This unmounts the given filesystem.  The filesystem may be
7260           specified either by its mountpoint (path) or the device which
7261           contains the filesystem.
7262
7263       $g->umount_opts ($pathordevice [, force => $force] [, lazyunmount =>
7264       $lazyunmount]);
7265           This is an alias of "umount".
7266
7267       $g->umount_all ();
7268           This unmounts all mounted filesystems.
7269
7270           Some internal mounts are not unmounted by this call.
7271
7272       $g->umount_local ([retry => $retry]);
7273           If libguestfs is exporting the filesystem on a local mountpoint,
7274           then this unmounts it.
7275
7276           See "MOUNT LOCAL" in guestfs(3) for full documentation.
7277
7278       $g->upload ($filename, $remotefilename);
7279           Upload local file filename to remotefilename on the filesystem.
7280
7281           filename can also be a named pipe.
7282
7283           See also "$g->download".
7284
7285       $g->upload_offset ($filename, $remotefilename, $offset);
7286           Upload local file filename to remotefilename on the filesystem.
7287
7288           remotefilename is overwritten starting at the byte "offset"
7289           specified.  The intention is to overwrite parts of existing files
7290           or devices, although if a non-existent file is specified then it is
7291           created with a "hole" before "offset".  The size of the data
7292           written is implicit in the size of the source filename.
7293
7294           Note that there is no limit on the amount of data that can be
7295           uploaded with this call, unlike with "$g->pwrite", and this call
7296           always writes the full amount unless an error occurs.
7297
7298           See also "$g->upload", "$g->pwrite".
7299
7300       $g->user_cancel ();
7301           This function cancels the current upload or download operation.
7302
7303           Unlike most other libguestfs calls, this function is signal safe
7304           and thread safe.  You can call it from a signal handler or from
7305           another thread, without needing to do any locking.
7306
7307           The transfer that was in progress (if there is one) will stop
7308           shortly afterwards, and will return an error.  The errno (see
7309           "guestfs_last_errno") is set to "EINTR", so you can test for this
7310           to find out if the operation was cancelled or failed because of
7311           another error.
7312
7313           No cleanup is performed: for example, if a file was being uploaded
7314           then after cancellation there may be a partially uploaded file.  It
7315           is the callerXs responsibility to clean up if necessary.
7316
7317           There are two common places that you might call "$g->user_cancel":
7318
7319           In an interactive text-based program, you might call it from a
7320           "SIGINT" signal handler so that pressing "^C" cancels the current
7321           operation.  (You also need to call "$g->set_pgroup" so that child
7322           processes don't receive the "^C" signal).
7323
7324           In a graphical program, when the main thread is displaying a
7325           progress bar with a cancel button, wire up the cancel button to
7326           call this function.
7327
7328       $g->utimens ($path, $atsecs, $atnsecs, $mtsecs, $mtnsecs);
7329           This command sets the timestamps of a file with nanosecond
7330           precision.
7331
7332           "atsecs", "atnsecs" are the last access time (atime) in secs and
7333           nanoseconds from the epoch.
7334
7335           "mtsecs", "mtnsecs" are the last modification time (mtime) in secs
7336           and nanoseconds from the epoch.
7337
7338           If the *nsecs field contains the special value "-1" then the
7339           corresponding timestamp is set to the current time.  (The *secs
7340           field is ignored in this case).
7341
7342           If the *nsecs field contains the special value "-2" then the
7343           corresponding timestamp is left unchanged.  (The *secs field is
7344           ignored in this case).
7345
7346       %uts = $g->utsname ();
7347           This returns the kernel version of the appliance, where this is
7348           available.  This information is only useful for debugging.  Nothing
7349           in the returned structure is defined by the API.
7350
7351       %version = $g->version ();
7352           Return the libguestfs version number that the program is linked
7353           against.
7354
7355           Note that because of dynamic linking this is not necessarily the
7356           version of libguestfs that you compiled against.  You can compile
7357           the program, and then at runtime dynamically link against a
7358           completely different libguestfs.so library.
7359
7360           This call was added in version 1.0.58.  In previous versions of
7361           libguestfs there was no way to get the version number.  From C code
7362           you can use dynamic linker functions to find out if this symbol
7363           exists (if it doesn't, then itXs an earlier version).
7364
7365           The call returns a structure with four elements.  The first three
7366           ("major", "minor" and "release") are numbers and correspond to the
7367           usual version triplet.  The fourth element ("extra") is a string
7368           and is normally empty, but may be used for distro-specific
7369           information.
7370
7371           To construct the original version string:
7372           "$major.$minor.$release$extra"
7373
7374           See also: "LIBGUESTFS VERSION NUMBERS" in guestfs(3).
7375
7376           Note: Don't use this call to test for availability of features.  In
7377           enterprise distributions we backport features from later versions
7378           into earlier versions, making this an unreliable way to test for
7379           features.  Use "$g->available" or "$g->feature_available" instead.
7380
7381       $label = $g->vfs_label ($mountable);
7382           This returns the label of the filesystem on "mountable".
7383
7384           If the filesystem is unlabeled, this returns the empty string.
7385
7386           To find a filesystem from the label, use "$g->findfs_label".
7387
7388       $sizeinbytes = $g->vfs_minimum_size ($mountable);
7389           Get the minimum size of filesystem in bytes.  This is the minimum
7390           possible size for filesystem shrinking.
7391
7392           If getting minimum size of specified filesystem is not supported,
7393           this will fail and set errno as ENOTSUP.
7394
7395           See also ntfsresize(8), resize2fs(8), btrfs(8), xfs_info(8).
7396
7397       $fstype = $g->vfs_type ($mountable);
7398           This command gets the filesystem type corresponding to the
7399           filesystem on "mountable".
7400
7401           For most filesystems, the result is the name of the Linux VFS
7402           module which would be used to mount this filesystem if you mounted
7403           it without specifying the filesystem type.  For example a string
7404           such as "ext3" or "ntfs".
7405
7406       $uuid = $g->vfs_uuid ($mountable);
7407           This returns the filesystem UUID of the filesystem on "mountable".
7408
7409           If the filesystem does not have a UUID, this returns the empty
7410           string.
7411
7412           To find a filesystem from the UUID, use "$g->findfs_uuid".
7413
7414       $g->vg_activate ($activate, \@volgroups);
7415           This command activates or (if "activate" is false) deactivates all
7416           logical volumes in the listed volume groups "volgroups".
7417
7418           This command is the same as running "vgchange -a y|n volgroups..."
7419
7420           Note that if "volgroups" is an empty list then all volume groups
7421           are activated or deactivated.
7422
7423           This function depends on the feature "lvm2".  See also
7424           "$g->feature-available".
7425
7426       $g->vg_activate_all ($activate);
7427           This command activates or (if "activate" is false) deactivates all
7428           logical volumes in all volume groups.
7429
7430           This command is the same as running "vgchange -a y|n"
7431
7432           This function depends on the feature "lvm2".  See also
7433           "$g->feature-available".
7434
7435       $g->vgchange_uuid ($vg);
7436           Generate a new random UUID for the volume group "vg".
7437
7438           This function depends on the feature "lvm2".  See also
7439           "$g->feature-available".
7440
7441       $g->vgchange_uuid_all ();
7442           Generate new random UUIDs for all volume groups.
7443
7444           This function depends on the feature "lvm2".  See also
7445           "$g->feature-available".
7446
7447       $g->vgcreate ($volgroup, \@physvols);
7448           This creates an LVM volume group called "volgroup" from the non-
7449           empty list of physical volumes "physvols".
7450
7451           This function depends on the feature "lvm2".  See also
7452           "$g->feature-available".
7453
7454       @uuids = $g->vglvuuids ($vgname);
7455           Given a VG called "vgname", this returns the UUIDs of all the
7456           logical volumes created in this volume group.
7457
7458           You can use this along with "$g->lvs" and "$g->lvuuid" calls to
7459           associate logical volumes and volume groups.
7460
7461           See also "$g->vgpvuuids".
7462
7463       $metadata = $g->vgmeta ($vgname);
7464           "vgname" is an LVM volume group.  This command examines the volume
7465           group and returns its metadata.
7466
7467           Note that the metadata is an internal structure used by LVM,
7468           subject to change at any time, and is provided for information
7469           only.
7470
7471           This function depends on the feature "lvm2".  See also
7472           "$g->feature-available".
7473
7474       @uuids = $g->vgpvuuids ($vgname);
7475           Given a VG called "vgname", this returns the UUIDs of all the
7476           physical volumes that this volume group resides on.
7477
7478           You can use this along with "$g->pvs" and "$g->pvuuid" calls to
7479           associate physical volumes and volume groups.
7480
7481           See also "$g->vglvuuids".
7482
7483       $g->vgremove ($vgname);
7484           Remove an LVM volume group "vgname", (for example "VG").
7485
7486           This also forcibly removes all logical volumes in the volume group
7487           (if any).
7488
7489           This function depends on the feature "lvm2".  See also
7490           "$g->feature-available".
7491
7492       $g->vgrename ($volgroup, $newvolgroup);
7493           Rename a volume group "volgroup" with the new name "newvolgroup".
7494
7495       @volgroups = $g->vgs ();
7496           List all the volumes groups detected.  This is the equivalent of
7497           the vgs(8) command.
7498
7499           This returns a list of just the volume group names that were
7500           detected (eg. "VolGroup00").
7501
7502           See also "$g->vgs_full".
7503
7504           This function depends on the feature "lvm2".  See also
7505           "$g->feature-available".
7506
7507       @volgroups = $g->vgs_full ();
7508           List all the volumes groups detected.  This is the equivalent of
7509           the vgs(8) command.  The "full" version includes all fields.
7510
7511           This function depends on the feature "lvm2".  See also
7512           "$g->feature-available".
7513
7514       $g->vgscan ();
7515           This rescans all block devices and rebuilds the list of LVM
7516           physical volumes, volume groups and logical volumes.
7517
7518           This function is deprecated.  In new code, use the "lvm_scan" call
7519           instead.
7520
7521           Deprecated functions will not be removed from the API, but the fact
7522           that they are deprecated indicates that there are problems with
7523           correct use of these functions.
7524
7525       $uuid = $g->vguuid ($vgname);
7526           This command returns the UUID of the LVM VG named "vgname".
7527
7528       $g->wait_ready ();
7529           This function is a no op.
7530
7531           In versions of the API < 1.0.71 you had to call this function just
7532           after calling "$g->launch" to wait for the launch to complete.
7533           However this is no longer necessary because "$g->launch" now does
7534           the waiting.
7535
7536           If you see any calls to this function in code then you can just
7537           remove them, unless you want to retain compatibility with older
7538           versions of the API.
7539
7540           This function is deprecated.  There is no replacement.  Consult the
7541           API documentation in guestfs(3) for further information.
7542
7543           Deprecated functions will not be removed from the API, but the fact
7544           that they are deprecated indicates that there are problems with
7545           correct use of these functions.
7546
7547       $chars = $g->wc_c ($path);
7548           This command counts the characters in a file, using the "wc -c"
7549           external command.
7550
7551       $lines = $g->wc_l ($path);
7552           This command counts the lines in a file, using the "wc -l" external
7553           command.
7554
7555       $words = $g->wc_w ($path);
7556           This command counts the words in a file, using the "wc -w" external
7557           command.
7558
7559       $g->wipefs ($device);
7560           This command erases filesystem or RAID signatures from the
7561           specified "device" to make the filesystem invisible to libblkid.
7562
7563           This does not erase the filesystem itself nor any other data from
7564           the "device".
7565
7566           Compare with "$g->zero" which zeroes the first few blocks of a
7567           device.
7568
7569           This function depends on the feature "wipefs".  See also
7570           "$g->feature-available".
7571
7572       $g->write ($path, $content);
7573           This call creates a file called "path".  The content of the file is
7574           the string "content" (which can contain any 8 bit data).
7575
7576           See also "$g->write_append".
7577
7578       $g->write_append ($path, $content);
7579           This call appends "content" to the end of file "path".  If "path"
7580           does not exist, then a new file is created.
7581
7582           See also "$g->write".
7583
7584       $g->write_file ($path, $content, $size);
7585           This call creates a file called "path".  The contents of the file
7586           is the string "content" (which can contain any 8 bit data), with
7587           length "size".
7588
7589           As a special case, if "size" is 0 then the length is calculated
7590           using "strlen" (so in this case the content cannot contain embedded
7591           ASCII NULs).
7592
7593           NB. Owing to a bug, writing content containing ASCII NUL characters
7594           does not work, even if the length is specified.
7595
7596           Because of the message protocol, there is a transfer limit of
7597           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
7598           guestfs(3).
7599
7600           This function is deprecated.  In new code, use the "write" call
7601           instead.
7602
7603           Deprecated functions will not be removed from the API, but the fact
7604           that they are deprecated indicates that there are problems with
7605           correct use of these functions.
7606
7607       $g->xfs_admin ($device [, extunwritten => $extunwritten] [, imgfile =>
7608       $imgfile] [, v2log => $v2log] [, projid32bit => $projid32bit] [,
7609       lazycounter => $lazycounter] [, label => $label] [, uuid => $uuid]);
7610           Change the parameters of the XFS filesystem on "device".
7611
7612           Devices that are mounted cannot be modified.  Administrators must
7613           unmount filesystems before this call can modify parameters.
7614
7615           Some of the parameters of a mounted filesystem can be examined and
7616           modified using the "$g->xfs_info" and "$g->xfs_growfs" calls.
7617
7618           This function depends on the feature "xfs".  See also
7619           "$g->feature-available".
7620
7621       $g->xfs_growfs ($path [, datasec => $datasec] [, logsec => $logsec] [,
7622       rtsec => $rtsec] [, datasize => $datasize] [, logsize => $logsize] [,
7623       rtsize => $rtsize] [, rtextsize => $rtextsize] [, maxpct => $maxpct]);
7624           Grow the XFS filesystem mounted at "path".
7625
7626           The returned struct contains geometry information.  Missing fields
7627           are returned as "-1" (for numeric fields) or empty string.
7628
7629           This function depends on the feature "xfs".  See also
7630           "$g->feature-available".
7631
7632       %info = $g->xfs_info ($pathordevice);
7633           "pathordevice" is a mounted XFS filesystem or a device containing
7634           an XFS filesystem.  This command returns the geometry of the
7635           filesystem.
7636
7637           The returned struct contains geometry information.  Missing fields
7638           are returned as "-1" (for numeric fields) or empty string.
7639
7640           This function depends on the feature "xfs".  See also
7641           "$g->feature-available".
7642
7643       $status = $g->xfs_repair ($device [, forcelogzero => $forcelogzero] [,
7644       nomodify => $nomodify] [, noprefetch => $noprefetch] [, forcegeometry
7645       => $forcegeometry] [, maxmem => $maxmem] [, ihashsize => $ihashsize] [,
7646       bhashsize => $bhashsize] [, agstride => $agstride] [, logdev =>
7647       $logdev] [, rtdev => $rtdev]);
7648           Repair corrupt or damaged XFS filesystem on "device".
7649
7650           The filesystem is specified using the "device" argument which
7651           should be the device name of the disk partition or volume
7652           containing the filesystem.  If given the name of a block device,
7653           "xfs_repair" will attempt to find the raw device associated with
7654           the specified block device and will use the raw device instead.
7655
7656           Regardless, the filesystem to be repaired must be unmounted,
7657           otherwise, the resulting filesystem may be inconsistent or corrupt.
7658
7659           The returned status indicates whether filesystem corruption was
7660           detected (returns 1) or was not detected (returns 0).
7661
7662           This function depends on the feature "xfs".  See also
7663           "$g->feature-available".
7664
7665       $g->yara_destroy ();
7666           Destroy previously loaded Yara rules in order to free libguestfs
7667           resources.
7668
7669           This function depends on the feature "libyara".  See also
7670           "$g->feature-available".
7671
7672       $g->yara_load ($filename);
7673           Upload a set of Yara rules from local file filename.
7674
7675           Yara rules allow to categorize files based on textual or binary
7676           patterns within their content.  See "$g->yara_scan" to see how to
7677           scan files with the loaded rules.
7678
7679           Rules can be in binary format, as when compiled with yarac command,
7680           or in source code format. In the latter case, the rules will be
7681           first compiled and then loaded.
7682
7683           Rules in source code format cannot include external files. In such
7684           cases, it is recommended to compile them first.
7685
7686           Previously loaded rules will be destroyed.
7687
7688           This function depends on the feature "libyara".  See also
7689           "$g->feature-available".
7690
7691       @detections = $g->yara_scan ($path);
7692           Scan a file with the previously loaded Yara rules.
7693
7694           For each matching rule, a "yara_detection" structure is returned.
7695
7696           The "yara_detection" structure contains the following fields.
7697
7698           "yara_name"
7699               Path of the file matching a Yara rule.
7700
7701           "yara_rule"
7702               Identifier of the Yara rule which matched against the given
7703               file.
7704
7705           This function depends on the feature "libyara".  See also
7706           "$g->feature-available".
7707
7708       @lines = $g->zegrep ($regex, $path);
7709           This calls the external "zegrep" program and returns the matching
7710           lines.
7711
7712           Because of the message protocol, there is a transfer limit of
7713           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
7714           guestfs(3).
7715
7716           This function is deprecated.  In new code, use the "grep" call
7717           instead.
7718
7719           Deprecated functions will not be removed from the API, but the fact
7720           that they are deprecated indicates that there are problems with
7721           correct use of these functions.
7722
7723       @lines = $g->zegrepi ($regex, $path);
7724           This calls the external "zegrep -i" program and returns the
7725           matching lines.
7726
7727           Because of the message protocol, there is a transfer limit of
7728           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
7729           guestfs(3).
7730
7731           This function is deprecated.  In new code, use the "grep" call
7732           instead.
7733
7734           Deprecated functions will not be removed from the API, but the fact
7735           that they are deprecated indicates that there are problems with
7736           correct use of these functions.
7737
7738       $g->zero ($device);
7739           This command writes zeroes over the first few blocks of "device".
7740
7741           How many blocks are zeroed isn't specified (but itXs not enough to
7742           securely wipe the device).  It should be sufficient to remove any
7743           partition tables, filesystem superblocks and so on.
7744
7745           If blocks are already zero, then this command avoids writing
7746           zeroes.  This prevents the underlying device from becoming non-
7747           sparse or growing unnecessarily.
7748
7749           See also: "$g->zero_device", "$g->scrub_device",
7750           "$g->is_zero_device"
7751
7752       $g->zero_device ($device);
7753           This command writes zeroes over the entire "device".  Compare with
7754           "$g->zero" which just zeroes the first few blocks of a device.
7755
7756           If blocks are already zero, then this command avoids writing
7757           zeroes.  This prevents the underlying device from becoming non-
7758           sparse or growing unnecessarily.
7759
7760       $g->zero_free_space ($directory);
7761           Zero the free space in the filesystem mounted on directory.  The
7762           filesystem must be mounted read-write.
7763
7764           The filesystem contents are not affected, but any free space in the
7765           filesystem is freed.
7766
7767           Free space is not "trimmed".  You may want to call "$g->fstrim"
7768           either as an alternative to this, or after calling this, depending
7769           on your requirements.
7770
7771       $g->zerofree ($device);
7772           This runs the zerofree program on "device".  This program claims to
7773           zero unused inodes and disk blocks on an ext2/3 filesystem, thus
7774           making it possible to compress the filesystem more effectively.
7775
7776           You should not run this program if the filesystem is mounted.
7777
7778           It is possible that using this program can damage the filesystem or
7779           data on the filesystem.
7780
7781           This function depends on the feature "zerofree".  See also
7782           "$g->feature-available".
7783
7784       @lines = $g->zfgrep ($pattern, $path);
7785           This calls the external "zfgrep" program and returns the matching
7786           lines.
7787
7788           Because of the message protocol, there is a transfer limit of
7789           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
7790           guestfs(3).
7791
7792           This function is deprecated.  In new code, use the "grep" call
7793           instead.
7794
7795           Deprecated functions will not be removed from the API, but the fact
7796           that they are deprecated indicates that there are problems with
7797           correct use of these functions.
7798
7799       @lines = $g->zfgrepi ($pattern, $path);
7800           This calls the external "zfgrep -i" program and returns the
7801           matching lines.
7802
7803           Because of the message protocol, there is a transfer limit of
7804           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
7805           guestfs(3).
7806
7807           This function is deprecated.  In new code, use the "grep" call
7808           instead.
7809
7810           Deprecated functions will not be removed from the API, but the fact
7811           that they are deprecated indicates that there are problems with
7812           correct use of these functions.
7813
7814       $description = $g->zfile ($meth, $path);
7815           This command runs file(1) after first decompressing "path" using
7816           "meth".
7817
7818           "meth" must be one of "gzip", "compress" or "bzip2".
7819
7820           Since 1.0.63, use "$g->file" instead which can now process
7821           compressed files.
7822
7823           This function is deprecated.  In new code, use the "file" call
7824           instead.
7825
7826           Deprecated functions will not be removed from the API, but the fact
7827           that they are deprecated indicates that there are problems with
7828           correct use of these functions.
7829
7830       @lines = $g->zgrep ($regex, $path);
7831           This calls the external zgrep(1) program and returns the matching
7832           lines.
7833
7834           Because of the message protocol, there is a transfer limit of
7835           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
7836           guestfs(3).
7837
7838           This function is deprecated.  In new code, use the "grep" call
7839           instead.
7840
7841           Deprecated functions will not be removed from the API, but the fact
7842           that they are deprecated indicates that there are problems with
7843           correct use of these functions.
7844
7845       @lines = $g->zgrepi ($regex, $path);
7846           This calls the external "zgrep -i" program and returns the matching
7847           lines.
7848
7849           Because of the message protocol, there is a transfer limit of
7850           somewhere between 2MB and 4MB.  See "PROTOCOL LIMITS" in
7851           guestfs(3).
7852
7853           This function is deprecated.  In new code, use the "grep" call
7854           instead.
7855
7856           Deprecated functions will not be removed from the API, but the fact
7857           that they are deprecated indicates that there are problems with
7858           correct use of these functions.
7859

AVAILABILITY

7861       From time to time we add new libguestfs APIs.  Also some libguestfs
7862       APIs won't be available in all builds of libguestfs (the Fedora build
7863       is full-featured, but other builds may disable features).  How do you
7864       test whether the APIs that your Perl program needs are available in the
7865       version of "Sys::Guestfs" that you are using?
7866
7867       To test if a particular function is available in the "Sys::Guestfs"
7868       class, use the ordinary Perl UNIVERSAL method "can(METHOD)" (see
7869       perlobj(1)).  For example:
7870
7871        use Sys::Guestfs;
7872        if (defined (Sys::Guestfs->can ("set_verbose"))) {
7873          print "\$g->set_verbose is available\n";
7874        }
7875
7876       To test if particular features are supported by the current build, use
7877       the "feature_available" method like the example below.  Note that the
7878       appliance must be launched first.
7879
7880        $g->feature_available ( ["augeas"] );
7881
7882       For further discussion on this topic, refer to "AVAILABILITY" in
7883       guestfs(3).
7884

STORING DATA IN THE HANDLE

7886       The handle returned from "new" is a hash reference.  The hash normally
7887       contains some elements:
7888
7889        {
7890          _g => [private data used by libguestfs],
7891          _flags => [flags provided when creating the handle]
7892        }
7893
7894       Callers can add other elements to this hash to store data for their own
7895       purposes.  The data lasts for the lifetime of the handle.
7896
7897       Any fields whose names begin with an underscore are reserved for
7898       private use by libguestfs.  We may add more in future.
7899
7900       It is recommended that callers prefix the name of their field(s) with
7901       some unique string, to avoid conflicts with other users.
7902
7904       Copyright (C) 2009-2020 Red Hat Inc.
7905

LICENSE

7907       Please see the file COPYING.LIB for the full license.
7908

SEE ALSO

7910       guestfs(3), guestfish(1), <http://libguestfs.org>.
7911
7912
7913
7914perl v5.34.0                      2021-09-23                   Sys::Guestfs(3)
Impressum