aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* virsh: Fix resource leaks when editing files.Peter Krempa2012-09-191-2/+5
| | | | | | The cleanup path in virsh-edit helper was never reached when the edit was successful leaking the document in memory as well as the temporary file.
* util: don't print free'd dmidecode pathEric Blake2012-09-181-5/+1
| | | | | | | | | The path was freed before printing the error message, resulting in: error : virSysinfoRead:773 : internal error Failed to execute command (null) But virCommandRun already gives a better error message. * src/util/sysinfo.c (virSysinfoRead): Avoid overwriting error.
* build: avoid unused symbolEric Blake2012-09-181-1/+0
| | | | | | | | | Commit f36309d added an export with no matching implementation; probably a misspelling of an earlier version of the final addition of virNetworkObjSetDefTransient. * src/libvirt_private.syms (network_conf.h): Drop bogus virNetworkSetDefTransient.
* build: fix nodeinfo build on non-Linux platformsEric Blake2012-09-181-0/+4
| | | | | | | | Commit aaa8ab3 added new static functions that are only used on Linux; but commit 22acfdc didn't go far enough to fix compiler issues. * src/nodeinfo.c (nodeSetMemoryParameterValue) (nodeGetMemoryParameterValue): Conditionally compile based on use.
* bitmap: fix problems in previous commitEric Blake2012-09-182-7/+8
| | | | | | | | | | | | | | Commit ee3d3893 missed the fact that (unsigned char)<<(int) is truncated to int, and therefore failed for any bitmap data longer than four bytes. Also, I failed to run 'make syntax-check' on my commit 4bba6579; for whatever odd reason, ffs lives in a different header than ffsl. * src/util/bitmap.c (virBitmapNewData): Use correct shift type. (includes): Glibc (and therefore gnulib) decided ffs is in <strings.h>, but ffsl is in <string.h>. * tests/virbitmaptest.c (test5): Test it.
* build: avoid non-portable byte-swappingEric Blake2012-09-182-11/+28
| | | | | | | | | | | Commit 0fc89098 used functions only available on glibc, completely botched 32-bit environments, and risked SIGBUS due to unaligned memory access on platforms that aren't as forgiving as x86_64. * bootstrap.conf (gnulib_modules): Import ffsl. * src/util/bitmap.c (includes): Use <strings.h> for ffsl. (virBitmapNewData, virBitmapToData): Avoid 64-bit assumptions and non-portable functions.
* Fix minor details not only in apic eoiMartin Kletzander2012-09-182-6/+5
| | | | | | The introduction of APIC EOI patches had a few little details that could look better, so this patch fixes that and one more place in the file as well (same problem).
* secret: Fix error for private secretsMartin Kletzander2012-09-181-2/+2
| | | | | | | | | | | | | | When trying to get the value of a private secret, the code used 'operation denied' error. That error is specified as a error for read-only connections trying to perform denied operation. The following error seems more accurate. To compare the difference: - BEFORE error: operation secret is private forbidden for read only access - AFTER error: Invalid secret: secret is private
* virNetDevBandwidthClear: Improve error handlingMartin Kletzander2012-09-183-8/+10
| | | | | | | | | | | | | Two changes are introduced in this patch: - The first change removes ATTRIBUTE_RETURN_CHECK from virNetDevBandwidthClear, because it was called with ignore_value always, anyway. The function is used even when it's not necessary to call it, just for cleanup purposes. - The second change is added ignoring of the command's exit status, since it may report an error even when run just as "to be sure we clean up" function. No libvirt errors are suppresed by this.
* syntax-check: fix run.inMartin Kletzander2012-09-182-2/+2
| | | | Two more problems in "run.in" made the syntax-check fail.
* Adhere to copyright_address checkGuido Günther2012-09-181-2/+1
| | | | | | to fix "make syntax-check" Found by http://honk.sigxcpu.org:8001/job/libvirt-syntax-check/
* Add a ./run script for running programs from the local directory.Richard W.M. Jones2012-09-185-9/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | With this script you can run libvirt programs without needing to install them first. You just have to do for example: ./run ./tools/virsh [args ...] If you are already in the tools/ subdirectory, then the following command will also work: ../run ./virsh [...] You can also run the C programs under valgrind like this: ./run valgrind [valgrind opts...] ./program or under gdb: ./run gdb --args ./program This also works with sudo (eg. if you need root access for libvirt): sudo ./run ./tools/virsh list --all Derived from libguestfs and simplified. The ./run script in libguestfs is much more sophisticated: https://github.com/libguestfs/libguestfs/blob/master/run.in
* rpc: Fix name of member in remote_protocol-structsPeter Krempa2012-09-181-1/+1
| | | | | | Commit 7a99b0abafb69e1686198ac3473892a9aaeb8255 adds a new RPC struct but one of the members has different names in remote_protocol.x and remote_protocol-struct breaking make check.
* virBitmap: fix build without HAVE_NUMACTLJán Tomko2012-09-181-1/+1
| | | | | | Commit 75b198b3e7b2c8b4106afbd42f8bb795c4773511 forgot to change arguments of dummy qemuProcessInitNumaMemoryPolicy from char* to virBitmapPtr.
* qemuhelptest: convert runaway tab to spacesJán Tomko2012-09-181-1/+1
| | | | Make syntax-check happy and smiling again.
* daemon: Fix error message when libvirtd is missing.Richard W.M. Jones2012-09-181-2/+5
| | | | | | | | | | Currently we search along the hard-coded names: SBINDIR "/libvirtd" SBINDIR "/libvirtd_dbg" but if the environment variable $LIBVIRTD_PATH is set to the name of the libvirtd binary, that is used instead. Fix the error message so it accurately reflects current behaviour ($PATH is NOT searched).
* gitignore: Ignore .gdb_history file.Richard W.M. Jones2012-09-181-0/+1
|
* Fix the augea test for qemu libvirtd optionsDaniel Veillard2012-09-181-0/+1
| | | | | Commit 1ccf22277be013beb3f26f0083867c9c9eddca18 forgot to add the output to the augeas test
* network: implement backend of virNetworkUpdate(IP_DHCP_HOST)Laine Stump2012-09-181-7/+173
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fills in the first implementation for one of the virNetworkUpdate sections. With this code, you can now add/delete/edit <host> entries in a network's <ip> address <dhcp> element (by specifying a section of VIR_NETWORK_SECTION_IP_DHCP_HOST). If you pass in a parentIndex of -1, the code will automatically find the one ip element that has a <dhcp> section and make the updates there. Otherwise, you can specify an index >= 0, and libvirt will look for that particular instance of <ip> in the network, and modify its <dhcp> element. (This currently isn't very useful, because libvirt only supports having dhcp information on a single IP address, but that could change in the future). When adding a new host entry (VIR_NETWORK_UPDATE_COMMAND_ADD_(FIRST|LAST)), the existing entries will be compared to the new entry, and if any non-empty attribute matches, the add will fail. When updating an existing entry (VIR_NETWORK_UPDATE_COMMAND_MODIFY), the mac address or name will be used to find the existing entry, and other fields will only be updated (note there is some potential for ambiguity here if you specify the mac address from one entry and the name from another). When deleting an existing entry (VIR_NETWORK_UPDATE_COMMAND_DELETE), all non-empty attributes in the supplied xml arg will be compared - all of them must match before libvirt will delete the host. The xml should be a fully formed <host> element as it would appear in a network definition, e.g. "<host mac=00:11:22:33:44:55 ip=10.1.23.22 name='testbox'/>" (when adding/updating, ip and one of mac|name is required; when deleting, you can specify any one, two, or all attributes, but they all must match the target element). As with the update of any other section, you can choose to affect the live config (with flag VIR_NETWORK_UPDATE_AFFECT_LIVE), the persistent config (VIR_NETWORK_UPDATE_AFFECT_CONFIG), or both. If you've chosen to affect the live config, those changes will take effect immediately, with no need to destroy/restart the network. An example of adding a host entry: virNetworkUpdate(net, VIR_NETWORK_UPDATE_COMMAND_ADD_LAST, VIR_NETWORK_SECTION_IP_DHCP_HOST, -1, "<host mac='00:11:22:33:44:55' ip='192.168.122.5'/>", VIR_NETWORK_UPDATE_AFFECT_LIVE | VIR_NETWORK_UPDATE_AFFECT_CONFIG); To delete that same entry: virNetworkUpdate(net, VIR_NETWORK_UPDATE_COMMAND_DELETE, VIR_NETWORK_SECTION_IP_DHCP_HOST, -1, "<host mac='00:11:22:33:44:55'/>", VIR_NETWORK_UPDATE_AFFECT_LIVE | VIR_NETWORK_UPDATE_AFFECT_CONFIG); (you could also delete it by replacing "mac='00:11:22:33:44:55'" with "ip='192.168.122.5'".)
* network: restart radvd/dnsmasq if needed when libvirtd is restartedLaine Stump2012-09-181-0/+34
| | | | | | | | | | | | | | | | | | | | A user on IRC had accidentally killed all of his libvirt-started dnsmasq instances (due to a buggy dnsmasq service script in Fedora 16), and had hoped that libvirtd would notice this on restart and reload all the dnsmasq daemons (as it does with iptables rules). Unfortunately this was not the case - as long as the network object had a pid registered for dnsmasq and/or radvd, it assumed that the processes were running. This patch takes advantage of the new utility functions in bridge_driver.c to do a "refresh" of all radvd and dnsmasq processes started by libvirt each time libvirtd is restarted - this function attempts to do a SIGHUP of each existing process, and if that fails, it restarts the process, rebuilding all the associated config files and commandline parameters in the process. This normally has no effect, but will be useful in solving the occasional "odd situation" without needing to take the drastic step of destroying/re-starting the network.
* network: implement virNetworkUpdate for test_driverLaine Stump2012-09-181-1/+52
| | | | | | | The test driver does nothing outside of keeping track of each network's config/state in the in-memory database maintained by network_conf functions, so all we have to do is call the function that updates the network's entry in the in-memory database.
* network: implement virNetworkUpdate for bridge_driverLaine Stump2012-09-181-8/+112
| | | | | | | | | | Call the network_conf function that modifies the live/persistent/both config, then refresh/restart dnsmasq/radvd if necessary, and finally save the config in the proper place(s). This patch also needed to uncomment a few utility functions that were added inside #if 0 in the previous commit (to avoid compiler errors due to unreferenced static functions).
* network: reorganize dnsmasq and radvd config file / startupLaine Stump2012-09-181-44/+282
| | | | | | | | | | | | | | | | | | | | This patch splits the starting of dnsmasq and radvd into multiple files, and adds new networkRefreshXX() and networkRestartXX() functions for each. These new functions are currently commented out because they won't be used until the next commit, and the compile options require all static functions to be used. networkRefreshXX() - rewrites any file-based config for dnsmasq/radvd, and sends SIGHUP to the process to make it reread its config. If the program isn't already running, it's just started. networkRestartXX() - kills the given program, waits for it to exit (see the comments in the function networkKillDaemon()), then calls networkStartXX(). This commit is here mostly as a checkpoint to verify no change in functional behavior after refactoring networkStartXX() functions to fit in with these new functions.
* conf: implement NetworkObj backend of virNetworkUpdate APILaine Stump2012-09-183-0/+317
| | | | | | | | | | | | | | virNetworkObjUpdate takes care of all virNetworkUpdate-related changes to the data stored in the in-memory virNetworkObj list. It should be called by network drivers that use this in-memory list. virNetworkObjUpdate *does not* take care of updating any disk-based copies of the config, nor does it perform any other operations necessary to have the new config data take effect (e.g. it won't re-write dnsmasq host files, nor will it send a SIGHUP to dnsmasq) - those things should all be taken care of in the network driver function that calls virNetworkObjUpdate (assuming that it returns success).
* network: utility functions for updating network configLaine Stump2012-09-185-21/+262
| | | | | | | | | | | | | | | | | These new functions are highly inspired by those in domain_conf.c (but not identical), and are intended to make it simpler to update the various combinations of live/persistent network configs. The network driver wasn't previously as careful about the separation between the live "status" in network->def and the persistent "config" in network->newDef (or sometimes in network->def). This series attempts to remedy some of that, but probably doesn't go all the way (enough to get these functions working and enable continued work on virNetworkUpdate though). bridge_driver.c and test_driver.c were updated in a few places to take advantage of the new functions and/or account for changes in argument lists.
* network: implement RPC calls for virNetworkUpdateLaine Stump2012-09-183-1/+21
| | | | | | | | | | | | | | This is very short, because almost everything is autogenerated. All that's needed are: * src/remote/remote_driver.c: add pointer to autogenerated remoteNetworkUpdate to the function table for the remote network driver. * src/remote/remote_protocol.x: add the "args" struct and add one more item to the remote_procedure enum for this function. * src/remote_protocol-struct: update to match remote_protocol.x
* network: define new API virNetworkUpdateLaine Stump2012-09-184-0/+137
| | | | | | This patch adds a new public API virNetworkUpdate that will permit updating an existing network configuration without requiring that the network be destroyed/restarted for the changes to take effect.
* tests: add qemu-1.2.0 help dataJán Tomko2012-09-183-0/+534
| | | | | | | | | | | | Generated with: qemu-system-x86_64 -help >tests/qemuhelpdata/qemu-1.2.0 qemu-system-x86_64 \ -device ? \ -device pci-assign,? \ -device virtio-blk-pci,? \ -device virtio-net-pci,? \ -device scsi-disk,? 2>tests/qemuhelpdata/qemu-1.2.0-device
* qemu: add -sandbox to command line if requestedJán Tomko2012-09-181-0/+11
|
* qemu: conf: add seccomp_sandbox optionJán Tomko2012-09-184-0/+15
|
* qemu: add capability flag for seccomp sandboxJán Tomko2012-09-182-0/+4
| | | | | | This series adds support to run QEMU with seccomp sandbox enabled. It can be configured in qemu.conf to on, off, or the QEMU default, which is off in 1.2. Default value is the QEMU default.
* qemu: Avoid deadlock on HandleAgentEOFMichal Privoznik2012-09-181-3/+3
| | | | | | | | On agent EOF the qemuProcessHandleAgentEOF() callback is called which locks virDomainObjPtr. Then qemuAgentClose() is called (with domain object locked) which eventually calls qemuAgentDispose() and qemuProcessHandleAgentDestroy(). This tries to lock the domain object again. Hence the deadlock.
* qemu: Use disk wwn in qemu command lineOsier Yang2012-09-186-0/+119
| | | | | | | | | | | | | | All of ide-drive, ide-hd, ide-cd, scsi-disk, scsi-hd, and scsi-cd supports wwn property. (NB, scsi-block doesn't support to set wwn). * src/qemu/qemu_command.c: Error out if underlying QEMU doesn't support wwn property for the device; Set wwn for the device otherwise. * tests/qemuxml2argvdata/qemuxml2argv-disk-ide-wwn.args: New test * tests/qemuxml2argvdata/qemuxml2argv-disk-ide-wwn.xml: Likewise * tests/qemuxml2argvdata/qemuxml2argv-disk-scsi-disk-wwn.args: Likewise * tests/qemuxml2argvdata/qemuxml2argv-disk-scsi-disk-wwn.xml: Likewise * tests/qemuxml2argvtest.c: Add the new tests.
* qemu: Add caps to indentify if setting wwn is supported by qemuOsier Yang2012-09-182-0/+10
| | | | | | | This assumes ide-drive.wwn, ide-hd.wwn, ide-cd.wwn were supported at the same time, similar for scsi-disk.wwn, scsi-hd.wwn, and scsi-cd.wwn. So only two new caps (QEMU_CAPS_IDE_DRIVE_WWN, and QEMU_CAPS_SCSI_DISK_WWN) are introduced.
* conf: Parse and format disk <wwn>Osier Yang2012-09-185-0/+33
| | | | | | | | | | Validates the wwn while parsing, error out if it's malformed. * src/util/util.h: Declare virValidateWWN * src/util/util.c: Implement virValidateWWN * src/libvirt_private.syms: Export virValidateWWN. * src/conf/domain_conf.h: New member 'wwn' for disk def. * src/conf/domain_conf.c: Parse and format disk <wwn>
* schema: Add schema for disk <wwn>Osier Yang2012-09-184-6/+17
| | | | | | | * docs/formatdomain.html.in: Add document. * docs/schemas/nodedev.rng: Move definition of "wwn" to ... * docs/schemas/basictypes.rng: ...Here * docs/schemas/domaincommon.rng: Add schema for disk <wwn>
* blockjob: add blockcommit support to rpcEric Blake2012-09-174-1/+22
| | | | | | | | | | | Relatively straightforward. Our decision to make block job speed a long keeps haunting us on new API. * src/remote/remote_protocol.x (remote_domain_block_commit_args): New struct. * src/remote/remote_driver.c (remote_driver): Enable it. * src/remote_protocol-structs: Regenerate. * src/rpc/gendispatch.pl (long_legacy): Exempt another bandwidth.
* blockjob: add virsh blockcommitEric Blake2012-09-172-5/+189
| | | | | | | | | | | | | | | | | | The new command 'virsh blockcommit $dom $disk' requests the start of an asynchronous commit operation across the entire chain of $disk. Further arguments can fine-tune which portion of the chain is committed. Existing 'virsh blockjob' commands can then track the status, change the bandwidth, or abort the commit job. With a bit more on the command line, 'virsh blockcommit $dom $disk --wait --verbose' can be used for blocking behavior, with visual feedback on the overall status, and can be canceled with Ctrl-C. The overall design, including the wait loop logic, borrows heavily from the existing blockpull command. * tools/virsh-domain.c (cmdBlockCommit): New function. * tools/virsh.pod (blockcommit): Document it.
* blockjob: add virDomainBlockCommitEric Blake2012-09-175-2/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A block commit moves data in the opposite direction of block pull. Block pull reduces the chain length by dropping backing files after data has been pulled into the top overlay, and is always safe; block commit reduces the chain length by dropping overlays after data has been committed into the backing file, and any files that depended on base but not on top are invalidated at any point where they have unallocated data that is now pointing to changed contents in base. Both directions are useful, however: a qcow2 layer that is more than 50% allocated will typically be faster with a pull operation, while a qcow2 layer with less than 50% allocation will be faster as a commit operation. Committing across multiple layers can be more efficient than repeatedly committing one layer at a time, but requires extra support from the hypervisor. This API matches Jeff Cody's proposed qemu command 'block-commit': https://lists.gnu.org/archive/html/qemu-devel/2012-09/msg02226.html Jeff's command is still in the works for qemu 1.3, and may gain further enhancements, such as the ability to control on-error handling (it will be comparable to the error handling Paolo is adding to 'drive-mirror', so a similar solution will be needed when I finally propose virDomainBlockCopy with more functionality than the basics supported by virDomainBlockRebase). However, even without qemu support, this API will be useful for _offline_ block commits, by wrapping qemu-img calls and turning them into a block job, so this API is worth committing now. For some examples of how this will be implemented, all starting with the chain: base <- snap1 <- snap2 <- active + These are equivalent: virDomainBlockCommit(dom, disk, NULL, NULL, 0, 0) virDomainBlockCommit(dom, disk, NULL, "active", 0, 0) virDomainBlockCommit(dom, disk, "base", NULL, 0, 0) virDomainBlockCommit(dom, disk, "base", "active", 0, 0) but cannot be implemented for online qemu with round 1 of Jeff's patches; and for offline images, it would require three back-to-back qemu-img invocations unless qemu-img is patched to allow more efficient multi-layer commits; the end result would be 'base' as the active disk with contents from all three other files, where 'snap1' and 'snap2' are invalid right away, and 'active' is invalid once any further changes to 'base' are made. + These are equivalent: virDomainBlockCommit(dom, disk, "snap2", NULL, 0, 0) virDomainBlockCommit(dom, disk, NULL, NULL, 0, _SHALLOW) they cannot be implemented for online qemu, but for offline, it is a matter of 'qemu-img commit active', so that 'snap2' is now the active disk with contents formerly in 'active'. + Similarly: virDomainBlockCommit(dom, disk, "snap2", NULL, 0, _DELETE) for an offline domain will merge 'active' into 'snap2', then delete 'active' to avoid leaving a potentially invalid file around. + This version: virDomainBlockCommit(dom, disk, NULL, "snap2", 0, _SHALLOW) can be implemented online with 'block-commit' passing a base of snap1 and a top of snap2; and can be implemented offline by 'qemu-img commit snap2' followed by 'qemu-img rebase -u -b snap1 active' * include/libvirt/libvirt.h.in (virDomainBlockCommit): New API. * src/libvirt.c (virDomainBlockCommit): Implement it. * src/libvirt_public.syms (LIBVIRT_0.10.2): Export it. * src/driver.h (virDrvDomainBlockCommit): New driver callback. * docs/apibuild.py (CParser.parseSignature): Add exception.
* qemu: drop unused arguments for dump-guest-memoryEric Blake2012-09-175-40/+14
| | | | | | | | | | | | | | | | | Upstream qemu has raised a concern about whether dumping guest memory by reading guest paging tables is a security hole: https://lists.gnu.org/archive/html/qemu-devel/2012-09/msg02607.html While auditing libvirt to see if we would be impacted, I noticed that we had some dead code. It is simpler to nuke the dead code and limit our monitor code to just the subset we make use of. * src/qemu/qemu_monitor.h (QEMU_MONITOR_DUMP): Drop poorly named and mostly-unused enum. * src/qemu/qemu_monitor.c (qemuMonitorDumpToFd): Drop arguments. * src/qemu/qemu_monitor_json.h (qemuMonitorJSONDump): Likewise. * src/qemu/qemu_monitor_json.c (qemuMonitorJSONDump): Likewise. * src/qemu/qemu_driver.c (qemuDumpToFd): Update caller.
* build: Fix build failure on non-linux platformOsier Yang2012-09-181-4/+4
|
* conf: avoid freeing network object with undestroyed mutexLaine Stump2012-09-171-6/+5
| | | | | | | | | | | virNetworkAssignDef was allocating a new network object, initing and grabbing its lock, then potentially freeing it without unlocking or destroying the lock. In practice 1) this will probably never happen, and 2) even if it did, the lock implementation used on most (all?) platforms doesn't actually hold any resources for an initialized or held lock, but it still bothered me, so I moved the realloc that could lead to this bad situation earlier in the function, and now the mutex isn't inited or locked until we are assured of complete success.
* conf: separate functions to parse DHCPHostDef and DHCPRangeDefLaine Stump2012-09-171-101/+154
| | | | | | | These two objects were previously always parsed as a part of an IpDef, but we will now need to be able to parse them on their own for virNetworkUpdate(). Split the parsing functions out, with no functional changes.
* remove virDomainCpuSetFormat and virDomainCpuSetParseHu Tao2012-09-173-205/+0
| | | | | | virBitmap is recommanded to store cpuset info, and virBitmapFormat/virBitmapParse can do the format/parse jobs.
* xen: eliminate remaining uses of virDomainCpuSetParseLaine Stump2012-09-172-17/+21
| | | | | | | | | | The final patch in Hu Tao's series to enhance virBitmap actually removes virDomainCpuSetParse and virDomainCpuSetFormat as "no longer used", and the rest of the series hadn't taken care of two uses of virDomainCpuSetParse in the xen code. This patch replaces those with appropriate virBitmap functions. It should be pushed prior to the patch removing virDomainCpuSetParse.
* use virBitmap to store nodeinfo.Hu Tao2012-09-173-25/+26
|
* use virBitmap to store cells' cpumask info.Hu Tao2012-09-173-48/+15
|
* use virBitmap to store cpumask info.Hu Tao2012-09-1711-82/+54
|
* use virBitmap to store numa nodemask info.Hu Tao2012-09-178-107/+65
|
* use virBitmap to store cpu affinity infoHu Tao2012-09-175-131/+84
|