Yeela Kaplan has uploaded a new change for review.
Change subject: image: Return the new volume after merge
......................................................................
image: Return the new volume after merge
Create of new volume in case of raw base volume,
causes us to work on a stale object when shrinking
the merged volume.
Returning the volume object in other two scenarios in
order to protect us from changes made to the volume
object in the future.
Change-Id: I5b0969c3144b51ff22a7f5eb756563cf178ffb36
Bug-Url:
https://bugzilla.redhat.com/show_bug.cgi?id=1015071
Signed-off-by: Yeela Kaplan <ykaplan(a)redhat.com>
---
M vdsm/storage/image.py
1 file changed, 7 insertions(+), 7 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/83/19883/1
diff --git a/vdsm/storage/image.py b/vdsm/storage/image.py
index da3e42d..785f379 100644
--- a/vdsm/storage/image.py
+++ b/vdsm/storage/image.py
@@ -881,7 +881,7 @@
chain.remove(srcVolParams['volUUID'])
self.__teardownSubChain(sdDom.sdUUID, srcVolParams['imgUUID'], chain)
- return chain
+ return chain, srcVol
def _baseCowVolumeMerge(self, sdDom, srcVolParams, volParams, newSize,
chain):
@@ -951,7 +951,7 @@
chain.remove(srcVolParams['volUUID'])
self.__teardownSubChain(sdDom.sdUUID, srcVolParams['imgUUID'], chain)
- return chain
+ return chain, srcVol
def _baseRawVolumeMerge(self, sdDom, srcVolParams, volParams, chain):
"""
@@ -1002,8 +1002,8 @@
# Step 3: Rename successor as to _remove_me__successor
tmpUUID = self.deletedVolumeName(srcVol.volUUID)
- # Step 4: Rename successor_MERGE to successor
srcVol.rename(tmpUUID)
+ # Step 4: Rename successor_MERGE to successor
newVol.rename(srcVolParams['volUUID'])
# Step 5: Rebase children 'unsafely' on top of new volume
@@ -1025,7 +1025,7 @@
vol in chain if srcVol.volUUID != srcVolParams['volUUID']]
rmChain.append(tmpUUID)
- return rmChain
+ return rmChain, newVol
def subChainSizeCalc(self, ancestor, successor, vols):
"""
@@ -1094,7 +1094,7 @@
# The ancestor isn't a base volume of the chain.
self.log.info("Internal volume merge: src = %s dst = %s",
srcVol.getVolumePath(), dstVol.getVolumePath())
- chainToRemove = self._internalVolumeMerge(
+ chainToRemove, srcVol = self._internalVolumeMerge(
sdDom, srcVolParams, volParams, reqSize, chain)
# The ancestor is actually a base volume of the chain.
# We have 2 cases here:
@@ -1103,13 +1103,13 @@
elif volParams['volFormat'] == volume.RAW_FORMAT:
self.log.info("merge with convert: src = %s dst = %s",
srcVol.getVolumePath(), dstVol.getVolumePath())
- chainToRemove = self._baseRawVolumeMerge(
+ chainToRemove, srcVol = self._baseRawVolumeMerge(
sdDom, srcVolParams, volParams,
[vols[vName] for vName in chain])
else:
self.log.info("4 steps merge: src = %s dst = %s",
srcVol.getVolumePath(), dstVol.getVolumePath())
- chainToRemove = self._baseCowVolumeMerge(
+ chainToRemove, srcVol = self._baseCowVolumeMerge(
sdDom, srcVolParams, volParams, reqSize, chain)
# This is unrecoverable point, clear all recoveries
--
To view, visit
http://gerrit.ovirt.org/19883
To unsubscribe, visit
http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I5b0969c3144b51ff22a7f5eb756563cf178ffb36
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Yeela Kaplan <ykaplan(a)redhat.com>