| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
Transscribe many hivex(3) APIs into the libguestfs API.
There is one hive handle per libguestfs handle, as with Augeas.
Note that hivex uses iconv_open for some APIs (eg. hivex_value_string).
But since we delete all the i18n files from the appliance, this
doesn't work -- iconv_open returns EINVAL. Therefore hivex APIs which
require iconv cannot be bound in the daemon.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add optional label and uuid arguments, and deprecate mkswap-L and
mkswap-U.
This also adds a call to udev_settle after creating the swap device.
This is an attempt to workaround the following problem seen in Koji
and Rawhide:
libguestfs: trace: mkswap_L "swapit" "/dev/sda1"
libguestfs: send_to_daemon: 72 bytes: 00 00 00 44 | 20 00 f5 f5 | 00 00 00 04 | 00 00 00 83 | 00 00 00 00 | ...
guestfsd: main_loop: proc 210 (part_disk) took 2.28 seconds
guestfsd: main_loop: new request, len 0x44
mkswap -f -L swapit /dev/sda1
libguestfs: recv_from_daemon: 40 bytes: 20 00 f5 f5 | 00 00 00 04 | 00 00 00 83 | 00 00 00 01 | 00 12 37 cf | ...
libguestfs: trace: mkswap_L = 0
libguestfs: trace: swapon_label "swapit"
libguestfs: send_to_daemon: 56 bytes: 00 00 00 34 | 20 00 f5 f5 | 00 00 00 04 | 00 00 00 ae | 00 00 00 00 | ...
guestfsd: main_loop: proc 131 (mkswap_L) took 0.77 seconds
guestfsd: main_loop: new request, len 0x34
swapon -L swapit
swapon: cannot find the device for swapit
guestfsd: error: swapit: swapon: cannot find the device for swapit
libguestfs: recv_from_daemon: 100 bytes: 20 00 f5 f5 | 00 00 00 04 | 00 00 00 ae | 00 00 00 01 | 00 12 37 d0 | ...
libguestfs: trace: swapon_label = -1 (error)
swapon_label: swapit: swapon: cannot find the device for swapit
test_swapon_label_0 FAILED
|
|
|
|
|
|
|
| |
Just drop the unstructed output since we can get the structed info
from xfs_info instead.
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Add new api xfs_admin to change parameters of an XFS filesystem.
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
RWMJ:
- Remove printuuid, printlabel, since they don't change any settings.
- Adjusted the documentation.
- Fix the tests.
|
| |
|
| |
|
|
|
|
|
| |
This API is not especially useful on its own. It will be used to
reimplement guestfs_ls to work without protocol limits.
|
| |
|
|
|
|
|
| |
Note that the code to do this was already in virt-ls, so this is
change is mostly just moving the code into the core library.
|
|
|
|
|
|
|
|
| |
Note that we keep the old daemon calls, but rename them as
"internal_write" and "internal_write_append". This lets us implement
the new library-side calls more efficiently in the common case when
the uploaded content is smaller than the message buffer. In most
cases the new calls won't end up using a temporary file.
|
|
|
|
| |
This also makes a larger test suite for this command.
|
| |
|
|
|
|
|
| |
This also reimplements the virt-ls -R option to use the replacement
guestfs_find API, which is simpler (though actually less efficient).
|
| |
|
| |
|
|
|
|
| |
Useful functions for concatenating strings together.
|
|
|
|
| |
This is equivalent to the tar option --numeric-owner.
|
|
|
|
|
|
|
|
|
|
| |
The compress flag can be used to control compression, one of: (none),
"compress", "gzip", "bzip2", "xz", "lzop". Thus these calls can now
be used instead of tgz-in/tgz-out/txz-in/txz-out, and also support
more compression types.
Mark these APIs as once_had_no_optargs so that compatibility code is
generated.
|
|
|
|
|
|
| |
free out when failure.
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
|
|
|
|
| |
Implement rsync.
|
|
|
|
|
|
|
|
| |
This commit makes grep into an optargs API, with flags for extended,
fixed, [case-]insensitive and compressed.
At the same time it deprecates: egrep, fgrep, grepi, egrepi, fgrepi,
zgrep, zegrep, zfgrep, zgrepi, zegrepi and zfgrepi.
|
|
|
|
|
|
| |
New api xfs_growfs for expanding a XFS filesystem.
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
|
|
|
|
|
|
|
|
|
|
| |
Typical output:
><fs> utsname
uts_sysname: Linux
uts_release: 3.5.0-1.fc18.x86_64
uts_version: #1 SMP Mon Jul 23 17:43:39 UTC 2012
uts_machine: x86_64
|
|
|
|
|
|
|
|
| |
These APIs will allow sysprep to change the UUIDs of all PVs and VGs
in the system.
LVs don't have UUIDs AFAICT, or at least there seems to be no way to
change them if they do have them.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use Dev_or_Path instead of String.
Remove the RESOLVE_DEVICE since Dev_or_Path will generate
REQUIRE_ROOT_OR_RESOLVE_DEVICE instead.
RWMJ:
Note a change in semantics: this now requires root. However this is
OK and still works with mkmountpoint and friends because
'is_root_mounted' works even if something is mounted below the root.
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
|
|
|
|
|
|
|
| |
Resolve device first, like do_umount.
Use Dev_or_Path.
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
|
|
|
|
|
|
| |
Add the option force and lazy for force and lazy umount.
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
|
|
|
|
|
|
|
| |
This is just code motion.
Some files cannot be renamed. Notably rpcgen input and output files
must not contain dash characters, else rpcgen breaks.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
doesn't support chown (RHBZ#840572).
When using tar-in or tools built around it such as virt-make-fs, if
the target filesystem is vfat then unpacking the tarball would fail
because tar tries to chown(2) files and fails.
You would see errors such as:
tar: <file>: Cannot change ownership to uid 500, gid 500: Operation not permitted
This change detects whether the target filesystem supports chown(2).
If not, it adds the --no-same-owner flag to tar to stop it from trying
to change the ownership of newly created files.
|
|
|
|
|
| |
This is mostly code motion, although the precise contract of this
function changes slightly to make it more generally useful
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add xfs_info to show the geometry of the xfs filesystem.
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
RWMJ:
- Updated po/POTFILES.
- Use xfs_ prefix for all struct fields.
- Return uninitialized fields as -1 / empty string.
- Copyedit the description.
|
|
|
|
|
|
| |
Just make gcc happy.
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
case_sensitive_path is undefined when the final path element doesn't
exist. Currently it returns an error, but this means that creating a
new file doesn't work as expected:
$ guestfish --rw -i -d windows touch 'win:c:\blah'
libguestfs: error: case_sensitive_path: blah no file or directory found with this name
We should allow this case (provided there is no trailing slash) so
that new files or directories can be created.
|
|
|
|
| |
This is just code motion.
|
|
|
|
|
| |
By using the once_had_no_optargs flag, this change is backwards
compatible for callers.
|
|
|
|
|
| |
By using the once_had_no_optargs flag, this change is backwards
compatible for callers.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On Linux, sync(2) does not actually issue a write barrier, thus it
doesn't force a flush of the underlying hardware write cache (or
qemu's disk cache in the virtual case).
This can be a problem, because libguestfs relies on running sync in
the appliance, followed by killing qemu (using SIGTERM).
In most cases, this is fine, because killing qemu with SIGTERM should
cause it to flush out the disk cache before it exits. However we have
found various bugs in qemu which cause qemu to crash while doing the
flush, leaving the data unwritten (see RHBZ#836913).
The solution is to issue fsync(2) to the block devices. This has a
write barrier, so it ensures that qemu writes out its cache long
before we get around to killing qemu.
|
|
|
|
| |
No functional change.
|
|
|
|
|
|
| |
This returns the number of whole block devices added. It is usually
simpler to call this than to list the devices and count them, which
is what we do in some places in the current codebase.
|
|
|
|
|
|
|
|
| |
The original fix for this in
commit 511c82df46f5c6f4a7f984fdb81d4691038ed6da was not complete, in
that it did not fix the case of the old (pre '-m' option) parted.
This doesn't matter for Fedora, but it matters for RHEL 5 which has
this ancient parted.
|
|
|
|
|
|
| |
This returns the index of the device, eg. /dev/sdb => 1.
Or you can think of it as the order that the device was
added, or the index of the device in guestfs_list_devices.
|
|
|
|
| |
Thanks Alasdair Kergon.
|
|
|
|
|
| |
Sort the device names correctly, not just treating them as
strings. As a result, /dev/sdz < /dev/sdaa.
|
|
|
|
|
|
|
|
|
|
| |
Apparently e2fsprogs only knows that "/dev/sda" is a whole device, but
doesn't think that "/dev/vda" is. On switching the default device
over to virtio-scsi, that causes mke2fs without -F option to complain
and ask for an interactive prompt. Adding -F forces it to go ahead
anyway.
This caused several less-used APIs to break with virtio-scsi.
|
| |
|
|
|
|
|
|
| |
This is closer to the real meaning of "availability of btrfs", since
just having the btrfs tool doesn't help much if it's not supported by
the kernel too.
|
|
|
|
|
| |
This also creates an internal filesystem_available function within the
daemon.
|
|
|
|
|
| |
See:
https://www.redhat.com/archives/libguestfs/2012-May/msg00152.html
|
| |
|
| |
|