1. 20 10月, 2012 1 次提交
    • E
      storage: make it easier to find file within chain · 5eaf6054
      Eric Blake 提交于
      In order to temporarily label files read/write during a commit
      operation, we need to crawl the backing chain and find the absolute
      file name that needs labeling in the first place, as well as the
      name of the file that owns the backing file.
      
      * src/util/storage_file.c (virStorageFileChainLookup): New
      function.
      * src/util/storage_file.h: Declare it.
      * src/libvirt_private.syms (storage_file.h): Export it.
      5eaf6054
  2. 18 10月, 2012 2 次提交
    • P
      conf: Add support for HyperV Enlightenment features · cc922fdd
      Peter Krempa 提交于
      Hypervisors are starting to support HyperV Enlightenment features that
      improve behavior of guests running Microsoft Windows operating systems.
      
      This patch adds support for the "relaxed" feature that improves timer
      behavior and also establishes a framework to add these features in
      future.
      cc922fdd
    • P
      conf: Make tri-state feature options more universal · 88cac66d
      Peter Krempa 提交于
      The apic-eoi feature enum and implementation can be made more universal
      to allow re-use of the enum for other features.
      88cac66d
  3. 16 10月, 2012 6 次提交
    • D
      Add JSON serialization of virNetServerPtr objects for process re-exec() · 381a339e
      Daniel P. Berrange 提交于
      Add two new APIs virNetServerNewPostExecRestart and
      virNetServerPreExecRestart which allow a virNetServerPtr
      object to be created from a JSON object and saved to a
      JSON object, for the purpose of re-exec'ing a process.
      
      This includes serialization of all registered services
      and clients
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      381a339e
    • D
      Add JSON serialization of virNetServerClientPtr objects for process re-exec() · 3cfc3d7d
      Daniel P. Berrange 提交于
      Add two new APIs virNetServerClientNewPostExecRestart and
      virNetServerClientPreExecRestart which allow a virNetServerClientPtr
      object to be created from a JSON object and saved to a
      JSON object, for the purpose of re-exec'ing a process.
      
      This includes serialization of the connected socket associated
      with the client
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      3cfc3d7d
    • D
      Add JSON serialization of virNetServerServicePtr objects for process re-exec() · 0cc79255
      Daniel P. Berrange 提交于
      Add two new APIs virNetServerServiceNewPostExecRestart and
      virNetServerServicePreExecRestart which allow a virNetServerServicePtr
      object to be created from a JSON object and saved to a
      JSON object, for the purpose of re-exec'ing a process.
      
      This includes serialization of the listening sockets associated
      with the service
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      0cc79255
    • D
      Add JSON serialization of virNetSocketPtr objects for process re-exec() · c2981453
      Daniel P. Berrange 提交于
      Add two new APIs virNetSocketNewPostExecRestart and
      virNetSocketPreExecRestart which allow a virNetSocketPtr
      object to be created from a JSON object and saved to a
      JSON object, for the purpose of re-exec'ing a process.
      
      As well as saving the state in JSON format, the second
      method will disable the O_CLOEXEC flag so that the open
      file descriptors are preserved across the process re-exec()
      
      Since it is not possible to serialize SASL or TLS encryption
      state, an error will be raised if attempting to perform
      serialization on non-raw sockets
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      c2981453
    • D
      Add JSON serialization of virLockSpacePtr objects for process re-exec() · 8057c04e
      Daniel P. Berrange 提交于
      Add two new APIs virLockSpaceNewPostExecRestart and
      virLockSpacePreExecRestart which allow a virLockSpacePtr
      object to be created from a JSON object and saved to a
      JSON object, for the purposes of re-exec'ing a process.
      
      As well as saving the state in JSON format, the second
      method will disable the O_CLOEXEC flag so that the open
      file descriptors are preserved across the process re-exec()
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      8057c04e
    • D
      Introduce an internal API for handling file based lockspaces · eca72d47
      Daniel P. Berrange 提交于
      The previously introduced virFile{Lock,Unlock} APIs provide a
      way to acquire/release fcntl() locks on individual files. For
      unknown reason though, the POSIX spec says that fcntl() locks
      are released when *any* file handle referring to the same path
      is closed. In the following sequence
      
        threadA: fd1 = open("foo")
        threadB: fd2 = open("foo")
        threadA: virFileLock(fd1)
        threadB: virFileLock(fd2)
        threadB: close(fd2)
      
      you'd expect threadA to come out holding a lock on 'foo', and
      indeed it does hold a lock for a very short time. Unfortunately
      when threadB does close(fd2) this releases the lock associated
      with fd1. For the current libvirt use case for virFileLock -
      pidfiles - this doesn't matter since the lock is acquired
      at startup while single threaded an never released until
      exit.
      
      To provide a more generally useful API though, it is necessary
      to introduce a slightly higher level abstraction, which is to
      be referred to as a "lockspace".  This is to be provided by
      a virLockSpacePtr object in src/util/virlockspace.{c,h}. The
      core idea is that the lockspace keeps track of what files are
      already open+locked. This means that when a 2nd thread comes
      along and tries to acquire a lock, it doesn't end up opening
      and closing a new FD. The lockspace just checks the current
      list of held locks and immediately returns VIR_ERR_RESOURCE_BUSY.
      
      NB, the API as it stands is designed on the basis that the
      files being locked are not being otherwise opened and used
      by the application code. One approach to using this API is to
      acquire locks based on a hash of the filepath.
      
      eg to lock /var/lib/libvirt/images/foo.img the application
      might do
      
         virLockSpacePtr lockspace = virLockSpaceNew("/var/lib/libvirt/imagelocks");
         lockname = md5sum("/var/lib/libvirt/images/foo.img");
         virLockSpaceAcquireLock(lockspace, lockname);
      
      NB, in this example, the caller should ensure that the path
      is canonicalized before calculating the checksum.
      
      It is also possible to do locks directly on resources by
      using a NULL lockspace directory and then using the file
      path as the lock name eg
      
         virLockSpacePtr lockspace = virLockSpaceNew(NULL);
         virLockSpaceAcquireLock(lockspace, "/var/lib/libvirt/images/foo.img");
      
      This is only safe to do though if no other part of the process
      will be opening the files. This will be the case when this
      code is used inside the soon-to-be-reposted virlockd daemon
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      eca72d47
  4. 15 10月, 2012 4 次提交
    • G
      selinux: add security selinux function to label tapfd · ae368ebf
      Guannan Ren 提交于
      BZ:https://bugzilla.redhat.com/show_bug.cgi?id=851981
      When using macvtap, a character device gets first created by
      kernel with name /dev/tapN, its selinux context is:
      system_u:object_r:device_t:s0
      
      Shortly, when udev gets notification when new file is created
      in /dev, it will then jump in and relabel this file back to the
      expected default context:
      system_u:object_r:tun_tap_device_t:s0
      
      There is a time gap happened.
      Sometimes, it will have migration failed, AVC error message:
      type=AVC msg=audit(1349858424.233:42507): avc:  denied  { read write } for
      pid=19926 comm="qemu-kvm" path="/dev/tap33" dev=devtmpfs ino=131524
      scontext=unconfined_u:system_r:svirt_t:s0:c598,c908
      tcontext=system_u:object_r:device_t:s0 tclass=chr_file
      
      This patch will label the tapfd device before qemu process starts:
      system_u:object_r:tun_tap_device_t:MCS(MCS from seclabel->label)
      ae368ebf
    • M
      Add support for SUSPEND_DISK event · 7ba5defb
      Martin Kletzander 提交于
      This patch adds support for SUSPEND_DISK event; both lifecycle and
      separated.  The support is added for QEMU, machines are changed to
      PMSUSPENDED, but as QEMU sends SHUTDOWN afterwards, the state changes
      to shut-off.  This and much more needs to be done in order for libvirt
      to work with transient devices, wake-ups etc.  This patch is not
      aiming for that functionality.
      7ba5defb
    • L
      conf: virDomainDeviceInfoCopy utility function · 11c47d97
      Laine Stump 提交于
      This does a shallow copy of all the bits, then strdups the two items
      that are actually allocated separately.
      11c47d97
    • O
      qemu: Initialize cpuset for hotplugged vcpu as def->cpuset · 0df1a790
      Osier Yang 提交于
      The onlined vcpu pinning policy should inherit def->cpuset if
      it's not specified explicitly, and the affinity should be set
      in this case. Oppositely, the offlined vcpu pinning policy should
      be free()'ed.
      0df1a790
  5. 11 10月, 2012 1 次提交
  6. 05 10月, 2012 1 次提交
  7. 28 9月, 2012 1 次提交
    • D
      Add systemd journal support · f6430390
      Daniel P. Berrange 提交于
      Add support for logging to the systemd journal, using its
      simple client library. The benefit over syslog is that it
      accepts structured log data, so the journald can store
      individual items like code file/line/func separately from
      the string message. Tools which require structured log
      data can then query the journal to extract exactly what
      they desire without resorting to string parsing
      
      While systemd provides a simple client library for logging,
      it is more convenient for libvirt to directly write its
      own client code. This lets us build up the iovec's on
      the stack, avoiding the need to alloc memory when writing
      log messages.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      f6430390
  8. 27 9月, 2012 1 次提交
  9. 26 9月, 2012 4 次提交
  10. 20 9月, 2012 2 次提交
    • M
      Add support for limiting guest coredump · 78f3666f
      Martin Kletzander 提交于
      Sometimes when guest machine crashes, coredump can get huge due to the
      guest memory. This can be limited using madvise(2) system call and is
      being used in QEMU hypervisor. This patch adds an option for configuring
      that in the domain XML and related documentation.
      78f3666f
    • M
      qemu: Cleanup boot parameter building · 8c952908
      Martin Kletzander 提交于
      This patch cleans up building the "-boot" parameter and while on that
      fixes one inconsistency by modifying these things:
      
       - I completed the unfinished virDomainBootMenu enum by specifying
         LAST, declaring it and also declaring the TypeFromString and
         TypeToString parameters.
       - Previously mentioned TypeFromString and TypeToString are used when
         parsing the XML.
       - Last, but not least, visible change is that the "-boot" parameter
         is built and parsed properly:
          - The "order=" prefix is used only when additional parameters are
            used (menu, etc.).
          - It's rewritten in a way that other parameters can be added
            easily in the future (used in following patch).
          - The "order=" parameter is properly parsed regardless to where it
            is placed in the string (e.g. "menu=on,order=nc").
          - The "menu=" parameter (and others in the future) are created
            when they should be (i.e. even when bootindex is supported and
            used, but not when bootloader is selected).
      8c952908
  11. 19 9月, 2012 1 次提交
    • E
      build: avoid unused symbol · 26cae4b4
      Eric Blake 提交于
      Commit f36309d6 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.
      26cae4b4
  12. 18 9月, 2012 7 次提交
    • L
      conf: implement NetworkObj backend of virNetworkUpdate API · d22f4bad
      Laine Stump 提交于
      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).
      d22f4bad
    • L
      network: utility functions for updating network config · f36309d6
      Laine Stump 提交于
      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.
      f36309d6
    • O
      conf: Parse and format disk <wwn> · facc1c00
      Osier Yang 提交于
      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>
      facc1c00
    • H
      remove virDomainCpuSetFormat and virDomainCpuSetParse · afe86981
      Hu Tao 提交于
      virBitmap is recommanded to store cpuset info, and
      virBitmapFormat/virBitmapParse can do the format/parse
      jobs.
      afe86981
    • H
      use virBitmap to store cpupin info · f970d848
      Hu Tao 提交于
      f970d848
    • H
      New functions for virBitmap · 0fc89098
      Hu Tao 提交于
      In many places we store bitmap info in a chunk of data
      (pointed to by a char *), and have redundant codes to
      set/unset bits. This patch extends virBitmap, and convert
      those codes to use virBitmap in subsequent patches.
      0fc89098
    • H
      bitmap: new member variable and function renaming · 0831a5ba
      Hu Tao 提交于
      Add a new member variable map_len to store map len of bitmap.
      and rename size to max_bit accordingly.
      
      rename virBitmapAlloc to virBitmapNew.
      0831a5ba
  13. 17 9月, 2012 3 次提交
    • O
      node_memory: Implement the internal APIs · aaa8ab3e
      Osier Yang 提交于
      Only implemented for linux platform.
      
      * src/nodeinfo.h: (Declare node{Get,Set}MemoryParameters)
      * src/nodeinfo.c: (Implement node{Get,Set}MemoryParameters)
      * src/libvirt_private.syms: (Export those two new internal APIs to
        private symbols)
      aaa8ab3e
    • O
      list: Use virConnectListAllNodeDevices in virsh · aa20e975
      Osier Yang 提交于
      tools/virsh-nodedev.c:
        * vshNodeDeviceSorter to sort node devices by name
      
        * vshNodeDeviceListFree to free the node device objects list.
      
        * vshNodeDeviceListCollect to collect the node device objects, trying
          to use new API first, fall back to older APIs if it's not supported.
      
        * Change option --cap to accept multiple capability types.
      
      tools/virsh.pod
        * Update document for --cap
      aa20e975
    • O
      list: Add helpers for listing node devices · 324bf8bf
      Osier Yang 提交于
      src/conf/node_device_conf.h:
        * New macro VIR_CONNECT_LIST_NODE_DEVICES_FILTERS_CAP
        * Declare virNodeDeviceList
      
      src/conf/node_device_conf.c:
        * New helpers virNodeDeviceCapMatch, virNodeDeviceMatch.
          virNodeDeviceCapMatch looks up the list of all the caps the device
          support, to see if the device support the cap type.
        * Implement virNodeDeviceList
      
      src/libvirt_private.syms:
        * Export virNodeDeviceList
        * Export virNodeDevCapTypeFromString
      324bf8bf
  14. 14 9月, 2012 1 次提交
    • M
      Add support for EOI with APIC · 4a8b7cba
      Martin Kletzander 提交于
      New options is added to support EOI (End of Interrupt) exposure for
      guests. As it makes sense only when APIC is enabled, I added this into
      the <apic> element in <features> because this should be tri-state
      option (cannot be handled as standalone feature).
      4a8b7cba
  15. 13 9月, 2012 1 次提交
  16. 11 9月, 2012 1 次提交
    • O
      list: Add helpers to list network objects · d3c6cabb
      Osier Yang 提交于
      src/conf/network_conf.c: Add virNetworkMatch to filter the networks;
      and virNetworkList to iterate over all the networks with the filter.
      
      src/conf/network_conf.h: Declare virNetworkList and define the macros
      for filters.
      
      src/libvirt_private.syms: Export virNetworkList.
      d3c6cabb
  17. 07 9月, 2012 1 次提交
  18. 06 9月, 2012 2 次提交
    • D
      Remove duplicate symbols and add test case · f299ddd6
      Daniel P. Berrange 提交于
      When the event symbols were added to the public API, not all
      of them were removed from the private exports list. Solaris
      gets unhappy when there are duplicated symbols. Extend the
      symfile check to test for this scenario
      f299ddd6
    • O
      list: Add helpers for listing storage pool objects · 84208a4a
      Osier Yang 提交于
      src/conf/storage_conf.c: Add virStoragePoolMatch to filter the
      pools; Add virStoragePoolList to iterate over the pool objects
      with filter.
      
      src/conf/storage_conf.h: Declare virStoragePoolMatch,
      virStoragePoolList, and the macros for filters.
      
      src/libvirt_private.syms: Export helper virStoragePoolList.
      84208a4a