Adam Litke has uploaded a new change for review.
Change subject: acquire image ns in copy task
......................................................................
acquire image ns in copy task
Change-Id: I93aa381fb6c17c3a71f832f2dd51975a250159f7
Signed-off-by: Adam Litke <alitke(a)redhat.com>
---
M vdsm/storage/sdm/__init__.py
1 file changed, 32 insertions(+), 19 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/69/38769/1
diff --git a/vdsm/storage/sdm/__init__.py b/vdsm/storage/sdm/__init__.py
index aba9a41..8ff5cb5 100644
--- a/vdsm/storage/sdm/__init__.py
+++ b/vdsm/storage/sdm/__init__.py
@@ -19,7 +19,7 @@
#
import logging
-from contextlib import contextmanager
+from contextlib import contextmanager, nested
from .. import resourceManager as rm
from ..resourceFactories import IMAGE_NAMESPACE
@@ -106,27 +106,40 @@
try:
srcDom = sdCache.produce(srcImage['sdUUID'])
dstDom = sdCache.produce(dstImage['sdUUID'])
- srcVol = srcDom.produceVolume(srcImage['imgUUID'],
srcImage['volUUID'])
- dstVol = dstDom.produceVolume(dstImage['imgUUID'],
dstImage['volUUID'])
+ srcImageResourcesNamespace = sd.getNamespace(srcImage['sdUUID'],
+ IMAGE_NAMESPACE)
+ dstImageResourcesNamespace = sd.getNamespace(dstImage['sdUUID'],
+ IMAGE_NAMESPACE)
+ with nested(rmanager.acquireResource(srcImageResourcesNamespace,
+ srcImage['imgUUID'],
+ rm.LockType.shared),
+ rmanager.acquireResource(dstImageResourcesNamespace,
+ dstImage['imgUUID'],
+ rm.LockType.exclusive)):
- srcFormat = volume.fmt2str(srcVol.getFormat())
- dstFormat = volume.fmt2str(dstVol.getFormat())
+ srcVol = srcDom.produceVolume(srcImage['imgUUID'],
+ srcImage['volUUID'])
+ dstVol = dstDom.produceVolume(dstImage['imgUUID'],
+ dstImage['volUUID'])
- parentVol = dstVol.getParentVolume()
- if parentVol is not None:
- backing = volume.getBackingVolumePath(
- dstImage['imgUUID'], parentVol.volUUID)
- backingFormat = volume.fmt2str(parentVol.getFormat())
- else:
- backing = None
- backingFormat = None
+ srcFormat = volume.fmt2str(srcVol.getFormat())
+ dstFormat = volume.fmt2str(dstVol.getFormat())
- log.debug("start qemu convert")
- qemuimg.convert(srcVol.getVolumePath(), dstVol.getVolumePath(),
- vars.task.aborting, srcFormat=srcFormat,
- dstFormat=dstFormat, backing=backing,
- backingFormat=backingFormat)
- dstVol.setLegality(volume.LEGAL_VOL)
+ parentVol = dstVol.getParentVolume()
+ if parentVol is not None:
+ backing = volume.getBackingVolumePath(
+ dstImage['imgUUID'], parentVol.volUUID)
+ backingFormat = volume.fmt2str(parentVol.getFormat())
+ else:
+ backing = None
+ backingFormat = None
+
+ log.debug("start qemu convert")
+ qemuimg.convert(srcVol.getVolumePath(), dstVol.getVolumePath(),
+ vars.task.aborting, srcFormat=srcFormat,
+ dstFormat=dstFormat, backing=backing,
+ backingFormat=backingFormat)
+ dstVol.setLegality(volume.LEGAL_VOL)
except ActionStopped:
raise
except se.StorageException:
--
To view, visit
https://gerrit.ovirt.org/38769
To unsubscribe, visit
https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I93aa381fb6c17c3a71f832f2dd51975a250159f7
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Adam Litke <alitke(a)redhat.com>