1. 24 7月, 2014 4 次提交
    • E
      maint: simplify some syntax check exemptions · e1f7914d
      Eric Blake 提交于
      Commit 50281605 accidentally weakened the strtol prohibitions to
      skip ALL files under src/util instead of the former situation of
      just protecting util/virsexpr.c; even though NONE of the files
      in that directory need any protection.
      
      Shorten some long lines while at it.
      
      * cfg.mk (exclude_file_name_regexp--sc_prohibit_strtol): No need
      to exclude all of util.
      (exclude_file_name_regexp--sc_prohibit_sprintf): Reduce long line.
      (exclude_file_name_regexp--sc_prohibit_raw_allocation): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      e1f7914d
    • E
      conf: avoid memory leaks while parsing seclabel · 55d54dd9
      Eric Blake 提交于
      Our seclabel parsing was repeatedly assigning malloc'd data into a
      temporary variable, without first freeing the previous use.  Among
      other leaks flagged by valgrind:
      
      ==9312== 8 bytes in 1 blocks are definitely lost in loss record 88 of 821
      ==9312==    at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
      ==9312==    by 0x8C40369: strdup (strdup.c:42)
      ==9312==    by 0x50EA799: virStrdup (virstring.c:676)
      ==9312==    by 0x50FAEB9: virXPathString (virxml.c:90)
      ==9312==    by 0x50FAF1E: virXPathStringLimit (virxml.c:112)
      ==9312==    by 0x510F516: virSecurityLabelDefParseXML (domain_conf.c:4571)
      ==9312==    by 0x510FB20: virSecurityLabelDefsParseXML (domain_conf.c:4720)
      
      While it was multiple problems, it looks like commit da78351b (thankfully
      unreleased) was to blame for all of them.
      
      * src/conf/domain_conf.c (virSecurityLabelDefParseXML): Plug leaks
      detected by valgrind.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      55d54dd9
    • E
      nwfilter: plug memory leak with firewall · ee70839b
      Eric Blake 提交于
      Introduced in commit 70571ccc (v1.2.4). Caught by valgrind:
      
      ==9816== 170 (32 direct, 138 indirect) bytes in 1 blocks are definitely lost in loss record 646 of 821
      ==9816==    at 0x4A081D4: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
      ==9816==    by 0x50836FB: virAlloc (viralloc.c:144)
      ==9816==    by 0x50AEC2B: virFirewallNew (virfirewall.c:204)
      ==9816==    by 0x1E2308ED: ebiptablesDriverProbeStateMatch (nwfilter_ebiptables_driver.c:3715)
      ==9816==    by 0x1E2309AD: ebiptablesDriverInit (nwfilter_ebiptables_driver.c:3742)
      
      * src/nwfilter/nwfilter_ebiptables_driver.c
      (ebiptablesDriverProbeStateMatch): Properly clean up.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ee70839b
    • E
      metadata: track title edits across libvirtd restart · 60e49440
      Eric Blake 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1122205
      
      Although the edits were changing in-memory XML, it was not flushed
      to disk; so unless some other action changes XML, a libvirtd restart
      would lose the changed information.
      
      * src/conf/domain_conf.c (virDomainObjSetMetadata): Add parameter,
      to save live status across restarts.
      (virDomainSaveXML): Allow for test driver.
      * src/conf/domain_conf.h (virDomainObjSetMetadata): Adjust
      signature.
      * src/bhyve/bhyve_driver.c (bhyveDomainSetMetadata): Adjust caller.
      * src/lxc/lxc_driver.c (lxcDomainSetMetadata): Likewise.
      * src/qemu/qemu_driver.c (qemuDomainSetMetadata): Likewise.
      * src/test/test_driver.c (testDomainSetMetadata): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      60e49440
  2. 23 7月, 2014 11 次提交
  3. 22 7月, 2014 16 次提交
    • M
      tests: Remove stale scsihostdata dir · 692016f7
      Michal Privoznik 提交于
      In the fbd91d49 commit, new scsihostdata dir is added to EXTRA_DIST in
      the tests/Makefile.am. However, the directory itself is not created
      anywhere, nor in the commit.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      692016f7
    • P
      qemu: snapshot: Forbid taking/reverting snapshots in PMSUSPENDED state · 1e833899
      Peter Krempa 提交于
      Qemu doesn't currently support them and behaves strangely. Just forbid
      them.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1079162
      1e833899
    • P
      qemu: snapshot: Forbid taking snapshot in invalid state · c71045a9
      Peter Krempa 提交于
      Similarly to 49a3a649 forbid creating
      snapshots in domain states impossible to reach in qemu.
      c71045a9
    • M
      domtop: Fix build on mingw · d82170d7
      Michal Privoznik 提交于
      Firstly, there's no sigaction() nor struct sigaction on mingw. We have
      to use the one implemented by gnulib (and hence link with gnulib).
      Then, for some reason one header file from windows defines ERROR
      symbol. Yes it does. Sigh.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      d82170d7
    • E
      build: fix build without numactl · 72823b44
      Eric Blake 提交于
      Under ./configure --without-numactl but with numactl-devel installed,
      the build fails with:
      
      ../../src/util/virnuma.c: In function 'virNumaNodeIsAvailable':
      ../../src/util/virnuma.c:407:5: error: implicit declaration of function 'numa_bitmask_isbitset' [-Werror=implicit-function-declaration]
           return numa_bitmask_isbitset(numa_nodes_ptr, node);
           ^
      
      and other failures, all because the configure results for particular
      functions were used without regard to whether libnuma was even being
      linked in.
      
      * src/util/virnuma.c (virNumaGetPages): Fix message typo.
      (virNumaNodeIsAvailable): Correct build when not using numactl.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      72823b44
    • R
      storage: logical: drop useless if · 53939d58
      Roman Bogorodskiy 提交于
      virStorageBackendLogicalCreateVol contains a piece like:
      
          if (vol->target.path != NULL) {
              /* A target path passed to CreateVol has no meaning */
              VIR_FREE(vol->target.path);
          }
      
      The 'if' is useless here, but 'syntax-check' doesn't catch that
      because of the comment, so drop the 'if'.
      53939d58
    • R
      Fix build on non-Linux platforms · b5f57be2
      Roman Bogorodskiy 提交于
      Commit ef48a1b6 introduced virFindSCSIHostByPCI for Linux and
      a stub for other platforms that returns -1 while the function
      should return 'char *', so use 'return NULL' instead.
      
      Commit fbd91d49 introduced virReadSCSIUniqueId with the third
      argument 'int *result', however the stub for non-Linux patform
      uses 'unsigned int *result', so change it to 'int *result'.
      
      Pushed under the build breaker rule.
      b5f57be2
    • J
      getAdapterName: Lookup stable scsi_host · ea37fb34
      John Ferlan 提交于
      If a parentaddr was provided in the XML, have getAdapterName lookup
      the stable address.  This allows virStorageBackendSCSICheckPool() and
      virStorageBackendSCSIRefreshPool() to automagically find the scsi_host
      by its PCI address and unique_id
      ea37fb34
    • J
      scsi_host: Introduce virFindSCSIHostByPCI · ef48a1b6
      John Ferlan 提交于
      Introduce a new function to parse the provided scsi_host parent address
      and unique_id value in order to find the /sys/class/scsi_host directory
      which will allow a stable SCSI host address
      
      Add a test to scsihosttest to lookup the host# name by using the PCI address
      and unique_id value
      ef48a1b6
    • J
      Add unique_id to nodedev output · f3271f4c
      John Ferlan 提交于
      Add an optional unique_id parameter to nodedev.  Allows for easier lookup
      and display of the unique_id value in order to document for use with
      scsi_host code.
      f3271f4c
    • J
      virutil: Introduce virReadSCSIUniqueId · fbd91d49
      John Ferlan 提交于
      Introduce a new function to read the current scsi_host entry and return
      the value found in the 'unique_id' file.
      
      Add a 'scsihosttest' test (similar to the fchosttest, but incorporating some
      of the concepts of the mocked pci test library) in order to read the
      unique_id file like would be found in the /sys/class/scsi_host tree.
      fbd91d49
    • J
      scsi_backend: Use existing LINUX_SYSFS_SCSI_HOST_PREFIX definition · aa9dac09
      John Ferlan 提交于
      Rather than supplying the path again in the formatting of the sysfs
      scsi_host directory.
      aa9dac09
    • O
      storage: Introduce parentaddr into virStoragePoolSourceAdapter · a4bd62ad
      Osier Yang 提交于
      Between reboots and kernel reloads, the SCSI host number used for SCSI
      storage pools may change requiring modification to the storage pool XML
      in order to use a specific SCSI host adapter.
      
      This patch introduces the "parentaddr" element and "unique_id" attribute
      for the SCSI host adapter in order to uniquely identify the adapter
      between reboots and kernel reloads. For now the goal is to only parse
      and format the XML. Both will be required to be provided in order to
      uniquely identify the desired SCSI host.
      
      The new XML is expected to be as follows:
      
        <adapter type='scsi_host'>
          <parentaddr unique_id='3'>
            <address domain='0x0000' bus='0x00' slot='0x1f' func='0x2'/>
          </parentaddr>
        </adapter>
      
      where "parentaddr" is the parent device of the SCSI host using the PCI
      address on which the device resides and the value from the unique_id file
      for the device. Both the PCI address and unique_id values will be used
      to traverse the /sys/class/scsi_host/ directories looking at each link
      to match the PCI address reformatted to the directory link format where
      "domain:bus:slot:function" is found.  Then for each matching directory
      the unique_id file for the scsi_host will be used to match the unique_id
      value in the xml.
      
      For a PCI address listed above, this will be formatted to "0000:00:1f.2"
      and the links in /sys/class/scsi_host will be used to find the host#
      to be used for the 'scsi_host' device. Each entry is a link to the
      /sys/bus/pci/devices directories, e.g.:
      
      %  ls -al /sys/class/scsi_host/host2
      lrwxrwxrwx. 1 root root 0 Jun  1 00:22 /sys/class/scsi_host/host2 -> ../../devices/pci0000:00/0000:00:1f.2/ata3/host2/scsi_host/host2
      
      % cat /sys/class/scsi_host/host2/unique_id
      3
      
      The "parentaddr" and "name" attributes are mutually exclusive to identify
      the SCSI host number. Use of the "parentaddr" element will be the preferred
      mechanism.
      
      This patch only supports to parse and format the XMLs. Later patches will
      add code to find out the scsi host number.
      a4bd62ad
    • O
      virStoragePoolSourceAdapter: Refine the SCSI_HOST adapter name · 53f62056
      Osier Yang 提交于
      Preparation for future patches by creating a scsi_host union. For now,
      just the 'name' will be present.
      53f62056
    • J
      getAdapterName: check for SCSI_HOST · 8d854e5b
      John Ferlan 提交于
      Rather than assume that NOT FC_HOST is SCSI_HOST, let's call them out
      specifically. Makes it easier to find SCSI_HOST code/structs and ensures
      something isn't missed in the future
      8d854e5b
    • P
      schema: pool: netfs: Don't enforce slash in glusterfs pool source · b325be12
      Peter Krempa 提交于
      Gluster volumes don't start with a leading slash. Our schema for netfs
      gluster pools enforces it though. Luckily mount.glusterfs skips it.
      Allow a slashless volume name for glusterfs netfs mounts in the schema.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1101999
      b325be12
  4. 21 7月, 2014 7 次提交
  5. 19 7月, 2014 2 次提交
    • R
      bhyve: reconnect to domains after libvirtd restart · 29e45ea1
      Roman Bogorodskiy 提交于
      Try to reconnect to the running domains after libvirtd restart. To
      achieve that, do:
      
       * Save domain state
        - Modify virBhyveProcessStart() to save domain state to the state
          dir
        - Modify virBhyveProcessStop() to cleanup the pidfile and the state
      
       * Detect if the state information loaded from the driver's state
         dir matches the actual state. Consider domain active if:
          - PID it points to exist
          - Process title of this PID matches the expected one with the
            domain name
      
         Otherwise, mark the domain as shut off.
      
      Note: earlier development bhyve versions before FreeBSD 10.0-RELEASE
      didn't set proctitle we expect, so the current code will not detect
      it. I don't plan adding support for this unless somebody requests
      this.
      29e45ea1
    • H
      doc: add domain to address of hostdev pci · f1ac62f7
      Hu Tao 提交于
      libvirt supports pci domain already, so update the documentation.
      Otherwise users who lookup the documentation for how to use hostdev may
      miss the domain and encounter error when pass-through a pci device in a
      domain other than 0.
      Signed-off-by: NHu Tao <hutao@cn.fujitsu.com>
      f1ac62f7