1. 03 11月, 2011 1 次提交
    • D
      Fix default console type setting · 209c2880
      Daniel P. Berrange 提交于
      The default console type may vary based on the OS type. ie a Xen
      paravirt guests wants a 'xen' console, while a fullvirt guests
      wants a 'serial' console.
      
      A plain integer default console type in the capabilities does
      not suffice. Instead introduce a callback that is passed the
      OS type.
      
      * src/conf/capabilities.h: Use a callback for default console
        type
      * src/conf/domain_conf.c, src/conf/domain_conf.h: Use callback
        for default console type. Add missing LXC/OpenVZ console types.
      * src/esx/esx_driver.c, src/libxl/libxl_conf.c,
        src/lxc/lxc_conf.c, src/openvz/openvz_conf.c,
        src/phyp/phyp_driver.c, src/qemu/qemu_capabilities.c,
        src/uml/uml_conf.c, src/vbox/vbox_tmpl.c,
        src/vmware/vmware_conf.c, src/xen/xen_hypervisor.c,
        src/xenapi/xenapi_driver.c: Set default console type callback
      209c2880
  2. 22 7月, 2011 2 次提交
    • M
      destroy: Implement internal API for phyp driver · e4e69b4b
      Michal Privoznik 提交于
      e4e69b4b
    • E
      build: rename files.h to virfile.h · 8e22e089
      Eric Blake 提交于
      In preparation for a future patch adding new virFile APIs.
      
      * src/util/files.h, src/util/files.c: Move...
      * src/util/virfile.h, src/util/virfile.c: ...here, and rename
      functions to virFile prefix.  Macro names are intentionally
      left alone.
      * *.c: All '#include "files.h"' uses changed.
      * src/Makefile.am (UTIL_SOURCES): Reflect rename.
      * cfg.mk (exclude_file_name_regexp--sc_prohibit_close): Likewise.
      * src/libvirt_private.syms: Likewise.
      * docs/hacking.html.in: Likewise.
      * HACKING: Regenerate.
      8e22e089
  3. 16 7月, 2011 1 次提交
    • E
      flags: use common dumpxml flags check · 461e0f1a
      Eric Blake 提交于
      The previous patches only cleaned up ATTRIBUTE_UNUSED flags cases;
      auditing the drivers found other places where flags was being used
      but not validated.  In particular, domainGetXMLDesc had issues with
      clients accepting a different set of flags than the common
      virDomainDefFormat helper function.
      
      * src/conf/domain_conf.c (virDomainDefFormat): Add common flag check.
      * src/uml/uml_driver.c (umlDomainAttachDeviceFlags)
      (umlDomainDetachDeviceFlags): Reject unknown
      flags.
      * src/vbox/vbox_tmpl.c (vboxDomainGetXMLDesc)
      (vboxDomainAttachDeviceFlags)
      (vboxDomainDetachDeviceFlags): Likewise.
      * src/qemu/qemu_driver.c (qemudDomainMemoryPeek): Likewise.
      (qemuDomainGetXMLDesc): Document common flag handling.
      * src/libxl/libxl_driver.c (libxlDomainGetXMLDesc): Likewise.
      * src/lxc/lxc_driver.c (lxcDomainGetXMLDesc): Likewise.
      * src/openvz/openvz_driver.c (openvzDomainGetXMLDesc): Likewise.
      * src/phyp/phyp_driver.c (phypDomainGetXMLDesc): Likewise.
      * src/test/test_driver.c (testDomainGetXMLDesc): Likewise.
      * src/vmware/vmware_driver.c (vmwareDomainGetXMLDesc): Likewise.
      * src/xenapi/xenapi_driver.c (xenapiDomainGetXMLDesc): Likewise.
      461e0f1a
  4. 14 7月, 2011 1 次提交
    • E
      phyp: reject unknown flags · 76f40fa5
      Eric Blake 提交于
      * src/phyp/phyp_driver.c (phypOpen, phypDomainReboot)
      (phypVIOSDriverOpen): Reject unknown flags.
      76f40fa5
  5. 12 7月, 2011 1 次提交
    • M
      Add domain type checking · aa14709a
      Matthias Bolte 提交于
      The drivers were accepting domain configs without checking if those
      were actually meant for them. For example the LXC driver happily
      accepts configs with type QEMU.
      
      Add a check for the expected domain types to the virDomainDefParse*
      functions.
      aa14709a
  6. 08 7月, 2011 1 次提交
    • E
      drivers: prefer unsigned int for flags · 1740c381
      Eric Blake 提交于
      Now that the public APIs always use unsigned flags, the internal
      driver callbacks might as well do likewise.
      
      * src/driver.h (vrDrvOpen, virDrvDomainCoreDump)
      (virDrvDomainGetXMLDesc, virDrvNetworkGetXMLDesc)
      (virDrvNWFilterGetXMLDesc): Update type.
      * src/remote/remote_protocol.x (remote_open_args)
      (remote_domain_core_dump_args, remote_domain_get_xml_desc_args)
      (remote_network_get_xml_desc_args)
      (remote_nwfilter_get_xml_desc_args): Likewise.
      * src/test/test_driver.c: Update clients.
      * src/remote/remote_driver.c: Likewise.
      * src/xen/xen_hypervisor.c: Likewise.
      * src/xen/xen_hypervisor.h: Likewise.
      * src/xen/xen_driver.c: Likewise.
      * src/xen/xend_internal.c: Likewise.
      * src/xen/xend_internal.h: Likewise.
      * src/xen/xm_internal.c: Likewise.
      * src/xen/xm_internal.h: Likewise.
      * src/xen/xs_internal.c: Likewise.
      * src/xen/xs_internal.h: Likewise.
      * src/xen/xen_inotify.c: Likewise.
      * src/xen/xen_inotify.h: Likewise.
      * src/phyp/phyp_driver.c: Likewise.
      * src/openvz/openvz_driver.c: Likewise.
      * src/vmware/vmware_driver.c: Likewise.
      * src/vbox/vbox_driver.c: Likewise.
      * src/vbox/vbox_tmpl.c: Likewise.
      * src/xenapi/xenapi_driver.c: Likewise.
      * src/esx/esx_driver.c: Likewise.
      * src/esx/esx_interface_driver.c: Likewise.
      * src/esx/esx_network_driver.c: Likewise.
      * src/esx/esx_storage_driver.c: Likewise.
      * src/esx/esx_device_monitor.c: Likewise.
      * src/esx/esx_secret_driver.c: Likewise.
      * src/esx/esx_nwfilter_driver.c: Likewise.
      * src/interface/netcf_driver.c: Likewise.
      * src/nwfilter/nwfilter_driver.c: Likewise.
      * src/libxl/libxl_driver.c: Likewise.
      * src/qemu/qemu_driver.c: Likewise.
      * src/lxc/lxc_driver.c: Likewise.
      * src/uml/uml_driver.c: Likewise.
      * src/network/bridge_driver.c: Likewise.
      * src/secret/secret_driver.c: Likewise.
      * src/storage/storage_driver.c: Likewise.
      * src/node_device/node_device_hal.c: Likewise.
      * src/node_device/node_device_udev.c: Likewise.
      * src/remote_protocol-structs: Likewise.
      1740c381
  7. 16 5月, 2011 5 次提交
    • D
      Add many version number annotations to drivers · 9b1ae97f
      Daniel P. Berrange 提交于
      Add many version number annotations to the internal driver
      tables, to allow hvsupport.html to display more accurate
      information
      9b1ae97f
    • D
      Convert all driver struct intializers to C99 style · 879d409e
      Daniel P. Berrange 提交于
      Change all the driver struct initializers to use the
      C99 style, leaving out unused fields. This will make
      it possible to add new APIs without changing every
      driver. eg change:
      
          qemudDomainResume, /* domainResume */
          qemudDomainShutdown, /* domainShutdown */
          NULL, /* domainReboot */
          qemudDomainDestroy, /* domainDestroy */
      
      to
      
          .domainResume = qemudDomainResume,
          .domainShutdown = qemudDomainShutdown,
          .domainDestroy = qemudDomainDestroy,
      
      And get rid of any existing C99 style initializersr which
      set NULL, eg change
      
           .listPools          = vboxStorageListPools,
           .numOfDefinedPools  = NULL,
           .listDefinedPools   = NULL,
           .findPoolSources    = NULL,
           .poolLookupByName   = vboxStoragePoolLookupByName,
      
      to
      
           .listPools          = vboxStorageListPools,
           .poolLookupByName   = vboxStoragePoolLookupByName,
      879d409e
    • D
      Tweak driver naming for consistency with public API · 360df019
      Daniel P. Berrange 提交于
      Fix some driver names:
      
        s/virDrvCPUCompare/virDrvCompareCPU/
        s/virDrvCPUBaseline/virDrvBaselineCPU/
        s/virDrvQemuDomainMonitorCommand/virDrvDomainQemuMonitorCommand/
        s/virDrvSecretNumOfSecrets/virDrvNumOfSecrets/
        s/virDrvSecretListSecrets/virDrvListSecrets/
      
      And some driver struct field names:
      
        s/getFreeMemory/nodeGetFreeMemory/
      360df019
    • J
      Implement basic virDomainGetState in all drivers · 26d94012
      Jiri Denemark 提交于
      Reason is currently always set to 0 (i.e., *_UNKNOWN).
      26d94012
    • J
      Internal driver API for virDomainGetState · 6feb1341
      Jiri Denemark 提交于
      6feb1341
  8. 14 5月, 2011 1 次提交
    • E
      phyp: avoid a crash · 0f9e52da
      Eric Blake 提交于
      This has been present since the introduction of phypAttachDevice
      in commit 444fd07a.
      
      * src/phyp/phyp_driver.c (phypAttachDevice): Don't dereference
      NULL.
      0f9e52da
  9. 13 5月, 2011 1 次提交
    • M
      screenshot: Defining the internal API · 3c386643
      Michal Privoznik 提交于
      * src/driver.h: Stub code for new API
      * src/esx/esx_driver.c, src/libxl/libxl_driver.c,
        src/lxc/lxc_driver.c, src/openvz/openvz_driver.c,
        src/phyp/phyp_driver.c, src/qemu/qemu_driver.c,
        rc/remote/remote_driver.c, rc/test/test_driver.c,
        src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
        src/vmware/vmware_driver.c, src/xen/xen_driver.c,
        src/xen/xen_driver.h, src/xen/xen_hypervisor.c,
        src/xen/xen_inotify.c, src/xen/xend_internal.c,
        src/xen/xm_internal.c, src/xen/xs_internal.c,
        src/xenapi/xenapi_driver.c: Add dummy entries in driver
        table for new APIs
      3c386643
  10. 12 5月, 2011 1 次提交
    • L
      libvirt,logging: cleanup VIR_XXX0() · b65f37a4
      Lai Jiangshan 提交于
      These VIR_XXXX0 APIs make us confused, use the non-0-suffix APIs instead.
      
      How do these coversions works? The magic is using the gcc extension of ##.
      When __VA_ARGS__ is empty, "##" will swallow the "," in "fmt," to
      avoid compile error.
      
      example: origin				after CPP
      	high_level_api("%d", a_int)	low_level_api("%d", a_int)
      	high_level_api("a  string")	low_level_api("a  string")
      
      About 400 conversions.
      
      8 special conversions:
      VIR_XXXX0("") -> VIR_XXXX("msg") (avoid empty format) 2 conversions
      VIR_XXXX0(string_literal_with_%) -> VIR_XXXX(%->%%) 0 conversions
      VIR_XXXX0(non_string_literal) -> VIR_XXXX("%s", non_string_literal)
        (for security) 6 conversions
      Signed-off-by: NLai Jiangshan <laijs@cn.fujitsu.com>
      b65f37a4
  11. 11 5月, 2011 2 次提交
  12. 06 5月, 2011 1 次提交
    • E
      maint: rename virBufferVSprintf to virBufferAsprintf · 68ea80cf
      Eric Blake 提交于
      We already have virAsprintf, so picking a similar name helps for
      seeing a similar purpose.  Furthermore, the prefix V before printf
      generally implies 'va_list', even though this variant was '...', and
      the old name got in the way of adding a new va_list version.
      
      global rename performed with:
      
      $ git grep -l virBufferVSprintf \
        | xargs -L1 sed -i 's/virBufferVSprintf/virBufferAsprintf/g'
      
      then revert the changes in ChangeLog-old.
      68ea80cf
  13. 21 4月, 2011 1 次提交
  14. 19 4月, 2011 2 次提交
    • M
      Update and sort msg_gen_function list and mark unmarked messages · 78ef49ea
      Matthias Bolte 提交于
      Inspired by Eric Blake
      78ef49ea
    • E
      phyp: another simplification · a35af32c
      Eric Blake 提交于
      Rather than copying and pasting lots of code, factor it into a
      single helper function.
      
      This commit adds a warning if tighter integer parsing would fail
      due to any stray bytes after the number, but should not change
      any behavior other than the bug fix for phypNumDomainsGeneric
      looking only at numeric lines.
      
      * src/phyp/phyp_driver.c (phypExecInt): New function.
      (phypGetVIOSPartitionID, phypNumDomainsGeneric, phypGetLparID)
      (phypGetLparMem, phypGetLparCPUGeneric, phypGetRemoteSlot)
      (phypGetVIOSNextSlotNumber, phypAttachDevice)
      (phypGetStoragePoolSize, phypStoragePoolNumOfVolumes)
      (phypNumOfStoragePools, phypInterfaceDestroy)
      (phypInterfaceDefineXML, phypInterfaceLookupByName)
      (phypInterfaceIsActive, phypNumOfInterfaces): Use it.
      (phypNumDomainsGeneric): Correctly find numeric line.
      a35af32c
  15. 17 4月, 2011 1 次提交
  16. 16 4月, 2011 8 次提交
    • E
      phyp: avoid memory leaks in command values · 0bd34a9d
      Eric Blake 提交于
      * src/phyp/phyp_driver.c (phypExecBuffer): New function. Use it
      throughout file for less code, and for plugging a few leaks.
      0bd34a9d
    • E
      phyp: use consistent return string handling · a1b46e71
      Eric Blake 提交于
      Use the name 'ret' for all phypExec results, to make it easier
      to wrap phypExec.  Don't allow a possibly NULL ret through printf.
      
      * src/phyp/phyp_driver.c (phypBuildVolume, phypDestroyStoragePool)
      (phypBuildStoragePool, phypBuildLpar): Avoid NULL dereference.
      (phypInterfaceDestroy): Avoid redundant free.
      (phypVolumeLookupByPath, phypVolumeGetPath): Use consistent
      naming.
      a1b46e71
    • E
      phyp: prefer memcpy over memmove when legal · e00c892f
      Eric Blake 提交于
      * src/phyp/phyp_driver.c (phypUUIDTable_AddLpar)
      (phypGetLparUUID, phypGetStoragePoolUUID, phypVolumeGetXMLDesc)
      (phypGetStoragePoolXMLDesc): Use faster method.
      e00c892f
    • E
      phyp: use consistent style for labels · f6178522
      Eric Blake 提交于
      * src/phyp/phyp_driver.c: Match label style of rest of project.
      (phypExec, phypUUIDTable_Pull): Drop an extra label.
      f6178522
    • E
      phyp: more return handling cleanup · 444306d5
      Eric Blake 提交于
      * src/phyp/phyp_driver.c (phypInterfaceDestroy)
      (phypInterfaceDefineXML, phypInterfaceLookupByName)
      (phypInterfaceIsActive, phypListInterfaces, phypNumOfInterfaces):
      Clean up return handling of recent additions.
      444306d5
    • E
      phyp: avoid memory leak on failure · 8f03c6e8
      Eric Blake 提交于
      * src/phyp/phyp_driver.c (phypUUIDTable_Init): Avoid memory leak
      on error.
      8f03c6e8
    • E
      phyp: avoid a logic bug · ef6147c4
      Eric Blake 提交于
      Ever since commit ebc46f, the destroy function built two command
      variants but only used one.  I went with the variant that matches
      the idiom used in the counterpart of phypBuildStoragePool.
      
      * src/phyp/phyp_driver.c (phypDestroyStoragePool): Avoid
      clobbering cmd.  Fix error message typo.
      ef6147c4
    • E
      maint: use lighter-weight function for straight appends · dbe3bad9
      Eric Blake 提交于
      It costs quite a few processor cycles to go through printf parsing
      just to determine that we only meant to append.
      
      * src/xen/xend_internal.c (xend_op_ext): Consolidate multiple
      printfs into one.
      * src/qemu/qemu_command.c (qemuBuildWatchdogDevStr)
      (qemuBuildUSBInputDevStr, qemuBuildSoundDevStr)
      (qemuBuildSoundCodecStr, qemuBuildVideoDevStr): Likewise.
      (qemuBuildCpuArgStr, qemuBuildCommandLine): Prefer virBufferAdd
      over virBufferVsprintf for trivial appends.
      * src/phyp/phyp_driver.c (phypExec, phypUUIDTable_Push)
      (phypUUIDTable_Pull): Likewise.
      * src/conf/nwfilter_conf.c (macProtocolIDFormatter)
      (arpOpcodeFormatter, formatIPProtocolID, printStringItems)
      (virNWFilterPrintStateMatchFlags, virNWIPAddressFormat)
      (virNWFilterDefFormat): Likewise.
      * src/security/virt-aa-helper.c (main): Likewise.
      * src/util/sexpr.c (sexpr2string): Likewise.
      * src/xenxs/xen_sxpr.c (xenFormatSxprChr): Likewise.
      * src/xenxs/xen_xm.c (xenFormatXMDisk): Likewise.
      dbe3bad9
  17. 14 4月, 2011 7 次提交
    • M
      phyp: Fix too small buffer allocation in phypAttachDevice · 28e938a9
      Matthias Bolte 提交于
      sizeof(domain->name) is the wrong thing. Instead of using strdup here
      rewrite escape_specialcharacters to allocate the buffer itself.
      
      Add a contains_specialcharacters to be used in phypOpen, as phypOpen is
      not interested in the escaped version.
      28e938a9
    • M
    • M
      e69aa733
    • M
      phyp: Reduce code duplication in error and success paths · d765a6f0
      Matthias Bolte 提交于
      Also fix memory leaks along the way in phypCreateServerSCSIAdapter and
      phypAttachDevice.
      d765a6f0
    • M
      phyp: Remove stack allocating a 4kb volume key and fix related memory leaks · 444fd07a
      Matthias Bolte 提交于
      Don't pre-allocate 4kb per key, make phypVolumeGetKey allocate the memory.
      
      Make phypBuildVolume return the volume key instead of using pre-allocated
      memory to store it.
      
      Also fix a memory leak in phypVolumeLookupByName when phypVolumeGetKey
      fails. Fix another memory leak in phypVolumeLookupByPath in the success
      path. Fix phypVolumeGetXMLDesc leaking voldef.key.
      444fd07a
    • D
      Remove C99 variable declare in PHYP network driver · 4bfab4a0
      Daniel P. Berrange 提交于
      Move the virInterfacePtr declaration to the top of the
      function to avoid jump uninitialized variable warnings
      
      * src/phyp/phyp_driver.c: Fix var declaration
      4bfab4a0
    • E
      PHYP: Adding network interface · 67eecd16
      Eduardo Otubo 提交于
      This is the implementation of the previous patch now using virInterface*
      API. Ended up this patch got much more simpler, smaller and easier to
      review. Here is some details:
      
        * MAC size and interface name are fixed due to specifications on HMC,
          both are created automatically and CAN'T be specified from user. They
          have the following format:
      
           * MAC: 122980003002
           * Interface name: U9124.720.067BE8B-V3-C0
      
        * I did replaced all the |grep|sed following the comments Eric Blake
          did on the last patch.
      
        * According to my last email, It's not possible to create a network
          interface without assigning it to a specific lpar. Then, I am using
          this very minimalistic XML file for testing:
      
           <interface type='ethernet' name='LPAR01'>
           </interface>
      
          In this file I am using "name" as the lpar name which I am going to
          assign the new network interface. I couldn't find a better way to
          refer to it. Comments are welcome.
      
        * Regarding the fact I am sleeping one second waiting for the HMC to
          complete creation of the interface, I don't have means to check
          if the whole process is done. All I do is execute a command, wait
          until is complete (which is not enough in this case) check
          the return and the exit status. The process of actually creating
          a networking interface seems to take a little longer than just the
          return of the ssh control.
      67eecd16
  18. 05 4月, 2011 2 次提交
    • M
      phyp: Remove 16kb stack allocation · d1591ad5
      Matthias Bolte 提交于
      Allocate on the heap instead.
      d1591ad5
    • E
      build: detect potentential uninitialized variables · 0d166c6b
      Eric Blake 提交于
      Even with -Wuninitialized (which is part of autobuild.sh
      --enable-compile-warnings=error), gcc does NOT catch this
      use of an uninitialized variable:
      
      {
        if (cond)
          goto error;
        int a = 1;
      error:
        printf("%d", a);
      }
      
      which prints 0 (supposing the stack started life wiped) if
      cond was true.  Clang will catch it, but we don't use clang
      as often.  Using gcc -Wjump-misses-init catches it, but also
      gives false positives:
      
      {
        if (cond)
          goto error;
        int a = 1;
        return a;
      error:
        return 0;
      }
      
      Here, a was never used in the scope of the error block, so
      declaring it after goto is technically fine (and clang agrees).
      However, given that our HACKING already documents a preference
      to C89 decl-before-statement, the false positive warning is
      enough of a prod to comply with HACKING.
      
      [Personally, I'd _really_ rather use C99 decl-after-statement
      to minimize scope, but until gcc can efficiently and reliably
      catch scoping and uninitialized usage bugs, I'll settle with
      the compromise of enforcing a coding standard that happens to
      reject false positives if it can also detect real bugs.]
      
      * acinclude.m4 (LIBVIRT_COMPILE_WARNINGS): Add -Wjump-misses-init.
      * src/util/util.c (__virExec): Adjust offenders.
      * src/conf/domain_conf.c (virDomainTimerDefParseXML): Likewise.
      * src/remote/remote_driver.c (doRemoteOpen): Likewise.
      * src/phyp/phyp_driver.c (phypGetLparNAME, phypGetLparProfile)
      (phypGetVIOSFreeSCSIAdapter, phypVolumeGetKey)
      (phypGetStoragePoolDevice)
      (phypVolumeGetPhysicalVolumeByStoragePool)
      (phypVolumeGetPath): Likewise.
      * src/vbox/vbox_tmpl.c (vboxNetworkUndefineDestroy)
      (vboxNetworkCreate, vboxNetworkDumpXML)
      (vboxNetworkDefineCreateXML): Likewise.
      * src/xenapi/xenapi_driver.c (getCapsObject)
      (xenapiDomainDumpXML): Likewise.
      * src/xenapi/xenapi_utils.c (createVMRecordFromXml): Likewise.
      * src/security/security_selinux.c (SELinuxGenNewContext):
      Likewise.
      * src/qemu/qemu_command.c (qemuBuildCommandLine): Likewise.
      * src/qemu/qemu_hotplug.c (qemuDomainChangeEjectableMedia):
      Likewise.
      * src/qemu/qemu_process.c (qemuProcessWaitForMonitor): Likewise.
      * src/qemu/qemu_monitor_text.c (qemuMonitorTextGetPtyPaths):
      Likewise.
      * src/qemu/qemu_driver.c (qemudDomainShutdown)
      (qemudDomainBlockStats, qemudDomainMemoryPeek): Likewise.
      * src/storage/storage_backend_iscsi.c
      (virStorageBackendCreateIfaceIQN): Likewise.
      * src/node_device/node_device_udev.c (udevProcessPCI): Likewise.
      0d166c6b
  19. 22 3月, 2011 1 次提交
    • D
      Add public API for setting migration speed on the fly · cb4aba9b
      Daniel P. Berrange 提交于
      It is possible to set a migration speed limit when starting
      migration. This new API allows the speed limit to be changed
      on the fly to adjust to changing conditions
      
      * src/driver.h, src/libvirt.c, src/libvirt_public.syms,
        include/libvirt/libvirt.h.in: Add virDomainMigrateSetMaxSpeed
      * src/esx/esx_driver.c, src/lxc/lxc_driver.c,
        src/opennebula/one_driver.c, src/openvz/openvz_driver.c,
        src/phyp/phyp_driver.c, src/qemu/qemu_driver.c,
        src/remote/remote_driver.c, src/test/test_driver.c,
        src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
        src/vmware/vmware_driver.c, src/xen/xen_driver.c,
        src/libxl/libxl_driver.c: Stub new API
      cb4aba9b