1. 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
  2. 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
  3. 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
  4. 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
  5. 11 3月, 2011 2 次提交
  6. 09 2月, 2011 1 次提交
    • E
      sysinfo: define internal driver API · dec13a5a
      Eric Blake 提交于
      * src/driver.h (virDrvGetSysinfo): New typedef.
      (_virDriver): New callback member.
      * src/esx/esx_driver.c (esxDriver): Add stub for driver.
      * src/lxc/lxc_driver.c (lxcDriver): Likewise.
      * src/opennebula/one_driver.c (oneDriver): Likewise.
      * src/openvz/openvz_driver.c (openvzDriver): Likewise.
      * src/phyp/phyp_driver.c (phypDriver): Likewise.
      * src/qemu/qemu_driver.c (qemuDriver): Likewise.
      * src/remote/remote_driver.c (remote_driver): Likewise.
      * src/test/test_driver.c (testDriver): Likewise.
      * src/uml/uml_driver.c (umlDriver): Likewise.
      * src/vbox/vbox_tmpl.c (Driver): Likewise.
      * src/vmware/vmware_driver.c (vmwareDriver): Likewise.
      * src/xen/xen_driver.c (xenUnifiedDriver): Likewise.
      * src/xenapi/xenapi_driver.c (xenapiDriver): Likewise.
      dec13a5a
  7. 25 11月, 2010 1 次提交
    • O
      Implementations of virDomainIsUpdated for drivers except qemu · f3605b33
      Osier Yang 提交于
      Except LXC and UML driver, implementations of all other drivers
      simply return 0, because these drivers doesn't have config both
      in memory and on disk, no need to track if the domain of these
      drivers updated or not.
      
      Rename "xenUnifiedDomainisPersistent" to "xenUnifiedDomainIsPersistent"
      
      * esx/esx_driver.c
      * lxc/lxc_driver.c
      * opennebula/one_driver.c
      * openvz/openvz_driver.c
      * phyp/phyp_driver.c
      * test/test_driver.c
      * uml/uml_driver.c
      * vbox/vbox_tmpl.c
      * xen/xen_driver.c
      * xenapi/xenapi_driver.c
      f3605b33
  8. 24 11月, 2010 1 次提交
    • O
      define internal driver API · 37a02efd
      Osier Yang 提交于
      * src/driver.h (new typedef, new callback member for "_virDriver")
      * 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/xen/xen_driver.c
      * src/xenapi/xenapi_driver.c
      37a02efd
  9. 12 11月, 2010 2 次提交
    • M
      phyp: Don't do a flags check in the storage driver · d941eb13
      Matthias Bolte 提交于
      This makes the storage driver fail when the connection is
      opened with the VIR_CONNECT_RO flag, resulting in a read-only
      connection with no storage driver.
      d941eb13
    • D
      Introduce a virDomainOpenConsole API · 88a9b382
      Daniel P. Berrange 提交于
      To enable virsh console (or equivalent) to be used remotely
      it is necessary to provide remote access to the /dev/pts/XXX
      pseudo-TTY associated with the console/serial/parallel device
      in the guest. The virStream API provide a bi-directional I/O
      stream capability that can be used for this purpose. This
      patch thus introduces a virDomainOpenConsole API that uses
      the stream APIs.
      
      * src/libvirt.c, src/libvirt_public.syms,
        include/libvirt/libvirt.h.in, src/driver.h: Define the
        new virDomainOpenConsole API
      * 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/xen/xen_driver.c, src/xenapi/xenapi_driver.c: Stub
        API entry point
      88a9b382
  10. 10 11月, 2010 1 次提交
    • S
      bye to close(), welcome to VIR_(FORCE_)CLOSE() · 60ae1c34
      Stefan Berger 提交于
      Using automated replacement with sed and editing I have now replaced all
      occurrences of close() with VIR_(FORCE_)CLOSE() except for one, of
      course. Some replacements were straight forward, others I needed to pay
      attention. I hope I payed attention in all the right places... Please
      have a look. This should have at least solved one more double-close
      error.
      60ae1c34
  11. 20 10月, 2010 3 次提交
    • E
      vcpu: support maxvcpu in domain_conf · 4617eedf
      Eric Blake 提交于
      Although this patch adds a distinction between maximum vcpus and
      current vcpus in the XML, the values should be identical for all
      drivers at this point.  Only in subsequent per-driver patches will
      a distinction be made.
      
      In general, virDomainGetInfo should prefer the current vcpus.
      
      * src/conf/domain_conf.h (_virDomainDef): Adjust vcpus to unsigned
      short, to match virDomainGetInfo limit.  Add maxvcpus member.
      * src/conf/domain_conf.c (virDomainDefParseXML)
      (virDomainDefFormat): parse and print out vcpu details.
      * src/xen/xend_internal.c (xenDaemonParseSxpr)
      (xenDaemonFormatSxpr): Manage both vcpu numbers, and require them
      to be equal for now.
      * src/xen/xm_internal.c (xenXMDomainConfigParse)
      (xenXMDomainConfigFormat): Likewise.
      * src/phyp/phyp_driver.c (phypDomainDumpXML): Likewise.
      * src/openvz/openvz_conf.c (openvzLoadDomains): Likewise.
      * src/openvz/openvz_driver.c (openvzDomainDefineXML)
      (openvzDomainCreateXML, openvzDomainSetVcpusInternal): Likewise.
      * src/vbox/vbox_tmpl.c (vboxDomainDumpXML, vboxDomainDefineXML):
      Likewise.
      * src/xenapi/xenapi_driver.c (xenapiDomainDumpXML): Likewise.
      * src/xenapi/xenapi_utils.c (createVMRecordFromXml): Likewise.
      * src/esx/esx_vmx.c (esxVMX_ParseConfig, esxVMX_FormatConfig):
      Likewise.
      * src/qemu/qemu_conf.c (qemuBuildSmpArgStr)
      (qemuParseCommandLineSmp, qemuParseCommandLine): Likewise.
      * src/qemu/qemu_driver.c (qemudDomainHotplugVcpus): Likewise.
      * src/opennebula/one_conf.c (xmlOneTemplate): Likewise.
      4617eedf
    • E
      vcpu: make old API trivially wrap to new API · 50c51f13
      Eric Blake 提交于
      Note - this wrapping is completely mechanical; the old API will
      function identically, since the new API validates that the exact
      same flags are provided by the old API.  On a per-driver basis,
      it may make sense to have the old API pass a different set of flags,
      but that should be done in the per-driver patch that implements
      the full range of flag support in the new API.
      
      * src/esx/esx_driver.c (esxDomainSetVcpus, escDomainGetMaxVpcus):
      Move guts...
      (esxDomainSetVcpusFlags, esxDomainGetVcpusFlags): ...to new
      functions.
      (esxDriver): Trivially support the new API.
      * src/openvz/openvz_driver.c (openvzDomainSetVcpus)
      (openvzDomainSetVcpusFlags, openvzDomainGetMaxVcpus)
      (openvzDomainGetVcpusFlags, openvzDriver): Likewise.
      * src/phyp/phyp_driver.c (phypDomainSetCPU)
      (phypDomainSetVcpusFlags, phypGetLparCPUMAX)
      (phypDomainGetVcpusFlags, phypDriver): Likewise.
      * src/qemu/qemu_driver.c (qemudDomainSetVcpus)
      (qemudDomainSetVcpusFlags, qemudDomainGetMaxVcpus)
      (qemudDomainGetVcpusFlags, qemuDriver): Likewise.
      * src/test/test_driver.c (testSetVcpus, testDomainSetVcpusFlags)
      (testDomainGetMaxVcpus, testDomainGetVcpusFlags, testDriver):
      Likewise.
      * src/vbox/vbox_tmpl.c (vboxDomainSetVcpus)
      (vboxDomainSetVcpusFlags, virDomainGetMaxVcpus)
      (virDomainGetVcpusFlags, virDriver): Likewise.
      * src/xen/xen_driver.c (xenUnifiedDomainSetVcpus)
      (xenUnifiedDomainSetVcpusFlags, xenUnifiedDomainGetMaxVcpus)
      (xenUnifiedDomainGetVcpusFlags, xenUnifiedDriver): Likewise.
      * src/xenapi/xenapi_driver.c (xenapiDomainSetVcpus)
      (xenapiDomainSetVcpusFlags, xenapiDomainGetMaxVcpus)
      (xenapiDomainGetVcpusFlags, xenapiDriver): Likewise.
      (xenapiError): New helper macro.
      50c51f13
    • E
      vcpu: define internal driver API · dd255d64
      Eric Blake 提交于
      * src/driver.h (virDrvDomainSetVcpusFlags)
      (virDrvDomainGetVcpusFlags): New typedefs.
      (_virDriver): New callback members.
      * src/esx/esx_driver.c (esxDriver): Add stub for driver.
      * src/lxc/lxc_driver.c (lxcDriver): Likewise.
      * src/opennebula/one_driver.c (oneDriver): Likewise.
      * src/openvz/openvz_driver.c (openvzDriver): Likewise.
      * src/phyp/phyp_driver.c (phypDriver): Likewise.
      * src/qemu/qemu_driver.c (qemuDriver): Likewise.
      * src/remote/remote_driver.c (remote_driver): Likewise.
      * src/test/test_driver.c (testDriver): Likewise.
      * src/uml/uml_driver.c (umlDriver): Likewise.
      * src/vbox/vbox_tmpl.c (Driver): Likewise.
      * src/xen/xen_driver.c (xenUnifiedDriver): Likewise.
      * src/xenapi/xenapi_driver.c (xenapiDriver): Likewise.
      dd255d64
  12. 13 10月, 2010 2 次提交
    • N
      XML parsing for memory tunables · d390fce4
      Nikunj A. Dadhania 提交于
      Adding parsing code for memory tunables in the domain xml file
      also change the internal define structures used for domain memory
      informations
      Adds a new specific test
      d390fce4
    • N
      Adding virDomainSetMemoryParameters and virDomainGetMemoryParameters API · 0cd78232
      Nikunj A. Dadhania 提交于
      Public api to set/get memory tunables supported by the hypervisors.
      
      dv:
      * some cleanups in libvirt.c
      * adding extra checks in libvirt.c new entry points
      
      v4:
      * Move exporting public API to this patch
      * Add unsigned int flags to the public api for future extensions
      
      v3:
      * Add domainGetMemoryParamters and NULL in all the driver interface
      
      v2:
      * Initialize domainSetMemoryParameters to NULL in all the driver
        interface structure.
      0cd78232
  13. 01 10月, 2010 1 次提交
  14. 29 9月, 2010 1 次提交
  15. 27 8月, 2010 1 次提交
  16. 15 8月, 2010 1 次提交
    • E
      PHYP: Add rudimentary network driver · 50e49085
      Eduardo Otubo 提交于
      I changed virStorage[Open|Close] to virVIOSDriver[Open|Close] so
      the network driver can use it - since the network driver deals
      with Open/Close in the same way.
      50e49085
  17. 06 8月, 2010 1 次提交
    • E
      phyp: refactor phypListDomainsGeneric to eliminate buffer overflow · 6324949f
      Eduardo Otubo 提交于
      src/phyp/phyp_driver.c:phypListDomainsGeneric was crashing due to a buffer
      overflow if any line returned from virRun wasn't <=10 characters.
      
      Since virStrToLong_i recognizes any non-numeric as a terminator (not
      just NULL), there actually is no need to copy the number into a
      separate string anyway, so this patch eliminates that copy, the fixed
      length buffer, and therefore the potential to overflow.
      
      This change also provided the oppurtunity to eliminate the character
      counting loop, instead using the return from virStrToLong_i to point
      past the end of the number, then simply skip the \n to get to the
      next.
      6324949f
  18. 31 7月, 2010 1 次提交
  19. 24 7月, 2010 1 次提交
    • C
      Qemu Monitor API entry point. · 21adf03c
      Chris Lalancette 提交于
      Add the library entry point for the new virDomainQemuMonitorCommand()
      entry point.  Because this is not part of the "normal" libvirt API,
      it gets its own header file, library file, and will eventually
      get its own over-the-wire protocol later in the series.
      
      Changes since v1:
       - Go back to using the virDriver table for qemuDomainMonitorCommand, due to
         linking issues
       - Added versioning information to the libvirt-qemu.so
      
      Changes since v2:
       - None
      
      Changes since v3:
       - Add LGPL header to libvirt-qemu.c
       - Make virLibConnError and virLibDomainError macros instead of function calls
      
      Changes since v4:
       - Move exported symbols to libvirt_qemu.syms
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      21adf03c
  20. 29 6月, 2010 1 次提交
    • E
      phyp: don't steal storage management from other drivers · 5b26f2d8
      Eric Blake 提交于
      Fix regression introduced in commit a4a28724 - basically, the
      phyp storage driver should only accept the same URIs that the
      main phyp driver is willing to accept.  Blindly accepting all
      URIs meant that the phyp storage driver was being consulted for
      'virsh -c qemu:///session pool-list --all', rather than the
      qemu storage driver, then since the URI was not for phyp, attempts
      to then use the phyp driver crashed because it was not initialized.
      
      * src/phyp/phyp_driver.c (phypStorageOpen): Only accept connections
      already open to a phyp driver.
      5b26f2d8
  21. 25 6月, 2010 1 次提交
    • E
      phyp: optimize use of sed · 17dedf7c
      Eric Blake 提交于
      Minor speedups by using the full power of sed.
      
      * src/phyp/phyp_driver.c (phypGetVIOSFreeSCSIAdapter)
      (phypDiskType, phypListDefinedDomains): Use fewer processes, by
      folding other work into sed.
      (phypGetVIOSPartitionID): Likewise.  Also avoid non-portable use
      of 'sed -s'.
      17dedf7c