[NEW PATCH] BZ#713823 - We should not fail if deactivateLV failed during block volume creation (via gerrit-bot)
by Igor Lvovsky
New patch submitted by Igor Lvovsky (ilvovsky(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/627
commit 2645f4da93635cbdac74c671ca87cd7e5b8d54da
Author: Igor Lvovsky <ilvovsky(a)redhat.com>
Date: Tue Jun 28 11:11:17 2011 +0300
BZ#713823 - We should not fail if deactivateLV failed during block volume creation
Change-Id: I096a82449d5f48800ac7ba2fa73ea51119acbcd1
diff --git a/vdsm/storage/blockVolume.py b/vdsm/storage/blockVolume.py
index 7398a61..d82b905 100644
--- a/vdsm/storage/blockVolume.py
+++ b/vdsm/storage/blockVolume.py
@@ -158,7 +158,7 @@ class BlockVolume(volume.Volume):
# override size param by parent's size
size = pvol.getSize()
- except se.StorageException, e:
+ except se.StorageException:
cls.log.error("Unexpected error", exc_info=True)
raise
except Exception, e:
@@ -178,7 +178,7 @@ class BlockVolume(volume.Volume):
if os.path.exists(vol_path):
os.unlink(vol_path)
os.symlink(lvm.lvPath(sdUUID, volUUID), vol_path)
- except se.StorageException, e:
+ except se.StorageException:
cls.log.error("Unexpected error", exc_info=True)
raise
except Exception, e:
@@ -199,7 +199,7 @@ class BlockVolume(volume.Volume):
## Create hardlink to template and its meta file
cls.log.info("Request to create snapshot %s/%s of volume %s/%s", imgUUID, volUUID, srcImgUUID, srcVolUUID)
pvol.clone(imageDir, volUUID, volFormat, preallocate)
- except Exception, e:
+ except Exception:
cls.log.error("Unexpected error", exc_info=True)
raise
@@ -212,7 +212,12 @@ class BlockVolume(volume.Volume):
"%s%s" % (TAG_PREFIX_IMAGE, imgUUID,)))
finally:
cls._tagCreateLock.release()
- lvm.deactivateLVs(sdUUID, volUUID)
+
+ try:
+ lvm.deactivateLVs(sdUUID, volUUID)
+ except Exception, e:
+ cls.log.warn("Cannot deactivate new created volume %s/%s %s", sdUUID, volUUID, str(e))
+
vars.task.pushRecovery(task.Recovery("create block volume metadata rollback", "blockVolume", "BlockVolume", "createVolumeMetadataRollback",
[sdUUID, str(offs)]))
# Set metadata and mark volume as legal.
@@ -221,7 +226,7 @@ class BlockVolume(volume.Volume):
size, volume.type2name(volFormat),
volume.type2name(preallocate), voltype,
diskType, desc, volume.LEGAL_VOL)
- except se.StorageException, e:
+ except se.StorageException:
cls.log.error("Unexpected error", exc_info=True)
raise
except Exception, e:
12 years, 9 months
[NEW PATCH] BZ#717225 - Check version consistency only for data SDs. (via gerrit-bot)
by ewarszaw@redhat.com
New patch submitted by Eduardo Warszawski (ewarszaw(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/628
commit e28ddaaf199569c1669e300648626e442afb4b2d
Author: Eduardo Warszawski <ewarszaw(a)redhat.com>
Date: Tue Jun 28 16:34:37 2011 +0300
BZ#717225 - Check version consistency only for data SDs.
Change-Id: I71d692685f53b1834651c6c49f3c30c5a3b95230
diff --git a/vdsm/storage/hsm.py b/vdsm/storage/hsm.py
index 52e3bbd..7fcc618 100644
--- a/vdsm/storage/hsm.py
+++ b/vdsm/storage/hsm.py
@@ -470,7 +470,8 @@ class HSM:
dom.validate()
except:
raise se.StorageDomainAccessError(sdUUID)
- if dom.getVersion() != msdVersion:
+ #If you remove this cndition, remove it from StoragePool.attachSD() too.
+ if dom.isData() and (dom.getVersion() != msdVersion):
raise se.MixedSDVersionError(dom.sdUUID, dom.getVersion(), msd.sdUUID, msdVersion)
vars.task.getExclusiveLock(STORAGE, spUUID)
diff --git a/vdsm/storage/sp.py b/vdsm/storage/sp.py
index 6a4ced5..c377ee4 100644
--- a/vdsm/storage/sp.py
+++ b/vdsm/storage/sp.py
@@ -646,7 +646,8 @@ class StoragePool:
dom = SDF.produce(sdUUID)
dom.acquireClusterLock(self.id)
try:
- if dom.getVersion() != self.masterDomain.getVersion():
+ #If you remove this condition, remove it from public_createStoragePool too.
+ if dom.isData() and (dom.getVersion() != self.masterDomain.getVersion()):
raise se.MixedSDVersionError(dom.sdUUID, dom.getVersion(), self.masterDomain.sdUUID, self.masterDomain.getVersion())
dom.attach(self.spUUID)
domains[sdUUID] = sd.DOM_ATTACHED_STATUS
12 years, 9 months
[NEW PATCH] BZ#716833 - Fix race in metadata offset computation during simultaneously volume creation in block storage domain (via gerrit-bot)
by Igor Lvovsky
New patch submitted by Igor Lvovsky (ilvovsky(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/626
commit a015a5919308b374add65495b1e577ee7de42677
Author: Igor Lvovsky <ilvovsky(a)redhat.com>
Date: Mon Jun 27 21:51:26 2011 +0300
BZ#716833 - Fix race in metadata offset computation during simultaneously volume creation in block storage domain
Change-Id: I94af85026809f3a776f664c88197bdcbe1a1e3bd
diff --git a/vdsm/storage/blockSD.py b/vdsm/storage/blockSD.py
index 6f68d49..214e8a4 100644
--- a/vdsm/storage/blockSD.py
+++ b/vdsm/storage/blockSD.py
@@ -506,7 +506,7 @@ class BlockStorageDomain(sd.StorageDomain):
break
if offset is None:
- self.log.warn("Could not find mapping for lv %s", lv.name)
+ self.log.warn("Could not find mapping for lv %s/%s", self.sdUUID, lv.name)
continue
if size is None:
@@ -533,6 +533,7 @@ class BlockStorageDomain(sd.StorageDomain):
freeSlot = offset + size
+ self.log.debug("Found freeSlot %s in VG %s", freeSlot, self.sdUUID)
return freeSlot
def getVolumeMetadataOffsetFromPvMapping(self, vol_name):
diff --git a/vdsm/storage/blockVolume.py b/vdsm/storage/blockVolume.py
index d2d6044..7398a61 100644
--- a/vdsm/storage/blockVolume.py
+++ b/vdsm/storage/blockVolume.py
@@ -10,6 +10,7 @@
import os.path
import uuid
+import threading
from config import config
import storage_exception as se
@@ -42,6 +43,8 @@ rmanager = rm.ResourceManager.getInstance()
class BlockVolume(volume.Volume):
""" Actually represents a single volume (i.e. part of virtual disk).
"""
+ _tagCreateLock = threading.Lock()
+
def __init__(self, repoPath, sdUUID, imgUUID, volUUID):
self.metaoff = None
volume.Volume.__init__(self, repoPath, sdUUID, imgUUID, volUUID)
@@ -201,12 +204,17 @@ class BlockVolume(volume.Volume):
raise
try:
- offs = mysd.mapMetaOffset(volUUID)
+ try:
+ cls._tagCreateLock.acquire()
+ offs = mysd.mapMetaOffset(volUUID)
+ lvm.addLVTags(sdUUID, volUUID, ("%s%s" % (TAG_PREFIX_MD, offs),
+ "%s%s" % (TAG_PREFIX_PARENT, srcVolUUID,),
+ "%s%s" % (TAG_PREFIX_IMAGE, imgUUID,)))
+ finally:
+ cls._tagCreateLock.release()
+ lvm.deactivateLVs(sdUUID, volUUID)
vars.task.pushRecovery(task.Recovery("create block volume metadata rollback", "blockVolume", "BlockVolume", "createVolumeMetadataRollback",
[sdUUID, str(offs)]))
- lvm.addLVTags(sdUUID, volUUID, ("%s%s" % (TAG_PREFIX_MD, offs),
- "%s%s" % (TAG_PREFIX_PARENT, srcVolUUID,), "%s%s" % (TAG_PREFIX_IMAGE, imgUUID,)))
- lvm.deactivateLVs(sdUUID, volUUID)
# Set metadata and mark volume as legal.
# FIXME: In next version we should remove imgUUID and srcVolUUID, as they are saved on lvm tags
cls.newMetadata([sdUUID, offs], sdUUID, imgUUID, srcVolUUID,
12 years, 9 months
[NEW PATCH] Related to BZ#705297: have a single virEventLoopPure thread (via gerrit-bot)
by Dan Kenigsberg
New patch submitted by Dan Kenigsberg (danken(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/625
commit abd0fcb4a1c2f0ffd7d12e24009104d14bac7a9e
Author: Dan Kenigsberg <danken(a)redhat.com>
Date: Tue Jun 28 11:15:27 2011 +0300
Related to BZ#705297: have a single virEventLoopPure thread
Allowing multiple virEventLoopPure threads causes events being lost.
Change-Id: I7fe238baf10f674eadae6268811b4201c73c7111
diff --git a/vdsm/libvirtconnection.py b/vdsm/libvirtconnection.py
index dbe58ba..676b6db 100644
--- a/vdsm/libvirtconnection.py
+++ b/vdsm/libvirtconnection.py
@@ -11,6 +11,10 @@ import libvirtev
import constants
import traceback
+# Make sure to never reload this module, or you would loose events
+# TODO: make this internal to libvirtev, and make the thread stopable
+libvirtev.virEventLoopPureStart()
+
def __eventCallback(conn, dom, *args):
try:
cif, eventid = args[-1]
@@ -87,7 +91,6 @@ def get(cif=None):
conn = __connections.get(id(cif))
if not conn:
- libvirtev.virEventLoopPureStart()
conn = libvirt.openAuth('qemu:///system', auth, 0)
__connections[id(cif)] = conn
if cif != None:
12 years, 9 months
[NEW PATCH] BZ#678039 vdsmd: use bash assignment properly (via gerrit-bot)
by Dan Kenigsberg
New patch submitted by Dan Kenigsberg (danken(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/624
commit 3c4ae31a3b75346a191ac0b0533e3d7c1de29733
Author: Dan Kenigsberg <danken(a)redhat.com>
Date: Mon Jun 27 22:54:45 2011 +0300
BZ#678039 vdsmd: use bash assignment properly
Bash is not perl.
Change-Id: Ic217f56ac22e14649e1296cae4bff0d36f5a0e68
diff --git a/vdsm/vdsmd b/vdsm/vdsmd
index 488da4e..6b35e23 100755
--- a/vdsm/vdsmd
+++ b/vdsm/vdsmd
@@ -146,7 +146,7 @@ start_needed_srv() {
then
echo "Starting $srv..."
/sbin/service $srv start
- $ret_val=$?
+ ret_val=$?
if [ $ret_val -ne 0 ]
then
log_failure_msg "$prog: Dependent $srv failed to start"
12 years, 10 months
[NEW PATCH] BZ#716705 refuse to start VMs with "unknown" host osname (via gerrit-bot)
by Dan Kenigsberg
New patch submitted by Dan Kenigsberg (danken(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/623
commit 3cfe2b9f15705eec9c749fd173bf5634e8919bde
Author: Dan Kenigsberg <danken(a)redhat.com>
Date: Sun Jun 26 16:54:41 2011 +0300
BZ#716705 refuse to start VMs with "unknown" host osname
If, due to misconfiguration, the host os is an recognizable, refuse to
start new VMs as the os name should be passed to the guest bios.
Change-Id: Ia41ef922d2393acb9b62ff8daed9974f2eb79b4c
diff --git a/vdsm/libvirtvm.py b/vdsm/libvirtvm.py
index 518d7ba..22511e9 100644
--- a/vdsm/libvirtvm.py
+++ b/vdsm/libvirtvm.py
@@ -825,6 +825,9 @@ class LibvirtVm(vm.Vm):
domxml.appendOs()
osd = caps.osversion()
+
+ assert osd['name'] != caps.OSName.UNKNOWN
+
domxml.appendSysinfo(
osname=osd.get('name', ''),
osversion=osd.get('version', '') + '-' + osd.get('release', ''),
12 years, 10 months