1. 14 4月, 2016 1 次提交
  2. 13 4月, 2016 4 次提交
  3. 12 4月, 2016 2 次提交
  4. 07 4月, 2016 3 次提交
    • N
      vz: support boot order in domain xml dump · 032c5bf9
      Nikolay Shirokovskiy 提交于
      As usual we try to deal correctly with vz domains that were
      created by other means and thus can have all range of SDK domain
      parameters. If vz domain boot order can't be represented
      in libvirt os boot section let's give warning and make os boot section
      represent SDK to some extent.
      
      1. Os boot section supports up to 4 boot devices. Here we just
      cut SDK boot order up to this limit. Not too bad.
      
      2. If there is a floppy in boot order let's just skip it.
      Anyway we don't show it in the xml. Not too bad too.
      
      3. SDK boot order with unsupported disks order. Say we have "hdb, hda" in
      SDK. We can not present this thru os boot order. Well let's just
      give warning but leave double <boot dev='hd'/> in xml. It's
      kind of misleading but we warn you!
      
      SDK boot order have an extra parameters 'inUse' and 'sequenceIndex'
      which makes our task more complicated. In realitly however 'inUse'
      is always on and 'sequenceIndex' is not less than 'boot position index'
      which simplifies out task back again! To be on a safe side let's explicitly
      check for this conditions!
      
      We have another exercise here. We want to check for unrepresentable
      condition 3 (see above). The tricky part is that in contrast to
      domains defined thru this driver 3-rd party defined domains can
      have device ordering different from default. Thus we need
      some id to check that N-th boot disk of os boot section is same as
      N-th boot disk of SDK boot. This is what prlsdkBootOrderCheck
      for. It uses disks sources paths as id for disks and iface names
      for network devices.
      Signed-off-by: NNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
      Signed-off-by: NMaxim Nestratov <mnestratov@virtuozzo.com>
      032c5bf9
    • N
      vz: fix disk order on load domain · bc281f7d
      Nikolay Shirokovskiy 提交于
      We want to report boot order in dumpxml for vz domains.
      Thus we want disks devices to be sorted in output compatible with boot
      ordering specification. So let's just use virDomainDiskInsert
      which makes appropriate sorting.
      Signed-off-by: NNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
      bc281f7d
    • N
      vz: support boot order specification on define domain · 497dcafc
      Nikolay Shirokovskiy 提交于
      The patch makes some refactoring of the existing code. Current boot order spec code
      makes very simple thing in somewhat obscure way. In case of VMs
      it sets the first hdd as the only bootable device. In case of CTs it
      doesn't touch the boot order at all if one of the filesystems is mounted to root.
      Otherwise like in case of VMs it sets the first hdd as the only bootable
      device and additionally sets this device mount point to root. Refactored
      code makes all this explicit.
      
      The actual boot order support is simple. Common libvirt domain xml parsing
      code makes the exact ordering of disks devices as described in docs
      for boot ordering (disks are sorted by bus order first, device target
      second. Bus order is the order of disk buses appearence in original
      xml. Device targets order is alphabetical). We add devices in the
      same order and SDK designates device indexes sequentially for each
      device type. Thus device index is equal to its boot index. For
      example N-th cdrom in boot specification refers to sdk cdrom with
      it's device index N.
      
      If there is no boot spec in xml the parsing code will add <boot dev='hdd'>
      for HVMs automatically and we backward compatibly set fist hdd as
      bootable.
      Signed-off-by: NNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
      Signed-off-by: NMaxim Nestratov <mnestratov@virtuozzo.com>
      497dcafc
  5. 21 3月, 2016 1 次提交
    • C
      domain: Add virDomainDefAddImplicitDevices · 9a423d18
      Cole Robinson 提交于
      It's just a combination of AddImplicitControllers, and AddConsoleCompat.
      Every caller that wants ImplicitControllers also wants the ConsoleCompat
      AFAICT, so lump them together. We also need it for future patches.
      9a423d18
  6. 17 3月, 2016 5 次提交
  7. 14 3月, 2016 1 次提交
    • M
      vz: fix active domain listing · 8a744987
      Maxim Nestratov 提交于
      Since commit 9c14a9ab we have broken active domain listing
      because reworked prlsdkLoadDomain doesn't set dom->def->id
      propely. It just looses it when a new def structure is set.
      Now we make prlsdkConvertDomainState function return void
      and move calling it after an old dom->def is replaces with
      a new one within prlsdkLoadDomain function.
      Signed-off-by: NMaxim Nestratov <mnestratov@virtuozzo.com>
      8a744987
  8. 01 3月, 2016 1 次提交
  9. 12 2月, 2016 4 次提交
    • M
      vz: fix race condition when adding domain to domains list · 9c14a9ab
      Mikhail Feoktistov 提交于
      Race condition:
      User calls defineXML to create new instance.
      The main thread from vzDomainDefineXMLFlags() creates new instance by prlsdkCreateVm.
      Then this thread calls prlsdkAddDomain to add new domain to domains list.
      The second thread receives notification from hypervisor that new VM was created.
      It calls prlsdkHandleVmAddedEvent() and also tries to add new domain to domains list.
      These two threads call virDomainObjListFindByUUID() from prlsdkAddDomain() and don't find new domain.
      So they add two domains with the same uuid to domains list.
      
      This fix splits logic of prlsdkAddDomain() into two functions.
      1. vzNewDomain() creates new empty domain in domains list with the specific uuid.
      2. prlsdkLoadDomain() add data from VM to domain object.
      
      New algorithm for creating an instance:
      In vzDomainDefineXMLFlags() we add new domain to domain list by calling vzNewDomain()
      and only after that we call CreateVm() to create VM.
      It means that we "reserve" domain object with the specific uuid.
      After creation of new VM we add info from this VM
      to reserved domain object by calling prlsdkLoadDomain().
      
      Before this patch prlsdkLoadDomain() worked in 2 different cases:
      1. It creates and initializes new domain. Then updates it from sdk handle.
      2. It updates existed domain from sdk handle.
      In this patch we remove code which creates new domain from LoadDomain()
      and move it to vzNewDomain().
      Now prlsdkLoadDomain() only updates domain from skd handle.
      
      In notification handler prlsdkHandleVmAddedEvent() we check
      the existence of a domain and if it doesn't exist we add new domain by calling
      vzNewDomain() and load info from sdk handle via prlsdkLoadDomain().
      9c14a9ab
    • M
      vz: fix notification subscription · d5f0cf99
      Mikhail Feoktistov 提交于
      Bug cause:
      Update the domain that is subscribed to hypervisor notification.
      LoadDomain() rewrites notifications fields in vzDomObj structure and makes domain as "unsubscribed".
      Fix:
      Initialize notification fields in vzDomObj only if we create a new domain.
      And do not reinitialize these fields if we update domain (by calling LoadDomain with olddom argument)
      d5f0cf99
    • M
      vz: remove unused struct field · a7b2257e
      Mikhail Feoktistov 提交于
      In commit 7039bb3c we have removed code that saves uuid to vzDomObj.uuid
      So this field is no longer needed.
      a7b2257e
    • M
      vz: make output arguments in prlsdkGetDomainIds as optional · 2286986a
      Mikhail Feoktistov 提交于
      prlsdkGetDomainIds() returns name and uuid for specified instance.
      Now output arguments can be NULL.
      It allows to get only necessary info(name or uuid).
      2286986a
  10. 08 2月, 2016 2 次提交
  11. 26 1月, 2016 1 次提交
  12. 24 12月, 2015 3 次提交
  13. 09 12月, 2015 4 次提交
  14. 27 11月, 2015 1 次提交
  15. 19 11月, 2015 2 次提交
  16. 21 10月, 2015 1 次提交
  17. 15 10月, 2015 1 次提交
  18. 22 9月, 2015 1 次提交
  19. 21 9月, 2015 1 次提交
    • M
      vz: remove error logging from prlsdkUUIDParse · 91c8e75f
      Maxim Nestratov 提交于
      As far as not every call of prlsdkUUIDParse assume correct UUID
      supplied, there is no use to complain about wrong format in it.
      Otherwise our log is flooded with false error messages.
      For instance, calling prlsdkUUIDParse from prlsdkEventsHandler
      works as a filter and in case of uuid absence for event issuer,
      we simply know that we shouldn't continue further processing.
      Instead of error logging for all calls we should explicitly take
      into accaunt where it is called from.
      Signed-off-by: NMaxim Nestratov <mnestratov@virtuozzo.com>
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      91c8e75f
  20. 14 7月, 2015 1 次提交