[libvirt] [PATCH v2 0/1] qemu: add entry for balloon stat stat-disk-caches
by Tomáš Golembiovský
v2:
- moved item to last position in array
- documented item also in libvirt-domain.c
- added item to virsh listing
Tomáš Golembiovský (1):
qemu: add entry for balloon stat stat-disk-caches
include/libvirt/libvirt-domain.h | 9 ++++++++-
src/libvirt-domain.c | 3 +++
src/qemu/qemu_monitor_json.c | 2 ++
tools/virsh-domain-monitor.c | 2 ++
4 files changed, 15 insertions(+), 1 deletion(-)
--
2.17.0
6 years, 5 months
[libvirt] [RFC v3] external (pull) backup API
by Eric Blake
Here's my updated counterproposal for a backup API.
In comparison to v2 posted by Nikolay:
https://www.redhat.com/archives/libvir-list/2018-April/msg00115.html
- changed terminology a bit: Nikolay's "BlockSnapshot" is now called a
"Checkpoint", and "BlockExportStart/Stop" is now "BackupBegin/End"
- flesh out more API descriptions
- better documentation of proposed XML, for both checkpoints and backup
Barring any major issues turned up during review, I've already starting
to code this into libvirt with a goal of getting an implementation ready
for review this month.
Each domain will gain the ability to track a tree of Checkpoint
objects (we've previously mentioned the term "system checkpoint" in
the <domainsnapshot> XML as the combination of disk and RAM state; so
I'll use the term "disk checkpoint" in prose as needed, to make it
obvious that the checkpoints described here do not include RAM state).
I will use the virDomainSnapshot API as a guide, meaning that we will
track a tree of checkpoints where each checkpoint can have 0 or 1
parent checkpoints, in part because I plan to reuse a lot of the
snapshot code as a starting point for implementing checkpoint
tracking.
Qemu does NOT track a relationship between internal snapshots, so
libvirt has to manage the backing tree all by itself; by the same
argument, if qemu does not add a parent relationship to dirty bitmaps,
libvirt can probably manage everything itself by copying how it
manages parent relationships between internal snapshots. However, I
think it will be far easier for libvirt to exploit qemu dirty bitmaps
if qemu DOES add bitmap tracking; particularly if qemu adds ways to
easily compose a temporary bitmap that is the union of one bitmap plus
a fixed number of its parents.
Design-wise, libvirt will manage things so that there is only one
enabled dirty-bitmap per qcow2 image at a time, when no backup
operation is in effect. There is a notion of a current (or most
recent) checkpoint; when a new checkpoint is created, that becomes the
current one and the former checkpoint becomes the parent of the new
one. If there is no current checkpoint, then there is no active dirty
bitmap managed by libvirt.
Representing things on a timeline, when a guest is first created,
there is no dirty bitmap; later, the checkpoint "check1" is created,
which in turn creates "bitmap1" in the qcow2 image for all changes
past that point; when a second checkmark "check2" is created, a qemu
transaction is used to create and enable the new "bitmap2" bitmap at
the same time as disabling "bitmap1" bitmap. (Actually, it's probably
easier to name the bitmap in the qcow2 file with the same name as the
Checkpoint object being tracked in libvirt, but for discussion
purposes, it's less confusing if I use separate names for now.)
creation ....... check1 ....... check2 ....... active
no bitmap bitmap1 bitmap2
When a user wants to create a backup, they select which point in time
the backup starts from; the default value NULL represents a full
backup (all content since disk creation to the point in time of the
backup call, no bitmap is needed, use sync=full for push model or
sync=none for the pull model); any other value represents the name of
a checkpoint to use as an incremental backup (all content from the
checkpoint to the point in time of the backup call; libvirt forms a
temporary bitmap as needed, the uses sync=incremental for push model
or sync=none plus exporting the bitmap for the pull model). For
example, requesting an incremental backup from "check2" can just reuse
"bitmap2", but requesting an incremental backup from "check1" requires
the computation of the bitmap containing the union of "bitmap1" and
"bitmap2".
Libvirt will always create a new bitmap when starting a backup
operation, whether or not the user requests that a checkpoint be
created. Most users that want incremental backup sequences will
create a new checkpoint every time they do a backup; the new bitmap
that libvirt creates is then associated with that new checkpoint, and
even after the backup operation completes, the new bitmap remains in
the qcow2 file. But it is also possible to request a backup without a
new checkpoint (it merely means that it is not possible to create a
subsequent incremental backup from the backup just started); in that
case, libvirt will have to take care of merging the new bitmap back
into the previous one at the end of the backup operation.
I think that it should be possible to run multiple backup operations
in parallel in the long run. But in the interest of getting a proof
of concept implementation out quickly, it's easier to state that for
the initial implementation, libvirt supports at most one backup
operation at a time (to do another backup, you have to wait for the
current one to complete, or else abort and abandon the current
one). As there is only one backup job running at a time, the existing
virDomainGetJobInfo()/virDomainGetJobStats() will be able to report
statistics about the job (insofar as such statistics are available).
But in preparation for the future, when libvirt does add parallel job
support, starting a backup job will return a job id; and presumably
we'd add a new virDomainGetJobStatsByID() for grabbing statistics of
an arbitrary (rather than the most-recently-started) job.
Since live migration also acts as a job visible through
virDomainGetJobStats(), I'm going to treat an active backup job and
live migration as mutually exclusive. This is particularly true when
we have a pull model backup ongoing: if qemu on the source is acting
as an NBD server, you can't migrate away from that qemu and tell the
NBD client to reconnect to the NBD server on the migration
destination. So, to perform a migration, you have to cancel any
pending backup operations. Conversely, if a migration job is
underway, it will not be possible to start a new backup job until
migration completes. However, we DO need to modify migration to
ensure that any persistent bitmaps are migrated.
I also think that in the long run, it should be possible to start a
backup operation, and while it is still ongoing, create a new external
snapshot, and still be able to coordinate the transfer of bitmaps from
the old image to the new overlay. But for the first implementation,
it's probably easiest to state that an ongoing backup prevents
creation of a new snapshot. However, a current checkpoint (which
means we DO have an active bitmap, even if there is no active backup)
DOES need to be transfered to the new overlay, and conversely, a block
commit job needs to merge all bitmaps from the old overlay to the
backing file that is now becoming the active layer again. I don't
know if qemu has primitives for this in place yet; and if it does not,
the only conservative thing we can do in the initial implementation is
to state that the use of checkpoints is exclusive from the use of
snapshots (using one prevents the use of the other). Hopefully we
don't have to stay in that state for long.
For now, a user wanting guest I/O to be at a safe point can manually
use virDomainFSFreeze()/virDomainBackupBegin()/virDomainFSThaw(); we
may decide down the road to use the flags argument of
virDomainBackupBegin() to provide automatic guest quiescing through one
API (I'm not doing it right away, because we have to worry about
undoing effects if we fail to thaw after starting the backup).
So, to summarize, creating a backup will involve the following new APIs:
/**
* virDomainBackupBegin:
* @domain: a domain object
* @diskXml: description of storage to utilize and expose during
* the backup, or NULL
* @checkpointXml: description of a checkpoint to create, or NULL
* @flags: not used yet, pass 0
*
* Start a point-in-time backup job for the specified disks of a
* running domain.
*
* A backup job is mutually exclusive with domain migration
* (particularly when the job sets up an NBD export, since it is not
* possible to tell any NBD clients about a server migrating between
* hosts). For now, backup jobs are also mutually exclusive with any
* other block job on the same device, although this restriction may
* be lifted in a future release. Progress of the backup job can be
* tracked via virDomainGetJobStats(). The job remains active until a
* subsequent call to virDomainBackupEnd(), even if it no longer has
* anything to copy.
*
* There are two fundamental backup approaches. The first, called a
* push model, instructs the hypervisor to copy the state of the guest
* disk to the designated storage destination (which may be on the
* local file system or a network device); in this mode, the
* hypervisor writes the content of the guest disk to the destination,
* then emits VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2 when the backup is
* either complete or failed (the backup image is invalid if the job
* is ended prior to the event being emitted). The second, called a
* pull model, instructs the hypervisor to expose the state of the
* guest disk over an NBD export; a third-party client can then
* connect to this export, and read whichever portions of the disk it
* desires. In this mode, there is no event; libvirt has to be
* informed when the third-party NBD client is done and the backup
* resources can be released.
*
* The @diskXml parameter is optional but usually provided, and
* contains details about the backup, including which backup mode to
* use, whether the backup is incremental from a previous checkpoint,
* which disks participate in the backup, the destination for a push
* model backup, and the temporary storage and NBD server details for
* a pull model backup. If omitted, the backup attempts to default to
* a push mode full backup of all disks, where libvirt generates a
* filename for each disk by appending a suffix of a timestamp in
* seconds since the Epoch. virDomainBackupGetXMLDesc() can be called
* to actual values selected. For more information, see
* formatcheckpoint.html#BackupAttributes.
*
* The @checkpointXml parameter is optional; if non-NULL, then libvirt
* behaves as if virDomainCheckpointCreateXML() were called with
* @checkpointXml, atomically covering the same guest state that will
* be part of the backup. The creation of a new checkpoint allows for
* future incremental backups.
*
* Returns a non-negative job id on success, or negative on failure.
* This operation returns quickly, such that a user can choose to
* start a backup job between virDomainFSFreeze() and
* virDomainFSThaw() in order to create the backup while guest I/O is
* quiesced.
*/
int virDomainBackupBegin(virDomainPtr domain, const char *diskXml,
const char *checkpointXml, unsigned int flags);
Note that this layout says that all disks participating in the backup
job have share the same incremental checkpoint as their starting point
(no way to have one backup job where disk A copies data since check1
while disk B copies data since check2). If we need the latter, then
we could get rid of the 'incremental' parameter, and instead have each
<disk> element within checkpointXml all out an optional <checkpoint>
name as its starting point. Also, qemu supports exposing multiple
disks through a single NBD server (you then connect multiple clients
to the one server to grab state from each disk). So the NBD details
are listed in parallel to the <disks>. Note that since a backup is
NOT a guest-visible action, the backup job does not alter the normal
<domain> XML.
/**
* virDomainBackupGetXMLDesc:
* @domain: a domain object
* @id: the id of an active backup job previously started with
* virDomainBackupBegin()
* @flags: not used yet, pass 0
*
* In some cases, a user can start a backup job without supplying all
* details, and rely on libvirt to fill in the rest (for example,
* selecting the port used for an NBD export). This API can then be
* used to learn what default values were chosen.
*
* Returns a NUL-terminated UTF-8 encoded XML instance, or NULL in
* case of error. The caller must free() the returned value.
*/
char *
virDomainBackupGetXMLDesc(virDomainPtr domain, int id,
unsigned int flags);
/**
* virDomainBackupEnd:
* @domain: a domain object
* @id: the id of an active backup job previously started with
* virDomainBackupBegin()
* @flags: bitwise-OR of supported virDomainBackupEndFlags
*
* Conclude a point-in-time backup job @id on the given domain.
*
* If the backup job uses the push model, but the event marking that
* all data has been copied has not yet been emitted, then the command
* fails unless @flags includes VIR_DOMAIN_BACKUP_END_ABORT. If the
* event has been issued, or if the backup uses the pull model, the
* flag has no effect.
*
* Returns 0 on success and -1 on failure.
*/
int virDomainBackupEnd(virDomainPtr domain, int id, unsigned int flags);
/**
* virDomainCheckpointCreateXML:
* @domain: a domain object
* @xmlDesc: description of the checkpoint to create
* @flags: bitwise-OR of supported virDomainCheckpointCreateFlags
*
* Create a new checkpoint using @xmlDesc on a running @domain.
* Typically, it is more common to create a new checkpoint as part of
* kicking off a backup job with virDomainBackupBegin(); however, it
* is also possible to start a checkpoint without a backup.
*
* See formatcheckpoint.html#CheckpointAttributes document for more
* details on @xmlDesc.
*
* If @flags includes VIR_DOMAIN_CHECKPOINT_CREATE_REDEFINE, then this
* is a request to reinstate checkpoint metadata that was previously
* discarded, rather than creating a new checkpoint. When redefining
* checkpoint metadata, the current checkpoint will not be altered
* unless the VIR_DOMAIN_CHECKPOINT_CREATE_CURRENT flag is also
* present. It is an error to request the
* VIR_DOMAIN_CHECKPOINT_CREATE_CURRENT flag without
* VIR_DOMAIN_CHECKPOINT_CREATE_REDEFINE.
*
* If @flags includes VIR_DOMAIN_CHECKPOINT_CREATE_NO_METADATA, then
* the domain's disk images are modified according to @xmlDesc, but
* then the just-created checkpoint has its metadata deleted. This
* flag is incompatible with VIR_DOMAIN_CHECKPOINT_CREATE_REDEFINE.
*
* Returns an (opaque) new virDomainCheckpointPtr on success, or NULL
* on failure.
*/
virDomainCheckpointPtr
virDomainCheckpointCreateXML(virDomainPtr domain, const char *xmlDesc,
unsigned int flags);
/**
* virDomainCheckpointDelete:
* @checkpoint: the checkpoint to remove
* @flags: not used yet, pass 0
* @flags: bitwise-OR of supported virDomainCheckpointDeleteFlags
*
* Removes a checkpoint from the domain.
*
* When removing a checkpoint, the record of which portions of the
* disk were dirtied after the checkpoint will be merged into the
* record tracked by the parent checkpoint, if any. Likewise, if the
* checkpoint being deleted was the current checkpoint, the parent
* checkpoint becomes the new current checkpoint.
*
* If @flags includes VIR_DOMAIN_CHECKPOINT_DELETE_METADATA_ONLY, then
* any checkpoint metadata tracked by libvirt is removed while keeping
* the checkpoint contents intact; if a hypervisor does not require
* any libvirt metadata to track checkpoints, then this flag is
* silently ignored.
*
* Returns 0 on success, -1 on error.
*/
int
virDomainCheckpointDelete(virDomainCheckpointPtr checkpoint,
unsigned int flags);
// Many additional functions copying heavily from virDomainSnapshot*:
virDomainCheckpointList(virDomainPtr domain,
virDomainCheckpointPtr **checkpoints,
unsigned int flags);
virDomainCheckpointGetXMLDesc(virDomainCheckpointPtr checkpoint,
unsigned int flags);
virDomainCheckpointPtr
virDomainCheckpointLookupByName(virDomainPtr domain,
const char *name,
unsigned int flags);
const char *
virDomainCheckpointGetName(virDomainCheckpointPtr checkpoint);
virDomainPtr
virDomainCheckpointGetDomain(virDomainCheckpointPtr checkpoint);
virConnectPtr
virDomainCheckpointGetConnect(virDomainCheckpointPtr checkpoint);
int
virDomainHasCurrentCheckpoint(virDomainPtr domain, unsigned int flags);
virDomainCheckpointPtr
virDomainCheckpointCurrent(virDomainPtr domain, unsigned int flags);
virDomainCheckpointPtr
virDomainCheckpointGetParent(virDomainCheckpointPtr checkpoint,
unsigned int flags);
int
virDomainCheckpointIsCurrent(virDomainCheckpointPtr checkpoint,
unsigned int flags);
int
virDomainCheckpointRef(virDomainCheckpointPtr checkpoint);
int
virDomainCheckpointFree(virDomainCheckpointPtr checkpoint);
int
virDomainCheckpointListChildren(virDomainCheckpointPtr checkpoint,
virDomainCheckpointPtr **children,
unsigned int flags);
Notably, none of the older racy list functions, like
virDomainSnapshotNum, virDomainSnapshotNumChildren, or
virDomainSnapshotListChildrenNames; also, for now, there is no revert
support like virDomainSnapshotRevert.
Eventually, if we add a way to roll back to the state recorded in an
earlier bitmap, we'll want to tell libvirt that it needs to create a
new bitmap as a child of an existing (non-current) checkpoint. That
is, if we have:
check1 .... check2 .... active
bitmap1 bitmap2
and created a backup at the same time as check2, then when we later
roll back to the state of that backup, we would want to end writes to
bitmap2 and declare that check2 is no longer current, and create a new
current check3 with associated bitmap3 and parent check1 to track all
writes since the point of the revert. Until then, I don't think it's
possible to have more than one child without manually using the
REDEFINE flag to create such scenarios; but the API should not lock us
out of supporting multiple children in the future.
Here's my proposal for user-facing XML documentation, based on
formatsnapshot.html.in:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1>Checkpoint and Backup XML format</h1>
<ul id="toc"></ul>
<h2><a id="CheckpointAttributes">Checkpoint XML</a></h2>
<p>
Libvirt is able to facilitate incremental backups by tracking
disk checkpoints, or points in time against which it is easy to
compute which portion of the disk has changed. Given a full
backup (a backup created from the creation of the disk to a
given point in time, coupled with the creation of a disk
checkpoint at that time), and an incremental backup (a backup
created from just the dirty portion of the disk between the
first checkpoint and the second backup operation), it is
possible to do an offline reconstruction of the state of the
disk at the time of the second backup, without having to copy as
much data as a second full backup would require. Most disk
checkpoints are created in concert with a backup,
via <code>virDomainBackupBegin()</code>; however, libvirt also
exposes enough support to create disk checkpoints independently
from a backup operation,
via <code>virDomainCheckpointCreateXML()</code>.
</p>
<p>
Attributes of libvirt checkpoints are stored as child elements of
the <code>domaincheckpoint</code> element. At checkpoint creation
time, normally only the <code>name</code>, <code>description</code>,
and <code>disks</code> elements are settable; the rest of the
fields are ignored on creation, and will be filled in by
libvirt in for informational purposes
by <code>virDomainCheckpointGetXMLDesc()</code>. However, when
redefining a checkpoint,
with the <code>VIR_DOMAIN_CHECKPOINT_CREATE_REDEFINE</code> flag
of <code>virDomainCheckpointCreateXML()</code>, all of the XML
described here is relevant.
</p>
<p>
Checkpoints are maintained in a hierarchy. A domain can have a
current checkpoint, which is the most recent checkpoint compared to
the current state of the domain (although a domain might have
checkpoints without a current checkpoint, if checkpoints have been
deleted in the meantime). Creating or reverting to a checkpoint
sets that checkpoint as current, and the prior current checkpoint is
the parent of the new checkpoint. Branches in the hierarchy can
be formed by reverting to a checkpoint with a child, then creating
another checkpoint.
</p>
<p>
The top-level <code>domaincheckpoint</code> element may contain
the following elements:
</p>
<dl>
<dt><code>name</code></dt>
<dd>The name for this checkpoint. If the name is specified when
initially creating the checkpoint, then the checkpoint will have
that particular name. If the name is omitted when initially
creating the checkpoint, then libvirt will make up a name for
the checkpoint, based on the time when it was created.
</dd>
<dt><code>description</code></dt>
<dd>A human-readable description of the checkpoint. If the
description is omitted when initially creating the checkpoint,
then this field will be empty.
</dd>
<dt><code>disks</code></dt>
<dd>On input, this is an optional listing of specific
instructions for disk checkpoints; it is needed when making a
checkpoint on only a subset of the disks associated with a
domain (in particular, since qemu checkpoints require qcow2
disks, this element may be needed on input for excluding guest
disks that are not in qcow2 format); if omitted on input, then
all disks participate in the checkpoint. On output, this is
fully populated to show the state of each disk in the
checkpoint. This element has a list of <code>disk</code>
sub-elements, describing anywhere from one to all of the disks
associated with the domain.
<dl>
<dt><code>disk</code></dt>
<dd>This sub-element describes the checkpoint properties of
a specific disk. The attribute <code>name</code> is
mandatory, and must match either the <code><target
dev='name'/></code> or an unambiguous <code><source
file='name'/></code> of one of
the <a href="formatdomain.html#elementsDisks">disk
devices</a> specified for the domain at the time of the
checkpoint. The attribute <code>checkpoint</code> is
optional on input; possible values are <code>no</code>
when the disk does not participate in this checkpoint;
or <code>bitmap</code> if the disk will track all changes
since the creation of this checkpoint via a bitmap, in
which case another attribute <code>bitmap</code> will be
the name of the tracking bitmap (defaulting to the
checkpoint name).
</dd>
</dl>
</dd>
<dt><code>creationTime</code></dt>
<dd>The time this checkpoint was created. The time is specified
in seconds since the Epoch, UTC (i.e. Unix time). Readonly.
</dd>
<dt><code>parent</code></dt>
<dd>The parent of this checkpoint. If present, this element
contains exactly one child element, name. This specifies the
name of the parent checkpoint of this one, and is used to
represent trees of checkpoints. Readonly.
</dd>
<dt><code>domain</code></dt>
<dd>The inactive <a href="formatdomain.html">domain
configuration</a> at the time the checkpoint was created.
Readonly.
</dd>
</dl>
<h2><a id="BackupAttributes">Backup XML</a></h2>
<p>
Creating a backup, whether full or incremental, is done
via <code>virDomainBackupBegin()</code>, which takes an XML
description of the actions to perform. There are two general
modes for backups: a push mode (where the hypervisor writes out
the data to the destination file, which may be local or remote),
and a pull mode (where the hypervisor creates an NBD server that
a third-party client can then read as needed, and which requires
the use of temporary storage, typically local, until the backup
is complete).
</p>
<p>
The instructions for beginning a backup job are provided as
attributes and elements of the
top-level <code>domainbackup</code> element. This element
includes an optional attribute <code>mode</code> which can be
either "push" or "pull" (default push). Where elements are
optional on creation, <code>virDomainBackupGetXMLDesc()</code>
can be used to see the actual values selected (for example,
learning which port the NBD server is using in the pull model,
or what file names libvirt generated when none were supplied).
The following child elements are supported:
</p>
<dl>
<dt><code>incremental</code></dt>
<dd>Optional. If this element is present, it must name an
existing checkpoint of the domain, which will be used to make
this backup an incremental one (in the push model, only
changes since the checkpoint are written to the destination;
in the pull model, the NBD server uses the
NBD_OPT_SET_META_CONTEXT extension to advertise to the client
which portions of the export contain changes since the
checkpoint). If omitted, a full backup is performed.
</dd>
<dt><code>server</code></dt>
<dd>Present only for a pull mode backup. Contains the same
attributes as the <code>protocol</code> element of a disk
attached via NBD in the domain (such as transport, socket,
name, port, or tls), necessary to set up an NBD server that
exposes the content of each disk at the time the backup
started.
</dd>
<dt><code>disks</code></dt>
<dd>This is an optional listing of instructions for disks
participating in the backup (if omitted, all disks
participate, and libvirt attempts to generate filenames by
appending the current timestamp as a suffix). When provided on
input, disks omitted from the list do not participate in the
backup. On output, the list is present but contains only the
disks participating in the backup job. This element has a
list of <code>disk</code> sub-elements, describing anywhere
from one to all of the disks associated with the domain.
<dl>
<dt><code>disk</code></dt>
<dd>This sub-element describes the checkpoint properties of
a specific disk. The attribute <code>name</code> is
mandatory, and must match either the <code><target
dev='name'/></code> or an unambiguous <code><source
file='name'/></code> of one of
the <a href="formatdomain.html#elementsDisks">disk
devices</a> specified for the domain at the time of the
checkpoint. The optional attribute <code>type</code> can
be <code>file</code>, <code>block</code>,
or <code>networks</code>, similar to a disk declaration
for a domain, controls what additional sub-elements are
needed to describe the destination (such
as <code>protocol</code> for a network destination). In
push mode backups, the primary subelement
is <code>target</code>; in pull mode, the primary sublement
is <code>scratch</code>; but either way,
the primary sub-element describes the file name to be used
during the backup operation, similar to
the <code>source</code> sub-element of a domain disk. An
optional sublement <code>driver</code> can also be used to
specify a destination format different from qcow2.
</dd>
</dl>
</dd>
</dl>
<h2><a id="example">Examples</a></h2>
<p>Using this XML to create a checkpoint of just vda on a qemu
domain with two disks and a prior checkpoint:</p>
<pre>
<domaincheckpoint>
<description>Completion of updates after OS
install</description>
<disks>
<disk name='vda' checkpoint='bitmap'/>
<disk name='vdb' checkpoint='no'/>
</disks>
</domaincheckpoint></pre>
<p>will result in XML similar to this from
<code>virDomainCheckpointGetXMLDesc()</code>:</p>
<pre>
<domaincheckpoint>
<name>1525889631</name>
<description>Completion of updates after OS
install</description>
<creationTime>1525889631</creationTime>
<parent>
<name>1525111885</name>
</parent>
<disks>
<disk name='vda' checkpoint='bitmap' bitmap='1525889631'/>
<disk name='vdb' checkpoint='no'/>
</disks>
<domain>
<name>fedora</name>
<uuid>93a5c045-6457-2c09-e56c-927cdf34e178</uuid>
<memory>1048576</memory>
...
<devices>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/path/to/file1'/>
<target dev='vda' bus='virtio'/>
</disk>
<disk type='file' device='disk' snapshot='external'>
<driver name='qemu' type='raw'/>
<source file='/path/to/file2'/>
<target dev='vdb' bus='virtio'/>
</disk>
...
</devices>
</domain>
</domaincheckpoint></pre>
<p>With that checkpoint created, the qcow2 image is now tracking
all changes that occur in the image since the checkpoint via
the persistent bitmap named <code>1525889631</code>. Now, we
can make a subsequent call
to <code>virDomainBackupBegin()</code> to perform an incremental
backup of just this data, using the following XML to start a
pull model NBD export of the vda disk:
</p>
<pre>
<domainbackup mode="pull">
<incremental>1525889631</incremental>
<server transport="unix" socket="/path/to/server"/>
<disks/>
<disk name='vda' type='file'/>
<scratch file=/path/to/file1.scratch'/>
</disk>
</disks/>
</domainbackup>
</pre>
</body>
</html>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
6 years, 5 months
[libvirt] [RFC v2 0/4] LXC with block device and enabled userns
by Radostin Stoyanov
Hi all,
This patch series aims to resolve
https://bugzilla.redhat.com/show_bug.cgi?id=1328946
For background information about the issue see v1 of this RFC.
https://www.redhat.com/archives/libvir-list/2018-April/msg01270.html
The current state of this series enables the start of LXC container with NBD
file system and enabled user namespace.
However, container shutdown causes "kernel BUG at fs/buffer.c:3058!"
https://pastebin.com/raw/y0ycSM0H
The reason for this is because qemu-nbd process is terminated/killed without
unmounting the container root file system.
This issue has been reported in [1] and [2].
[1] https://bugzilla.redhat.com/show_bug.cgi?id=1356110
[2] http://lkml.iu.edu/hypermail/linux/kernel/1509.3/00027.html
As a workaround we could unmount the root file system of container before shutdown.
For example with:
$ CT_PID=$(pidof libvirt_lxc)
$ sudo nsenter \
--mount=/proc/$CT_PID/task/$CT_PID/ns/mnt \
/bin/bash -c "umount /var/run/libvirt/lxc/guest.root/"
I noticed that we already have the functions lxcContainerUnmountSubtree
and virProcessRunInMountNamespace.
Any suggestions on how to properly implement this?
Thanks,
Radostin Stoyanov (4):
lxc: Make lxcContainerMountFSBlock non static
lxc: Move up virLXCControllerAppendNBDPids
lxc: Mount NBD devices before clone
lxc: Remove unused lxcContainerPrepareRoot
src/lxc/lxc_container.c | 58 +-------------
src/lxc/lxc_container.h | 4 +
src/lxc/lxc_controller.c | 158 +++++++++++++++++++++++----------------
3 files changed, 97 insertions(+), 123 deletions(-)
--
2.17.1
6 years, 5 months
[libvirt] virsh start/list hangs
by Bo YU
Hello,
The libvirt is a cool tool, i like it.
But, i have some question to ask.
First, i install
libvirt-dev virtinst libvirt-daemon libvirt-daemon-system
using debian-apt.It works for me a long time.But, i wanted to modify
rx_queue_size in net(maybe controled by qemu).So, i git clone libvirt
https://libvirt.org/git/?p=libvirt.git;a=summary
and make && make install.Maybe you know, i made a mistake meanwhile,
i forget delete libvirt relative package from apt(debian).
According to error hint, i delete some file and directory :(
Then i think out to apt remove :
libvirt-dev virtinst libvirt-daemon libvirt-daemon-system
It seems look good.But, libvirt does not work at all.
The step reproduce is:
```c
./autogen.sh --system
make -j4
make install
```
whereis virsh
virsh: /usr/bin/virsh /usr/share/man/man1/virsh.1
whereis libvirtd
libvirtd: /usr/sbin/libvirtd /usr/share/man/man8/libvirtd.8
sudo ps u -C libvirtd
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 30699 0.0 0.4 483404 17336 ? Sl 10:27 0:00 libvirtd -d
uname-r:
4.9.0-3-amd64
lsb_release -a
No LSB modules are available.
Distributor ID:DebianDescription:Debian GNU/Linux 9.4 (stretch)
Release:9.4
Codename:stretch
But, if i type ``sudo virsh version`` it hangs.Or
``sudo virsh list`` it hangs too.
I deleted some libary file in /lib or somewhere.Maybe?
But, i reproduce the trouble on another debian OS without libary.
It looks like only you if install libvirt before you will get some
troubles then you compile it from source code.Right?
Thanks in advance!
Here is output of strace:
execve("/usr/bin/virsh", ["virsh", "list"], [/* 50 vars */]) = 0
brk(NULL) = 0x55875027f000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7efecd633000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=115763, ...}) = 0
mmap(NULL, 115763, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7efecd616000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libvirt-lxc.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\17\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=85072, ...}) = 0
mmap(NULL, 2109488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecd20f000
mprotect(0x7efecd212000, 2093056, PROT_NONE) = 0
mmap(0x7efecd411000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7efecd411000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libvirt-qemu.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\v\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=82544, ...}) = 0
mmap(NULL, 2109488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecd00b000
mprotect(0x7efecd00d000, 2097152, PROT_NONE) = 0
mmap(0x7efecd20d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7efecd20d000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libvirt.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\304\7\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=15737592, ...}) = 0
mmap(NULL, 5757216, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecca8d000
mprotect(0x7efeccdf3000, 2093056, PROT_NONE) = 0
mmap(0x7efeccff2000, 98304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x365000) = 0x7efeccff2000
mmap(0x7efecd00a000, 2336, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efecd00a000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libyajl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\22\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=39200, ...}) = 0
mmap(NULL, 2134264, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecc883000
mprotect(0x7efecc88c000, 2093056, PROT_NONE) = 0
mmap(0x7efecca8b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7efecca8b000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/libnl-route-3.so.200", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@w\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1846248, ...}) = 0
mmap(NULL, 2494528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecc621000
mprotect(0x7efecc67a000, 2093056, PROT_NONE) = 0
mmap(0x7efecc879000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x58000) = 0x7efecc879000
mmap(0x7efecc880000, 8256, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efecc880000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/libnl-3.so.200", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\204\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=489088, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7efecd614000
mmap(NULL, 2222248, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecc402000
mprotect(0x7efecc41f000, 2093056, PROT_NONE) = 0
mmap(0x7efecc61e000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c000) = 0x7efecc61e000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0Pa\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=135440, ...}) = 0
mmap(NULL, 2212936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecc1e5000
mprotect(0x7efecc1fd000, 2093056, PROT_NONE) = 0
mmap(0x7efecc3fc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7efecc3fc000
mmap(0x7efecc3fe000, 13384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efecc3fe000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200V\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1063328, ...}) = 0
mmap(NULL, 3158248, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecbee1000
mprotect(0x7efecbfe4000, 2093056, PROT_NONE) = 0
mmap(0x7efecc1e3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x102000) = 0x7efecc1e3000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\261\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=341688, ...}) = 0
mmap(NULL, 2441040, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecbc8d000
mprotect(0x7efecbcdd000, 2093056, PROT_NONE) = 0
mmap(0x7efecbedc000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4f000) = 0x7efecbedc000
mmap(0x7efecbee0000, 3920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efecbee0000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libnuma.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\00003\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=44192, ...}) = 0
mmap(NULL, 2140320, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecba82000
mprotect(0x7efecba8c000, 2093056, PROT_NONE) = 0
mmap(0x7efecbc8b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x7efecbc8b000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libsasl2.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360-\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=109296, ...}) = 0
mmap(NULL, 2204648, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecb867000
mprotect(0x7efecb881000, 2093056, PROT_NONE) = 0
mmap(0x7efecba80000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7efecba80000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000k\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=155400, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7efecd612000
mmap(NULL, 2259664, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecb63f000
mprotect(0x7efecb664000, 2093056, PROT_NONE) = 0
mmap(0x7efecb863000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x24000) = 0x7efecb863000
mmap(0x7efecb865000, 6864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efecb865000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libdbus-1.so.3", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\324\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=325776, ...}) = 0
mmap(NULL, 2421424, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecb3ef000
mprotect(0x7efecb43c000, 2097152, PROT_NONE) = 0
mmap(0x7efecb63c000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4d000) = 0x7efecb63c000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libssh2.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200L\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=179480, ...}) = 0
mmap(NULL, 2274552, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecb1c3000
mprotect(0x7efecb1ee000, 2093056, PROT_NONE) = 0
mmap(0x7efecb3ed000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2a000) = 0x7efecb3ed000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libgnutls.so.30", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\275\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1670752, ...}) = 0
mmap(NULL, 3771208, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecae2a000
mprotect(0x7efecafb4000, 2097152, PROT_NONE) = 0
mmap(0x7efecb1b4000, 57344, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18a000) = 0x7efecb1b4000
mmap(0x7efecb1c2000, 2888, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efecb1c2000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libxml2.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\343\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1809656, ...}) = 0
mmap(NULL, 3910072, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecaa6f000
mprotect(0x7efecac1f000, 2097152, PROT_NONE) = 0
mmap(0x7efecae1f000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b0000) = 0x7efecae1f000
mmap(0x7efecae29000, 2488, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efecae29000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libreadline.so.7", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200f\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=309168, ...}) = 0
mmap(NULL, 2409704, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efeca822000
mprotect(0x7efeca866000, 2093056, PROT_NONE) = 0
mmap(0x7efecaa65000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x43000) = 0x7efecaa65000
mmap(0x7efecaa6d000, 5352, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efecaa6d000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libutil.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\16\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=10688, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7efecd610000
mmap(NULL, 2105608, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efeca61f000
mprotect(0x7efeca621000, 2093056, PROT_NONE) = 0
mmap(0x7efeca820000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7efeca820000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\r\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14640, ...}) = 0
mmap(NULL, 2109680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efeca41b000
mprotect(0x7efeca41e000, 2093056, PROT_NONE) = 0
mmap(0x7efeca61d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7efeca61d000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\4\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1689360, ...}) = 0
mmap(NULL, 3795296, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efeca07c000
mprotect(0x7efeca211000, 2097152, PROT_NONE) = 0
mmap(0x7efeca411000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x195000) = 0x7efeca411000
mmap(0x7efeca417000, 14688, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efeca417000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340 \0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=31744, ...}) = 0
mmap(NULL, 2128832, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec9e74000
mprotect(0x7efec9e7b000, 2093056, PROT_NONE) = 0
mmap(0x7efeca07a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7efeca07a000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libudev.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=131344, ...}) = 0
mmap(NULL, 135152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecd5ef000
mmap(0x7efecd60e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e000) = 0x7efecd60e000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p9\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=84848, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7efecd5ed000
mmap(NULL, 2189896, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec9c5d000
mprotect(0x7efec9c71000, 2093056, PROT_NONE) = 0
mmap(0x7efec9e70000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x7efec9e70000
mmap(0x7efec9e72000, 6728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efec9e72000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libpcre.so.3", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\25\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=468920, ...}) = 0
mmap(NULL, 2564360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec99ea000
mprotect(0x7efec9a5c000, 2093056, PROT_NONE) = 0
mmap(0x7efec9c5b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x71000) = 0x7efec9c5b000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libsystemd.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=557552, ...}) = 0
mmap(NULL, 561809, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efecd563000
mprotect(0x7efecd5e7000, 4096, PROT_NONE) = 0
mmap(0x7efecd5e8000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x84000) = 0x7efecd5e8000
mmap(0x7efecd5ec000, 657, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efecd5ec000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000#\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=121744, ...}) = 0
mmap(NULL, 2208128, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec97ce000
mprotect(0x7efec97e8000, 2097152, PROT_NONE) = 0
mmap(0x7efec99e8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x7efec99e8000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libgcrypt.so.20", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\255\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1112184, ...}) = 0
mmap(NULL, 3208448, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec94be000
mprotect(0x7efec95c5000, 2097152, PROT_NONE) = 0
mmap(0x7efec97c5000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x107000) = 0x7efec97c5000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libp11-kit.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\26\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=411688, ...}) = 0
mmap(NULL, 2507952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec9259000
mprotect(0x7efec92b3000, 2093056, PROT_NONE) = 0
mmap(0x7efec94b2000, 49152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x59000) = 0x7efec94b2000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libidn.so.11", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 .\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=210968, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7efecd561000
mmap(NULL, 2306096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec9025000
mprotect(0x7efec9057000, 2097152, PROT_NONE) = 0
mmap(0x7efec9257000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x32000) = 0x7efec9257000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libtasn1.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@+\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=75776, ...}) = 0
mmap(NULL, 2171592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec8e12000
mprotect(0x7efec8e23000, 2097152, PROT_NONE) = 0
mmap(0x7efec9023000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11000) = 0x7efec9023000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libnettle.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\225\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=224504, ...}) = 0
mmap(NULL, 2319552, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec8bdb000
mprotect(0x7efec8c10000, 2093056, PROT_NONE) = 0
mmap(0x7efec8e0f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x34000) = 0x7efec8e0f000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libhogweed.so.4", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000x\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=216776, ...}) = 0
mmap(NULL, 2311792, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec89a6000
mprotect(0x7efec89d9000, 2097152, PROT_NONE) = 0
mmap(0x7efec8bd9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x33000) = 0x7efec8bd9000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libgmp.so.10", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\305\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=537448, ...}) = 0
mmap(NULL, 2632576, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec8723000
mprotect(0x7efec87a4000, 2097152, PROT_NONE) = 0
mmap(0x7efec89a4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x81000) = 0x7efec89a4000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libicui18n.so.57", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\22\f\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=2591816, ...}) = 0
mmap(NULL, 4690016, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec82a9000
mprotect(0x7efec8514000, 2093056, PROT_NONE) = 0
mmap(0x7efec8713000, 61440, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x26a000) = 0x7efec8713000
mmap(0x7efec8722000, 96, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efec8722000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libicuuc.so.57", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\311\5\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1727216, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7efecd55f000
mmap(NULL, 3833312, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec7f01000
mprotect(0x7efec8095000, 2093056, PROT_NONE) = 0
mmap(0x7efec8294000, 77824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x193000) = 0x7efec8294000
mmap(0x7efec82a7000, 7648, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efec82a7000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libicudata.so.57", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\5\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=25675624, ...}) = 0
mmap(NULL, 27770920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec6484000
mprotect(0x7efec7d00000, 2093056, PROT_NONE) = 0
mmap(0x7efec7eff000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x187b000) = 0x7efec7eff000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/liblzma.so.5", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\2200\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=154376, ...}) = 0
mmap(NULL, 2249360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec625e000
mprotect(0x7efec6283000, 2093056, PROT_NONE) = 0
mmap(0x7efec6482000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x24000) = 0x7efec6482000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libtinfo.so.5", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\315\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=170776, ...}) = 0
mmap(NULL, 2267936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec6034000
mprotect(0x7efec605a000, 2093056, PROT_NONE) = 0
mmap(0x7efec6259000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7efec6259000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/liblz4.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\"\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=72024, ...}) = 0
mmap(NULL, 2167120, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec5e22000
mprotect(0x7efec5e33000, 2093056, PROT_NONE) = 0
mmap(0x7efec6032000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0x7efec6032000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libgpg-error.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p(\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=79936, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7efecd55d000
mmap(NULL, 2175160, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec5c0e000
mprotect(0x7efec5c21000, 2093056, PROT_NONE) = 0
mmap(0x7efec5e20000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12000) = 0x7efec5e20000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libffi.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\31\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=35296, ...}) = 0
mmap(NULL, 2131560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec5a05000
mprotect(0x7efec5a0c000, 2097152, PROT_NONE) = 0
mmap(0x7efec5c0c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7efec5c0c000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\267\10\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1566168, ...}) = 0
mmap(NULL, 3674720, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec5683000
mprotect(0x7efec57f5000, 2097152, PROT_NONE) = 0
mmap(0x7efec59f5000, 49152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x172000) = 0x7efec59f5000
mmap(0x7efec5a01000, 12896, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efec5a01000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220*\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=92584, ...}) = 0
mmap(NULL, 2188336, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7efec546c000
mprotect(0x7efec5482000, 2093056, PROT_NONE) = 0
mmap(0x7efec5681000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7efec5681000
close(3) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7efecd55b000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7efecd559000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7efecd557000
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7efecd554000
arch_prctl(ARCH_SET_FS, 0x7efecd5548c0) = 0
mprotect(0x7efeca411000, 16384, PROT_READ) = 0
mprotect(0x7efec5681000, 4096, PROT_READ) = 0
mprotect(0x7efecc1e3000, 4096, PROT_READ) = 0
mprotect(0x7efec59f5000, 40960, PROT_READ) = 0
mprotect(0x7efec5c0c000, 4096, PROT_READ) = 0
mprotect(0x7efec5e20000, 4096, PROT_READ) = 0
mprotect(0x7efec6032000, 4096, PROT_READ) = 0
mprotect(0x7efec6259000, 16384, PROT_READ) = 0
mprotect(0x7efecc3fc000, 4096, PROT_READ) = 0
mprotect(0x7efeca61d000, 4096, PROT_READ) = 0
mprotect(0x7efec6482000, 4096, PROT_READ) = 0
mprotect(0x7efec7eff000, 4096, PROT_READ) = 0
mprotect(0x7efec8294000, 73728, PROT_READ) = 0
mprotect(0x7efec8713000, 53248, PROT_READ) = 0
mprotect(0x7efec89a4000, 4096, PROT_READ) = 0
mprotect(0x7efec8e0f000, 8192, PROT_READ) = 0
mprotect(0x7efec8bd9000, 4096, PROT_READ) = 0
mprotect(0x7efec9023000, 4096, PROT_READ) = 0
mprotect(0x7efec9257000, 4096, PROT_READ) = 0
mprotect(0x7efec94b2000, 40960, PROT_READ) = 0
mprotect(0x7efec97c5000, 8192, PROT_READ) = 0
mprotect(0x7efec99e8000, 4096, PROT_READ) = 0
mprotect(0x7efec9c5b000, 4096, PROT_READ) = 0
mprotect(0x7efecb863000, 4096, PROT_READ) = 0
mprotect(0x7efeca07a000, 4096, PROT_READ) = 0
mprotect(0x7efecd5e8000, 12288, PROT_READ) = 0
mprotect(0x7efec9e70000, 4096, PROT_READ) = 0
mprotect(0x7efecd60e000, 4096, PROT_READ) = 0
mprotect(0x7efeca820000, 4096, PROT_READ) = 0
mprotect(0x7efecaa65000, 8192, PROT_READ) = 0
mprotect(0x7efecae1f000, 32768, PROT_READ) = 0
mprotect(0x7efecb1b4000, 53248, PROT_READ) = 0
mprotect(0x7efecb3ed000, 4096, PROT_READ) = 0
mprotect(0x7efecb63c000, 8192, PROT_READ) = 0
mprotect(0x7efecba80000, 4096, PROT_READ) = 0
mprotect(0x7efecbc8b000, 4096, PROT_READ) = 0
mprotect(0x7efecbedc000, 4096, PROT_READ) = 0
mprotect(0x7efecc61e000, 8192, PROT_READ) = 0
mprotect(0x7efecc879000, 12288, PROT_READ) = 0
mprotect(0x7efecca8b000, 4096, PROT_READ) = 0
mprotect(0x7efeccff2000, 61440, PROT_READ) = 0
mprotect(0x7efecd20d000, 4096, PROT_READ) = 0
mprotect(0x7efecd411000, 4096, PROT_READ) = 0
mprotect(0x55874f98e000, 90112, PROT_READ) = 0
mprotect(0x7efecd636000, 4096, PROT_READ) = 0
munmap(0x7efecd616000, 115763) = 0
set_tid_address(0x7efecd554b90) = 31092
set_robust_list(0x7efecd554ba0, 24) = 0
rt_sigaction(SIGRTMIN, {sa_handler=0x7efecc1eabd0, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7efecc1f60c0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {sa_handler=0x7efecc1eac60, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7efecc1f60c0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
brk(NULL) = 0x55875027f000
brk(0x5587502b1000) = 0x5587502b1000
futex(0x7efec94bd460, FUTEX_WAKE_PRIVATE, 2147483647) = 0
statfs("/sys/fs/selinux", 0x7ffeecf6cc70) = -1 ENOENT (No such file or directory)
statfs("/selinux", 0x7ffeecf6cc70) = -1 ENOENT (No such file or directory)
open("/proc/filesystems", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tr"..., 1024) = 311
read(3, "", 1024) = 0
close(3) = 0
access("/etc/selinux/config", F_OK) = -1 ENOENT (No such file or directory)
getrandom("\347", 1, GRND_NONBLOCK) = 1
stat("/etc/gnutls/default-priorities", 0x7ffeecf6cc90) = -1 ENOENT (No such file or directory)
open("/proc/self/status", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "Name:\tvirsh\nUmask:\t0022\nState:\tR"..., 1024) = 1024
close(3) = 0
open("/sys/devices/system/node", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
brk(0x5587502d6000) = 0x5587502d6000
getdents(3, /* 9 entries */, 32768) = 280
open("/sys/devices/system/node/node0/meminfo", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
read(4, "Node 0 MemTotal: 3956368 "..., 4096) = 1070
read(4, "", 4096) = 0
close(4) = 0
getdents(3, /* 0 entries */, 32768) = 0
close(3) = 0
sched_getaffinity(0, 512, [0, 1, 2, 3]) = 64
open("/sys/devices/system/cpu", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
getdents(3, /* 20 entries */, 32768) = 592
getdents(3, /* 0 entries */, 32768) = 0
brk(0x5587502ce000) = 0x5587502ce000
close(3) = 0
open("/proc/self/status", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "Name:\tvirsh\nUmask:\t0022\nState:\tR"..., 1024) = 1024
read(3, "xt_switches:\t1\n", 1024) = 15
read(3, "", 1024) = 0
close(3) = 0
open("/proc/net/psched", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "000003e8 00000040 000f4240 3b9ac"..., 1024) = 36
close(3) = 0
stat("/usr/local/etc/libnl/classid", {st_mode=S_IFREG|0644, st_size=1130, ...}) = 0
open("/usr/local/etc/libnl/classid", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=1130, ...}) = 0
read(3, "################################"..., 4096) = 1130
read(3, "", 4096) = 0
close(3) = 0
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=7109136, ...}) = 0
mmap(NULL, 7109136, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7efec4da4000
close(3) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
getuid() = 1000
geteuid() = 1000
open("/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=26258, ...}) = 0
mmap(NULL, 26258, PROT_READ, MAP_SHARED, 3, 0) = 0x7efecd62c000
close(3) = 0
futex(0x7efeca4168a8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
uname({sysname="Linux", nodename="debian", ...}) = 0
futex(0x7efecd009b00, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7efecd00a700, FUTEX_WAKE_PRIVATE, 2147483647) = 0
pipe2([3, 4], O_NONBLOCK|O_CLOEXEC) = 0
mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7efec45a3000
mprotect(0x7efec45a3000, 4096, PROT_NONE) = 0
clone(child_stack=0x7efec4da2e30, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7efec4da39d0, tls=0x7efec4da3700, child_tidptr=0x7efec4da39d0) = 31093
futex(0x7efecd009dd8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7efecd00a6e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
geteuid() = 1000
geteuid() = 1000
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 5
connect(5, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(5) = 0
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 5
connect(5, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(5) = 0
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=529, ...}) = 0
read(5, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 529
read(5, "", 4096) = 0
close(5) = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=115763, ...}) = 0
mmap(NULL, 115763, PROT_READ, MAP_PRIVATE, 5, 0) = 0x7efecd537000
close(5) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libnss_compat.so.2", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\22\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0644, st_size=31616, ...}) = 0
mmap(NULL, 2126944, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7efec439b000
mprotect(0x7efec43a2000, 2093056, PROT_NONE) = 0
mmap(0x7efec45a1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x6000) = 0x7efec45a1000
close(5) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libnsl.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320?\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0644, st_size=89064, ...}) = 0
mmap(NULL, 2194008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7efec4183000
mprotect(0x7efec4197000, 2097152, PROT_NONE) = 0
mmap(0x7efec4397000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x14000) = 0x7efec4397000
mmap(0x7efec4399000, 6744, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efec4399000
close(5) = 0
mprotect(0x7efec4397000, 4096, PROT_READ) = 0
mprotect(0x7efec45a1000, 4096, PROT_READ) = 0
munmap(0x7efecd537000, 115763) = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=115763, ...}) = 0
mmap(NULL, 115763, PROT_READ, MAP_PRIVATE, 5, 0) = 0x7efecd537000
close(5) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libnss_nis.so.2", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340 \0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0644, st_size=47688, ...}) = 0
mmap(NULL, 2143656, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7efebfdf4000
mprotect(0x7efebfdff000, 2093056, PROT_NONE) = 0
mmap(0x7efebfffe000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xa000) = 0x7efebfffe000
close(5) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320!\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0644, st_size=47632, ...}) = 0
mmap(NULL, 2168600, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7efebfbe2000
mprotect(0x7efebfbec000, 2097152, PROT_NONE) = 0
mmap(0x7efebfdec000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xa000) = 0x7efebfdec000
mmap(0x7efebfdee000, 22296, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7efebfdee000
close(5) = 0
mprotect(0x7efebfdec000, 4096, PROT_READ) = 0
mprotect(0x7efebfffe000, 4096, PROT_READ) = 0
munmap(0x7efecd537000, 115763) = 0
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 5
lseek(5, 0, SEEK_CUR) = 0
fstat(5, {st_mode=S_IFREG|0644, st_size=1763, ...}) = 0
mmap(NULL, 1763, PROT_READ, MAP_SHARED, 5, 0) = 0x7efecd62b000
lseek(5, 1763, SEEK_SET) = 1763
munmap(0x7efecd62b000, 1763) = 0
close(5) = 0
access("/home/yubo/.config/libvirt/libvirt.conf", F_OK) = -1 ENOENT (No such file or directory)
getuid() = 1000
geteuid() = 1000
access("/proc/vz", F_OK) = -1 ENOENT (No such file or directory)
geteuid() = 1000
getuid() = 1000
geteuid() = 1000
getuid() = 1000
geteuid() = 1000
stat("/run/user/1000/libvirt", 0x7ffeecf6c1f0) = -1 ENOENT (No such file or directory)
stat("/run/user/1000", {st_mode=S_IFDIR|0700, st_size=180, ...}) = 0
mkdir("/run/user/1000/libvirt", 0700) = 0
open("/run/user/1000/libvirt/libvirtd.lock", O_RDWR|O_CREAT, 0600) = 5
fcntl(5, F_GETFD) = 0
fcntl(5, F_SETFD, FD_CLOEXEC) = 0
fcntl(5, F_SETLKW, {l_type=F_WRLCK, l_whence=SEEK_SET, l_start=0, l_len=1}) = 0
socket(AF_UNIX, SOCK_STREAM, 0) = 6
connect(6, {sa_family=AF_UNIX, sun_path="/run/user/1000/libvirt/libvirt-sock"}, 110) = -1 ENOENT (No such file or directory)
open("/dev/null", O_RDWR|O_CLOEXEC) = 7
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7efecd554b90) = 31094
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
close(7) = 0
wait4(31094, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 31094
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=31094, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
nanosleep({tv_sec=0, tv_nsec=10000000}, NULL) = 0
connect(6, {sa_family=AF_UNIX, sun_path="/run/user/1000/libvirt/libvirt-sock"}, 110) = -1 ENOENT (No such file or directory)
nanosleep({tv_sec=0, tv_nsec=10000000}, NULL) = 0
connect(6, {sa_family=AF_UNIX, sun_path="/run/user/1000/libvirt/libvirt-sock"}, 110) = -1 ENOENT (No such file or directory)
nanosleep({tv_sec=0, tv_nsec=10000000}, NULL) = 0
connect(6, {sa_family=AF_UNIX, sun_path="/run/user/1000/libvirt/libvirt-sock"}, 110) = 0
getsockname(6, {sa_family=AF_UNIX}, [128->2]) = 0
futex(0x7efecd00a460, FUTEX_WAKE_PRIVATE, 2147483647) = 0
fcntl(6, F_GETFD) = 0
fcntl(6, F_SETFD, FD_CLOEXEC) = 0
fcntl(6, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(6, F_SETFL, O_RDWR|O_NONBLOCK) = 0
unlink("/run/user/1000/libvirt/libvirtd.lock") = 0
close(5) = 0
futex(0x7efecd00a578, FUTEX_WAKE_PRIVATE, 2147483647) = 0
pipe2([5, 7], O_CLOEXEC) = 0
write(4, "\0", 1) = 1
futex(0x7efecd009980, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7efecd00a478, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7efecd00a548, FUTEX_WAKE_PRIVATE, 2147483647) = 0
write(4, "\0", 1) = 1
futex(0x7efecd009980, FUTEX_WAKE_PRIVATE, 1) = 1
rt_sigprocmask(SIG_BLOCK, [PIPE CHLD WINCH], [], 8) = 0
poll([{fd=6, events=POLLOUT}, {fd=5, events=POLLIN}], 2, -1) = 1 ([{fd=6, revents=POLLOUT}])
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
write(6, "\0\0\0\34 \0\200\206\0\0\0\1\0\0\0B\0\0\0\0\0\0\0\0\0\0\0\0", 28) = 28
rt_sigprocmask(SIG_BLOCK, [PIPE CHLD WINCH], [], 8) = 0
poll([{fd=6, events=POLLIN}, {fd=5, events=POLLIN}], 2, -1) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
--- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL} ---
+++ killed by SIGINT +++
6 years, 5 months
[libvirt] [dbus PATCH] tests: include stdlib.h
by Ján Tomko
On some systems, EXIT_SUCCESS and EXIT_FAILURE require inclusion
of stdlib.h
Signed-off-by: Ján Tomko <jtomko(a)redhat.com>
---
Pushed as a build breaker fix.
tests/test_util.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tests/test_util.c b/tests/test_util.c
index 9611192..b7fafb6 100644
--- a/tests/test_util.c
+++ b/tests/test_util.c
@@ -1,5 +1,7 @@
#include "util.h"
+#include <stdlib.h>
+
static gint
virtTestEncodeStr(const gchar *input,
const gchar *expected)
--
2.16.1
6 years, 5 months
Re: [libvirt] [Qemu-devel] [PATCH 0/3] block: Remove deprecated -drive options
by Cole Robinson
On 06/13/2018 08:34 AM, Kevin Wolf wrote:
> We deprecated a bunch of -drive options in 2.10, so let's remove them
> for 3.0.
>
> Kevin Wolf (3):
> block: Remove deprecated -drive geometry options
> block: Remove deprecated -drive option addr
> block: Remove deprecated -drive option serial
>
> include/hw/block/block.h | 1 -
> include/sysemu/blockdev.h | 3 --
> block/block-backend.c | 1 -
> blockdev.c | 110 ----------------------------------------------
> device-hotplug.c | 4 --
> hw/block/block.c | 27 ------------
> hw/block/nvme.c | 1 -
> hw/block/virtio-blk.c | 1 -
> hw/ide/qdev.c | 1 -
> hw/scsi/scsi-disk.c | 1 -
> hw/usb/dev-storage.c | 1 -
> tests/ahci-test.c | 6 +--
> tests/hd-geo-test.c | 18 --------
> tests/ide-test.c | 8 ++--
> hmp-commands.hx | 1 -
> qemu-doc.texi | 15 -------
> qemu-options.hx | 14 +-----
> 17 files changed, 8 insertions(+), 205 deletions(-)
>
I think libvirt needs to be adjusted to handle new style options for
patch #1 and patch #3, ccing
- Cole
6 years, 5 months
[libvirt] [PATCH 0/3] Couple of SEV fixes
by Michal Privoznik
*** BLURB HERE ***
Michal Privoznik (3):
qemuBuildSevCommandLine: s/obj/buf/
qemuBuildSevCommandLine: fix buffer leak
conf: Rework virDomainSEVDefParseXML()
src/conf/domain_conf.c | 30 +++++++++---------------------
src/qemu/qemu_command.c | 25 +++++++++++++++----------
2 files changed, 24 insertions(+), 31 deletions(-)
--
2.16.4
6 years, 5 months
[libvirt] Likely build race, "/usr/bin/ld: cannot find -lvirt"
by Ian Jackson
tl;dr:
I think there is a bug in libvirt's build system which, with
low probability, causes a build failure containing this message:
/usr/bin/ld: cannot find -lvirt
Complete build logs of two attempts:
http://logs.test-lab.xenproject.org/osstest/logs/123046/build-i386-libvir...
http://logs.test-lab.xenproject.org/osstest/logs/123096/build-i386-libvir...
Snippet from 123046 containing the error is enclosed below.
Longer explanation:
I have two new machines for the Xen Project CI, which I am trying to
commission. As part of commissioning I run a complete test run (a
"flight" in osstest terminology) on just those new hosts. The i386
libvirt build failed:
http://logs.test-lab.xenproject.org/osstest/logs/123046/build-i386-libvir...
Everything else that would be expected to work was fine. The test
programme was identical to flight 122815, except that that ran on
other hosts in the test farm (and, there, it passed). The error is
the kind of error one sees with missing dependencies in parallel
builds, etc.
I wanted to have some 32-bit libvirt tests actually run, so I reran a
new flight containing the relevant parts. That failed too in a very
similar way:
http://logs.test-lab.xenproject.org/osstest/logs/123096/build-i386-libvir...
The two machines are Dell R230s (and therefore hardly unusual). The
main novelty of these machines is that the firmware is UEFI booting in
UEFI mode. I doubt that has anything to do with it. The host,
including compiler, is Debian jessie i386.
As you can see from the log, we were trying to build libvirt
764a7483f189e6de841163647c14296e693dbb2e
What may be less obvious is that we were trying to build it against
xen.git#0306a1311d02ea52b4a9a9bc339f8bab9354c5e3.
http://logs.test-lab.xenproject.org/osstest/logs/123064/build-i386-libvir...
http://logs.test-lab.xenproject.org/osstest/logs/123046/build-i386/info.html
Does this seem like a likely explanation ? Have other people
experienced occasional problems with make -j ? If someone wants to
suggest a patch that might fix it I can test it.
In the meantime I have set off a number of new attempts, to try to
guess the failure probability, and also one attempt on other hosts to
check that nothing unexpected was broken.
Ian.
/usr/bin/ld: cannot find -lvirt
/usr/bin/ld: cannot find -lvirt
/bin/mkdir -p '/home/osstest/build.123046.build-i386-libvirt/dist/usr/local/lib/libvirt/storage-backend'
/bin/bash ../libtool --mode=install /usr/bin/install -c libvirt_storage_backend_fs.la libvirt_storage_backend_logical.la libvirt_storage_backend_scsi.la libvirt_storage_backend_mpath.la '/home/osstest/build.123046.build-i386-libvirt/dist/usr/local/lib/libvirt/storage-backend'
libtool: install: warning: relinking `libvirt_storage_backend_fs.la'
libtool: install: (cd /home/osstest/build.123046.build-i386-libvirt/libvirt/src; /bin/bash /home/osstest/build.123046.build-i386-libvirt/libvirt/libtool --silent --tag CC --mode=relink gcc -std=gnu99 -I./conf -I/usr/include/libxml2 -fno-common -W -Waddress -Waggressive-loop-optimizations -Wall -Wattributes -Wbad-function-cast -Wbuiltin-macro-redefined -Wcast-align -Wchar-subscripts -Wclobbered -Wcomment -Wcomments -Wcoverage-mismatch -Wcpp -Wdate-time -Wdeprecated-declarations -Wdiv-by-zero -Wdouble-promotion -Wempty-body -Wendif-labels -Wextra -Wformat-contains-nul -Wformat-extra-args -Wformat-security -Wformat-y2k -Wformat-zero-length -Wfree-nonheap-object -Wignored-qualifiers -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Winit-self -Winline -Wint-to-pointer-cast -Winvalid-memory-model -Winvalid-pch -Wjump-misses-init -Wlogical-op -Wmain -Wmaybe-uninitialized -Wmemset-transposed-args -Wmissing-braces -Wmissing-declarations -Wmissing-field-initializers -Wmissing-include-dirs -Wmissing-parameter-type -Wmissing-prototypes -Wmultichar -Wnarrowing -Wnested-externs -Wnonnull -Wold-style-declaration -Wold-style-definition -Wopenmp-simd -Woverflow -Woverride-init -Wpacked-bitfield-compat -Wparentheses -Wpointer-arith -Wpointer-sign -Wpointer-to-int-cast -Wpragmas -Wpsabi -Wreturn-local-addr -Wreturn-type -Wsequence-point -Wshadow -Wsizeof-pointer-memaccess -Wstrict-aliasing -Wstrict-prototypes -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wswitch -Wsync-nand -Wtrampolines -Wtrigraphs -Wtype-limits -Wuninitialized -Wunknown-pragmas -Wunused -Wunused-but-set-parameter -Wunused-but-set-variable -Wunused-function -Wunused-label -Wunused-local-typedefs -Wunused-parameter -Wunused-result -Wunused-value -Wunused-variable -Wvarargs -Wvariadic-macros -Wvector-operation-performance -Wvolatile-register-var -Wwrite-strings -Wnormalized=nfc -Wno-sign-compare -Wjump-misses-init -Wswitch-enum -Wno-format-nonliteral -fstack-protector-strong -fexceptions -fasyn
chronous-unwind-tables -fipa-pure-const -Wno-suggest-attribute=pure -Wno-suggest-attribute=const -Werror -Wframe-larger-than=4096 -g -I/home/osstest/build.123046.build-i386-libvirt/xendist/usr/local/include/ -DLIBXL_API_VERSION=0x040400 -module -avoid-version -Wl,-z -Wl,nodelete -export-dynamic -Wl,-z -Wl,relro -Wl,-z -Wl,now -Wl,--no-copy-dt-needed-entries -g -L/home/osstest/build.123046.build-i386-libvirt/xendist/usr/local/lib/ -Wl,-rpath-link=/home/osstest/build.123046.build-i386-libvirt/xendist/usr/local/lib/ -o libvirt_storage_backend_fs.la -rpath /usr/local/lib/libvirt/storage-backend storage/libvirt_storage_backend_fs_la-storage_backend_fs.lo libvirt.la ../gnulib/lib/libgnu.la -ldl -inst-prefix-dir /home/osstest/build.123046.build-i386-libvirt/dist)
collect2: error: ld returned 1 exit status
Makefile:6410: recipe for target 'install-lockdriverLTLIBRARIES' failed
libtool: install: error: relink `lockd.la' with the above command before installing it
make[3]: *** [install-lockdriverLTLIBRARIES] Error 1
make[3]: *** Waiting for unfinished jobs....
/usr/bin/ld: cannot find -lvirt
6 years, 5 months
[libvirt] [PATCH] libvirt: fix a typo
by Chen Hanxiao
From: Chen Hanxiao <chenhanxiao(a)gmail.com>
s/httsp/https
Signed-off-by: Chen Hanxiao <chenhanxiao(a)gmail.com>
---
src/libvirt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libvirt.c b/src/libvirt.c
index ffb002f4e1..52f4dd2808 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -1098,7 +1098,7 @@ virConnectOpenInternal(const char *name,
* if not already running. This can be prevented by setting the
* environment variable LIBVIRT_AUTOSTART=0
*
- * URIs are documented at httsp://libvirt.org/uri.html
+ * URIs are documented at https://libvirt.org/uri.html
*
* virConnectClose should be used to release the resources after the connection
* is no longer needed.
--
2.17.1
6 years, 5 months