Simone Tiraboschi has uploaded a new change for review. Change subject: createImageLinks: recreate if the link exists but it'ss broken ......................................................................
createImageLinks: recreate if the link exists but it'ss broken Recreate the symlink if it exists but it points to a different outdated target. Change-Id: Ia0eb50f57cf6f21496f7a8ef70f80693336ae803 Bug-Url: https://bugzilla.redhat.com/1300749 Signed-off-by: Simone Tiraboschi <stira...@redhat.com> --- M vdsm/storage/blockSD.py M vdsm/storage/fileSD.py 2 files changed, 46 insertions(+), 3 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/37/52937/1 diff --git a/vdsm/storage/blockSD.py b/vdsm/storage/blockSD.py index 2bce63a..6036c5f 100644 --- a/vdsm/storage/blockSD.py +++ b/vdsm/storage/blockSD.py @@ -1161,11 +1161,32 @@ os.symlink(srcVol, dstVol) except OSError as e: if e.errno == errno.EEXIST: - self.log.debug("img run vol already exists: %s", dstVol) + prevVol = os.path.realpath(dstVol) + if prevVol == srcVol: + self.log.debug( + "img run vol already exists '%s' and points to " + "the right target, skipping it" % dstVol + ) + else: + self.log.debug( + "img run vol already exists '%s' but points to a " + "different target %s, recreating it" % ( + dstVol, + prevVol, + ) + ) + try: + os.remove(dstVol) + os.symlink(srcVol, dstVol) + except OSError: + self.log.error( + "Failed to re-create img run vol: %s", + dstVol + ) + raise else: self.log.error("Failed to create img run vol: %s", dstVol) raise - return imgRunDir def activateVolumes(self, imgUUID, volUUIDs): diff --git a/vdsm/storage/fileSD.py b/vdsm/storage/fileSD.py index 21ac276..8823bf2 100644 --- a/vdsm/storage/fileSD.py +++ b/vdsm/storage/fileSD.py @@ -521,7 +521,29 @@ os.symlink(srcImgPath, imgRunDir) except OSError as e: if e.errno == errno.EEXIST: - self.log.debug("img run dir already exists: %s", imgRunDir) + prevPath = os.path.realpath(imgRunDir) + if prevPath == srcImgPath: + self.log.debug( + "img run dir already exists '%s' and points to the " + "right target, skipping it" % imgRunDir + ) + else: + self.log.debug( + "img run dir already exists '%s' but points to a " + "different target %s, recreating it" % ( + imgRunDir, + prevPath, + ) + ) + try: + os.remove(imgRunDir) + os.symlink(srcImgPath, imgRunDir) + except OSError: + self.log.error( + "Failed to re-create img run dir: %s", + imgRunDir + ) + raise else: self.log.error("Failed to create img run dir: %s", imgRunDir) raise -- To view, visit https://gerrit.ovirt.org/52937 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia0eb50f57cf6f21496f7a8ef70f80693336ae803 Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Simone Tiraboschi <stira...@redhat.com> _______________________________________________ vdsm-patches mailing list vdsm-patches@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches