| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
(cherry picked from commit c0a3c9ce70b98171e737e49e6dccc4457963f2ec)
|
|
|
|
|
|
| |
No functional change.
(cherry picked from commit cb24ceedd8a8ef7da71cfcce6db10669de47685c)
|
|
|
|
|
|
|
| |
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.
(cherry picked from commit 152b179a19e43fcb0baec65ea65d394ee1dba891)
|
|
|
|
|
|
|
|
| |
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.
(cherry picked from commit a9d7d044f552855a7ef78d953c0c2672e35bfc80)
|
|
|
|
|
|
|
|
|
| |
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.
(cherry picked from commit 4d3ec25b47361601604e2f585178393e60f4cd4d)
|
|
|
|
|
| |
Thanks Alasdair Kergon.
(cherry picked from commit 998ebc333dbfe40c5953e36fb42f9610727a7532)
|
|
|
|
|
|
|
|
| |
Sort the device names correctly, not just treating them as
strings. As a result, /dev/sdz < /dev/sdaa.
Cherry picked from commit c0a087b8236755e95371d5c352c9d29a3ca992c0
and backported to libguestfs 1.16.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
(cherry picked from commit 62c5b6db58911a5e51f59965619355437b7a7214)
|
|
|
|
| |
(cherry picked from commit ee9ab52bc3e087f63dcc51d3b6ac5c79277425e1)
|
|
|
|
|
|
|
|
|
|
| |
I used scsi_debug to create a 4k sector virtual disk:
modprobe scsi_debug dev_size_mb=128 sector_size=4096
I then used 'gdisk' to create lots of partitions, and used 'hexdump'
to examine what was written to disk.
(cherry picked from commit 2fd2c85f6a42575749b9d38bd2f1512ae25db760)
|
|
|
|
|
|
|
| |
reasonable (RHBZ#816839).
Thanks Yuyu Zhou.
(cherry picked from commit cc798540370658ecc1bba94c4ab4b64485c9bcc6)
|
|
|
|
| |
(cherry picked from commit 77ac6b73cde017452d48d53aaf6fa755502b05d5)
|
|
|
|
|
|
|
| |
This function allows you to pass an explicit errno back to the
library. reply_with_error is redefined as a macro that calls
reply_with_error_errno with errno == 0.
(cherry picked from commit 7526df547c5bea9a0cb4370ca022e413388dce2e)
|
|
|
|
|
|
| |
split_lines already sets reply_with_*, so calling it again would lose
protocol synchronization.
(cherry picked from commit 710ec49bac8bce10bfc0b9ba4b34d877c22f7287)
|
|
|
|
|
| |
Useful for debugging.
(cherry picked from commit 5da61d30520315a7d5060137a6c109f2109a7631)
|
|
|
|
| |
(cherry picked from commit 13c2db39abff3c0050eade5bcce997afdf04d721)
|
|
|
|
| |
(cherry picked from commit 4c9218658e4d4b769acaa41d999b4bce437fbc37)
|
|
|
|
|
|
|
|
|
|
| |
Error: UNINIT:
/builddir/build/BUILD/libguestfs-1.16.5/daemon/glob.c:32: var_decl: Declaring variable "buf" without initializer.
/builddir/build/BUILD/libguestfs-1.16.5/daemon/glob.c:36: uninit_use_in_call: Using uninitialized value "buf.gl_offs" when calling "rpl_glob".
/builddir/build/BUILD/libguestfs-1.16.5/gnulib/lib/glob.c:557: read_parm_fld: Reading a parameter field.
/builddir/build/BUILD/libguestfs-1.16.5/daemon/glob.c:36: uninit_use_in_call: Using uninitialized value "buf.gl_pathc" when calling "rpl_glob".
/builddir/build/BUILD/libguestfs-1.16.5/gnulib/lib/glob.c:557: read_parm_fld: Reading a parameter field.
(cherry picked from commit b2c1d8be39d4689267ef7e4188e2cf936b30628f)
|
|
|
|
| |
(cherry picked from commit 3345444cccfe2e2fb07d4769d1e764eca59dd6f9)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Coverity error is this (which I think is wrong):
Error: TAINTED_SCALAR:
/builddir/build/BUILD/libguestfs-1.16.5/daemon/inotify.c:211: tainted_data_argument: Calling function "read" taints argument "inotify_buf".
/builddir/build/BUILD/libguestfs-1.16.5/daemon/inotify.c:232: var_assign_var: Assigning: "event" = "(struct inotify_event *)&inotify_buf[n]". Both are now tainted.
/builddir/build/BUILD/libguestfs-1.16.5/daemon/inotify.c:258: lower_bounds: Checking lower bounds of unsigned scalar "event->len" by "event->len > 0U".
/builddir/build/BUILD/libguestfs-1.16.5/daemon/inotify.c:272: var_assign_var: Compound assignment involving tainted variable "16UL + event->len" to variable "n" taints "n".
/builddir/build/BUILD/libguestfs-1.16.5/daemon/inotify.c:228: lower_bounds: Checking lower bounds of unsigned scalar "n" by "n < inotify_posn".
/builddir/build/BUILD/libguestfs-1.16.5/daemon/inotify.c:281: tainted_data: Using tainted variable "n" as an index into an array "inotify_buf".
Adding a sanity check of event->len is prudent.
(cherry picked from commit ae0f9f149b2b527b924d4532aa38302056d8a6b0)
|
|
|
|
|
|
|
|
|
| |
Error: RESOURCE_LEAK:
/builddir/build/BUILD/libguestfs-1.16.5/daemon/debug.c:469: open_fn: Calling opening function "open".
/builddir/build/BUILD/libguestfs-1.16.5/daemon/debug.c:469: var_assign: Assigning: "fd" = handle returned from "open("/proc/sys/kernel/core_pattern", 1)".
/builddir/build/BUILD/libguestfs-1.16.5/daemon/debug.c:474: noescape: Variable "fd" is not closed or saved in function "write".
/builddir/build/BUILD/libguestfs-1.16.5/daemon/debug.c:476: leaked_handle: Handle variable "fd" going out of scope leaks the handle.
(cherry picked from commit 3b3d9ca4e1fa0a4f566cb2a8008540ee640b738b)
|
|
|
|
|
|
|
|
|
| |
Error: RESOURCE_LEAK:
/builddir/build/BUILD/libguestfs-1.16.5/daemon/upload.c:225: open_fn: Calling opening function "open".
/builddir/build/BUILD/libguestfs-1.16.5/daemon/upload.c:225: var_assign: Assigning: "fd" = handle returned from "open(filename, 0)".
/builddir/build/BUILD/libguestfs-1.16.5/daemon/upload.c:233: noescape: Variable "fd" is not closed or saved in function "lseek".
/builddir/build/BUILD/libguestfs-1.16.5/daemon/upload.c:235: leaked_handle: Handle variable "fd" going out of scope leaks the handle.
(cherry picked from commit fbf10d7f682178a6a71cfa8dbac2acd23f869597)
|
|
|
|
|
|
|
|
|
|
| |
Error: RESOURCE_LEAK:
/builddir/build/BUILD/libguestfs-1.16.5/daemon/9p.c:130: open_fn: Calling opening function "open".
/builddir/build/BUILD/libguestfs-1.16.5/daemon/9p.c:130: var_assign: Assigning: "fd" = handle returned from "open(filename, 0)".
/builddir/build/BUILD/libguestfs-1.16.5/daemon/9p.c:142: leaked_handle: Handle variable "fd" going out of scope leaks the handle.
/builddir/build/BUILD/libguestfs-1.16.5/daemon/9p.c:149: noescape: Variable "fd" is not closed or saved in function "read".
/builddir/build/BUILD/libguestfs-1.16.5/daemon/9p.c:153: leaked_handle: Handle variable "fd" going out of scope leaks the handle.
(cherry picked from commit cba36e730524525b5fc1c0df2ec3dd878d55ff15)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(RHBZ#789960).
In the case where the caller attempts to mount the "hidden"
appliance root device (eg. /dev/vdb if /dev/vda is the only
normal block device added), we were calling reply_with_error
but not actually returning immediately, resulting in protocol
desynchronization.
This commit fixes this obvious mistake.
(cherry picked from commit 07081591cf9928454148db84828da8a7f39b6c6f)
|
|
|
|
|
|
| |
See this util-linux commit:
https://github.com/karelzak/util-linux/commit/b82590ad46acf9fe8d332b53875e24c3c31e2482
(cherry picked from commit f504cb02e1e8ef394287ddbaaad2fb1ec04bc33f)
|
|
|
|
|
|
|
|
| |
See comments in the code for details.
This is an alternate fix to
commit a9c8123c72db47bcab8dd738e8d5256a9ae87f11.
(cherry picked from commit 21a9efcad5379cbfcc2404142472ec5efda4aaa0)
|
|
|
|
|
| |
This reverts commit a9c8123c72db47bcab8dd738e8d5256a9ae87f11.
(cherry picked from commit a98170e0e255021481cd428ee12d0858a59a875b)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Callers are supposed to use the availability API to check for
functions that may not be available in particular builds of
libguestfs. If they don't do this, currently they tend to get obscure
error messages, eg:
libguestfs: error: zerofree: /dev/vda1: zerofree: No such file or directory
This commit changes the error message to explain what callers ought to
be doing instead:
libguestfs: error: zerofree: feature 'zerofree' is not available in this
build of libguestfs. Read 'AVAILABILITY' in the guestfs(3) man page for
how to check for the availability of features.
This patch makes the stubs check for availability. The stub code
changes to:
static void
zerofree_stub (XDR *xdr_in)
{
[...]
/* The caller should have checked before calling this. */
if (! optgroup_zerofree_available ()) {
reply_with_error ("feature '%s' is not available in this\n"
"build of libguestfs. Read 'AVAILABILITY' in the guestfs(3) man page for\n"
"how to check for the availability of features.",
"zerofree");
goto done;
}
[...]
(cherry picked from commit 330fbea5b2d6bd7db84f7ea7afe87cf1bcd438e0)
|
|
|
|
| |
(cherry picked from commit e3f15780c8197a66bfb620b802ba18d0ba0dd2ce)
|
|
|
|
|
|
|
|
|
|
| |
This commit tidies up the code by splitting out the path
element-searching code into a separate function.
Valgrind found that 'closedir' frees the 'struct dirent *', which
wasn't immediately obvious. So now we do the 'closedir' after all
operations which touch 'd->d_name'.
(cherry picked from commit a05ddcd2a719f97ba036e9d6ca4e6491ed8b1fd0)
|
|
|
|
| |
(cherry picked from commit 9700708a19a46a61ffe53c6e648206336781477e)
|
|
|
|
| |
(cherry picked from commit 86f64c37b914645afb345f96af13ad843ec641b1)
|
|
|
|
| |
(cherry picked from commit 94a7fb9fc5d04615f23f94c34eb90c35d20ba117)
|
|
|
|
| |
(cherry picked from commit ff2e685828ce6160de34756696069b80e35472e8)
|
|
|
|
|
| |
This is just a code clean-up with no functional change.
(cherry picked from commit 4c2101362edf5f2df5d018c3674b423de2a3538a)
|
|
|
|
| |
(cherry picked from commit aa978b75ae1df0d3111953114fafe0854c3f222e)
|
|
|
|
|
| |
This is just a code clean-up with no functional change.
(cherry picked from commit 43a6974cb35759d4772f610f3c92b0d31f0503ac)
|
|
|
|
| |
(cherry picked from commit f86c3a45ae19f5bb558ab9ead255ecaf004b24b0)
|
|
|
|
| |
(cherry picked from commit 9f8f1fd8560f2c3e7b625cf6d65a052cd061fd2e)
|
|
|
|
| |
(cherry picked from commit f65f653ab1541400afe2f796ab1b20cd721e769d)
|
|
|
|
|
|
| |
This uninitialized data was also sent over the protocol,
potentially being a serious information leak.
(cherry picked from commit 9cf7ecbe4fea5162b86e2c78c1a40cca737bc1da)
|
|
|
|
| |
(cherry picked from commit 84242a8d0bf9c37e700cd8a3436607dbc7908f1e)
|
|
|
|
|
|
| |
Fix the existing test to work correctly in this case.
Other cleanups.
|
|
|
|
| |
This is just code motion.
|
|
|
|
|
|
|
| |
When you call close on any block device, udev kicks off a rule which
runs blkid to reexamine the device. We need to wait for this rule to
finish running since it holds the device open and can cause other
operations to fail, notably BLKRRPART.
|
|
|
|
|
| |
In Linux, close (fd) closes the file descriptor even if it returns an
error.
|
|
|
|
| |
Update all copyright dates to 2012.
|
| |
|
|
|
|
|
|
|
|
| |
Since we implement the new api e2fsck, just change the
internal of e2fsck_f to use e2fsck now.
v1->v2: use optargs_bitmask
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
m: Wanlong Gao <gaowanlong@cn.fujitsu.com>
Add a new api e2fsck with two options:
correct: same as '-p' option of e2fsck
forceall: same as '-y' option of e2fsck
Thanks for Rich's idea.
v1->v2: use optargs_bitmask
v2->v3: change the optargs_bitmask check
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
|