Change in vdsm[master]: lib: add rebase to qemuImg module
by ykaplan@redhat.com
Yeela Kaplan has uploaded a new change for review.
Change subject: lib: add rebase to qemuImg module
......................................................................
lib: add rebase to qemuImg module
Change-Id: I78e5584e59deaa5c302b1da67f5e3b840f6aa222
Signed-off-by: Yeela Kaplan <ykaplan(a)redhat.com>
---
M lib/vdsm/qemuImg.py
1 file changed, 21 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/29/19229/1
diff --git a/lib/vdsm/qemuImg.py b/lib/vdsm/qemuImg.py
index e9a328c..24d6940 100644
--- a/lib/vdsm/qemuImg.py
+++ b/lib/vdsm/qemuImg.py
@@ -167,3 +167,24 @@
if rc != 0:
raise QImgError(rc, out, err)
+
+
+def rebase(image, backing, format=None, backingFormat=None, unsafe=False):
+ cmd = [_qemuimg.cmd, "rebase"]
+
+ if format:
+ cmd.extend(("-f", format))
+
+ if unsafe:
+ cmd.append("-u")
+
+ cmd.extend(("-b", backing))
+
+ if backingFormat:
+ cmd.extend(("-F", backingFormat))
+
+ cmd.append(image)
+ rc, out, err = utils.execCmd(cmd)
+
+ if rc != 0:
+ raise QImgError(rc, out, err)
--
To view, visit http://gerrit.ovirt.org/19229
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I78e5584e59deaa5c302b1da67f5e3b840f6aa222
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Yeela Kaplan <ykaplan(a)redhat.com>
9 years, 4 months
Change in vdsm[master]: Move fenceNode out of API.py
by smizrahi@redhat.com
Saggi Mizrahi has uploaded a new change for review.
Change subject: Move fenceNode out of API.py
......................................................................
Move fenceNode out of API.py
The actual details of how the response is mangles is part of the
bindings so API.py really doesn't serve a purpose.
This is the first step in a general trend of moving the logic out of
API.py to dedicated modules and move the response mangling to the
binding wrappers.
Change-Id: Idaba551333a0f289abaff11dc113e09c426d591a
Signed-off-by: Saggi Mizrahi <smizrahi(a)redhat.com>
---
M vdsm/API.py
M vdsm/BindingXMLRPC.py
2 files changed, 25 insertions(+), 38 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/91/7191/1
diff --git a/vdsm/API.py b/vdsm/API.py
index 5826d81..4fdc7e7 100644
--- a/vdsm/API.py
+++ b/vdsm/API.py
@@ -37,7 +37,6 @@
from vdsm.define import doneCode, errCode, Kbytes, Mbytes
import caps
from vdsm.config import config
-import fenceAgent
import supervdsm
@@ -972,40 +971,6 @@
APIBase.__init__(self)
# General Host functions
- def fenceNode(self, addr, port, agent, username, password, action,
- secure=False, options=''):
- """Send a fencing command to a remote node.
-
- agent is one of (rsa, ilo, drac5, ipmilan, etc)
- action can be one of (status, on, off, reboot)."""
-
- self.log.debug('fenceNode(addr=%s,port=%s,agent=%s,user=%s,' +
- 'passwd=%s,action=%s,secure=%s,options=%s)', addr, port, agent,
- username, 'XXXX', action, secure, options)
-
- secure = utils.tobool(secure)
- port = int(port)
-
- if action == "status":
- try:
- power = fenceAgent.getFenceStatus(addr, port, agent, username,
- password, secure, options)
-
- return {'status': doneCode,
- 'power': power}
-
- except fenceAgent.FenceStatusCheckError as e:
- return {'status': {'code': 1, 'message': str(e)}}
-
- try:
- fenceAgent.fenceNode(addr, port, agent, username, password, secure,
- options, self._cif.shutdownEvent)
-
- return {'status': doneCode}
-
- except fenceAgent.UnsupportedFencingAgentError:
- return errCode['fenceAgent']
-
def ping(self):
"Ping the server. Useful for tests"
return {'status': doneCode}
diff --git a/vdsm/BindingXMLRPC.py b/vdsm/BindingXMLRPC.py
index 48f4723..7eee29e 100644
--- a/vdsm/BindingXMLRPC.py
+++ b/vdsm/BindingXMLRPC.py
@@ -32,6 +32,8 @@
from vdsm.define import doneCode, errCode
import API
from vdsm.exception import VdsmException
+import fenceAgent
+
try:
from gluster.api import getGlusterMethods
_glusterEnabled = True
@@ -355,9 +357,29 @@
def fenceNode(self, addr, port, agent, username, password, action,
secure=False, options=''):
- api = API.Global()
- return api.fenceNode(addr, port, agent, username, password,
- action, secure, options)
+
+ secure = utils.tobool(secure)
+ port = int(port)
+
+ if action == "status":
+ try:
+ power = fenceAgent.getFenceStatus(addr, port, agent, username,
+ password, secure, options)
+
+ return {'status': doneCode,
+ 'power': power}
+
+ except fenceAgent.FenceStatusCheckError as e:
+ return {'status': {'code': 1, 'message': str(e)}}
+
+ try:
+ fenceAgent.fenceNode(addr, port, agent, username, password, secure,
+ options, self.cif.shutdownEvent)
+
+ return {'status': doneCode}
+
+ except fenceAgent.UnsupportedFencingAgentError:
+ return errCode['fenceAgent']
def setLogLevel(self, level):
api = API.Global()
--
To view, visit http://gerrit.ovirt.org/7191
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Idaba551333a0f289abaff11dc113e09c426d591a
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Saggi Mizrahi <smizrahi(a)redhat.com>
9 years, 4 months
Change in vdsm[master]: vdsm: storage/task.py replace/remove too generic except hand...
by Vinzenz Feenstra
Vinzenz Feenstra has uploaded a new change for review.
Change subject: vdsm: storage/task.py replace/remove too generic except handlers
......................................................................
vdsm: storage/task.py replace/remove too generic except handlers
Change-Id: Ia09dcada40bca3f16f94ad7a6c83e6d7a85ade77
Signed-off-by: Vinzenz Feenstra <vfeenstr(a)redhat.com>
---
M vdsm/storage/task.py
1 file changed, 2 insertions(+), 4 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/51/17751/1
diff --git a/vdsm/storage/task.py b/vdsm/storage/task.py
index 4eff5c1..5b8613f 100644
--- a/vdsm/storage/task.py
+++ b/vdsm/storage/task.py
@@ -173,7 +173,7 @@
self.state = self.unknown
else:
self.state = getattr(self, state)
- except:
+ except AttributeError:
self.state = self.unknown
def value(self):
@@ -751,7 +751,7 @@
self.log.error("Unexpected error", exc_info=True)
try:
getProcPool().fileUtils.cleanupdir(taskDir)
- except:
+ except Exception:
self.log.warning("can't remove temp taskdir %s" % taskDir)
raise se.TaskPersistError("%s persist failed: %s" % (self, e))
# Make sure backup dir doesn't exist
@@ -862,8 +862,6 @@
except Exception as e:
message = unicode(e)
self._setError(e)
- except:
- self._setError()
self.log.debug("Task._run: %s %s %s failed - stopping task",
self, args, kargs)
--
To view, visit http://gerrit.ovirt.org/17751
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia09dcada40bca3f16f94ad7a6c83e6d7a85ade77
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Vinzenz Feenstra <vfeenstr(a)redhat.com>
9 years, 4 months
Change in vdsm[master]: More safe startSpm().
by ewarszaw@redhat.com
Eduardo has uploaded a new change for review.
Change subject: More safe startSpm().
......................................................................
More safe startSpm().
Change-Id: I1e6b32bdf1dd8dc36f6633306d4edef89d542e31
---
M vdsm/storage/sp.py
1 file changed, 16 insertions(+), 19 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/51/451/1
--
To view, visit http://gerrit.ovirt.org/451
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1e6b32bdf1dd8dc36f6633306d4edef89d542e31
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo <ewarszaw(a)redhat.com>
9 years, 4 months
Change in vdsm[master]: [WIP] Add a releaseHostId option to stop the DomainMonitorTh...
by Federico Simoncelli
Federico Simoncelli has uploaded a new change for review.
Change subject: [WIP] Add a releaseHostId option to stop the DomainMonitorThread
......................................................................
[WIP] Add a releaseHostId option to stop the DomainMonitorThread
Bug-Id: https://bugzilla.redhat.com/show_bug.cgi?id=851151
Change-Id: I83458fb4146de7e402606916615533da305bd867
Signed-off-by: Federico Simoncelli <fsimonce(a)redhat.com>
---
M vdsm/storage/domainMonitor.py
M vdsm/storage/sp.py
2 files changed, 19 insertions(+), 9 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/81/7581/1
diff --git a/vdsm/storage/domainMonitor.py b/vdsm/storage/domainMonitor.py
index 95e2f7b..c1ec5a9 100644
--- a/vdsm/storage/domainMonitor.py
+++ b/vdsm/storage/domainMonitor.py
@@ -84,14 +84,14 @@
# The domain should be added only after it succesfully started
self._domains[sdUUID] = domainThread
- def stopMonitoring(self, sdUUID):
+ def stopMonitoring(self, sdUUID, releaseHostId=False):
# The domain monitor issues events that might become raceful if
# stopMonitoring doesn't stop until the thread exits.
# Eg: when a domain is detached the domain monitor is stopped and
# the host id is released. If the monitor didn't actually exit it
# might respawn a new acquire host id.
try:
- self._domains[sdUUID].stop()
+ self._domains[sdUUID].stop(releaseHostId=releaseHostId)
except KeyError:
return
@@ -100,13 +100,15 @@
def getStatus(self, sdUUID):
return self._domains[sdUUID].getStatus()
- def close(self):
+ def close(self, releaseHostId=False):
for sdUUID in self._domains.keys():
- self.stopMonitoring(sdUUID)
+ self.stopMonitoring(sdUUID, releaseHostId=releaseHostId)
class DomainMonitorThread(object):
log = logging.getLogger('Storage.DomainMonitorThread')
+
+ RELEASE_HOSTID_DEFAULT = False
def __init__(self, sdUUID, hostId, interval):
self.thread = Thread(target=self._monitorLoop)
@@ -121,16 +123,20 @@
self.nextStatus = DomainMonitorStatus()
self.isIsoDomain = None
self.lastRefresh = time()
+ self.releaseHostId = self.RELEASE_HOSTID_DEFAULT
self.refreshTime = \
config.getint("irs", "repo_stats_cache_refresh_timeout")
def start(self):
self.thread.start()
- def stop(self, wait=True):
+ def stop(self, wait=True, releaseHostId):
+ self.releaseHostId = releaseHostId
+
self.stopEvent.set()
if wait:
self.thread.join()
+
self.domain = None
def getStatus(self):
@@ -151,13 +157,17 @@
# If this is an ISO domain we didn't acquire the host id and releasing
# it is superfluous.
- if not self.isIsoDomain:
+ if not self.isIsoDomain and self.releaseHostId:
try:
self.domain.releaseHostId(self.hostId, unused=True)
except:
self.log.debug("Unable to release the host id %s for domain "
"%s", self.hostId, self.sdUUID, exc_info=True)
+ # Resetting the releaseHostId value to its default just to be sure in
+ # case in the future we want to recycle the DomainMonitor objects.
+ self.releaseHostId = self.RELEASE_HOSTID_DEFAULT
+
def _monitorDomain(self):
self.nextStatus.clear()
diff --git a/vdsm/storage/sp.py b/vdsm/storage/sp.py
index 40de20a..e8c59f3 100644
--- a/vdsm/storage/sp.py
+++ b/vdsm/storage/sp.py
@@ -647,8 +647,8 @@
@unsecured
- def stopMonitoringDomains(self):
- self.domainMonitor.close()
+ def stopMonitoringDomains(self, releaseHostId=False):
+ self.domainMonitor.close(releaseHostId=releaseHostId)
return True
@@ -675,7 +675,7 @@
if os.path.exists(self.poolPath):
fileUtils.cleanupdir(self.poolPath)
- self.stopMonitoringDomains()
+ self.stopMonitoringDomains(releaseHostId=True)
return True
--
To view, visit http://gerrit.ovirt.org/7581
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I83458fb4146de7e402606916615533da305bd867
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Federico Simoncelli <fsimonce(a)redhat.com>
9 years, 4 months
Change in vdsm[master]: multipath: Remove unused 'deduceType'
by ykaplan@redhat.com
Yeela Kaplan has uploaded a new change for review.
Change subject: multipath: Remove unused 'deduceType'
......................................................................
multipath: Remove unused 'deduceType'
Change-Id: I37a94c3d67641f1c78d8fbecd63cbf1480c6e1b0
Signed-off-by: Yeela Kaplan <ykaplan(a)redhat.com>
---
M vdsm/storage/multipath.py
1 file changed, 0 insertions(+), 7 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/63/13363/1
diff --git a/vdsm/storage/multipath.py b/vdsm/storage/multipath.py
index 94801ca..5fdaa27 100644
--- a/vdsm/storage/multipath.py
+++ b/vdsm/storage/multipath.py
@@ -184,13 +184,6 @@
raise se.MultipathRestartError()
-def deduceType(a, b):
- if a == b:
- return a
- else:
- return DEV_MIXED
-
-
def getDeviceBlockSizes(dev):
devName = os.path.basename(dev)
logical = int(file(os.path.join("/sys/block/", devName,
--
To view, visit http://gerrit.ovirt.org/13363
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I37a94c3d67641f1c78d8fbecd63cbf1480c6e1b0
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Yeela Kaplan <ykaplan(a)redhat.com>
9 years, 4 months
Change in vdsm[master]: Adding monitorDomains.
by ewarszaw@redhat.com
Eduardo has uploaded a new change for review.
Change subject: Adding monitorDomains.
......................................................................
Adding monitorDomains.
Making repoStats pool independent.
Change-Id: I9f148764ac030730c93bfd9c8da25a7ea434dc33
Signed-off-by: Eduardo <ewarszaw(a)redhat.com>
---
M vdsm/storage/hsm.py
1 file changed, 19 insertions(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/74/14674/1
diff --git a/vdsm/storage/hsm.py b/vdsm/storage/hsm.py
index d3e1beb..3fb0c30 100644
--- a/vdsm/storage/hsm.py
+++ b/vdsm/storage/hsm.py
@@ -40,6 +40,7 @@
from vdsm.config import config
import sp
+import domainMonitor
import sd
import blockSD
import nfsSD
@@ -93,6 +94,7 @@
QEMU_READABLE_TIMEOUT = 30
+HSM_DOM_MON_LOCK = "HsmDomainMonitorLock"
def public(f=None, **kwargs):
if f is None:
@@ -395,6 +397,9 @@
name="storageRefresh")
storageRefreshThread.daemon = True
storageRefreshThread.start()
+
+ monitorInterval = config.getint('irs', 'sd_health_check_delay')
+ self.domainMonitor = domainMonitor.DomainMonitor(monitorInterval)
def _hsmSchedule(self, name, func, *args):
self.taskMng.scheduleJob("hsm", self.tasksDir, vars.task,
@@ -934,7 +939,10 @@
"spUUID=%s, msdUUID=%s, masterVersion=%s, hostID=%s, "
"scsiKey=%s" % (spUUID, msdUUID, masterVersion,
hostID, scsiKey)))
- return self._connectStoragePool(spUUID, hostID, scsiKey, msdUUID,
+ with rmanager.acquireResource(STORAGE, HSM_DOM_MON_LOCK,
+ rm.LockType.exclusive):
+ self.domainMonitor.close()
+ return self._connectStoragePool(spUUID, hostID, scsiKey, msdUUID,
masterVersion, options)
def _connectStoragePool(self, spUUID, hostID, scsiKey, msdUUID,
@@ -3578,3 +3586,13 @@
result[d] = repo_stats[d]['result']
return result
+
+ @public
+ def monitorDomains(self, sdUUIDs, hostID, options=None):
+ with rmanager.acquireResource(STORAGE, HSM_DOM_MON_LOCK,
+ rm.LockType.exclusive):
+ if self.pools:
+ raise se.StoragePoolConnected()
+ self.domainMonitor.close()
+ for sdUUID in sdUUIDs:
+ self.domainMonitor.startMonitoring(sdUUID, hostId)
--
To view, visit http://gerrit.ovirt.org/14674
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9f148764ac030730c93bfd9c8da25a7ea434dc33
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo <ewarszaw(a)redhat.com>
9 years, 4 months
Change in vdsm[master]: mount: Reassign mount specification in case of backup option
by ykaplan@redhat.com
Yeela Kaplan has uploaded a new change for review.
Change subject: mount: Reassign mount specification in case of backup option
......................................................................
mount: Reassign mount specification in case of backup option
When using glusterfs volumes the backup option
'backupvolfile-server' allows mount to an alternative volume
when mount source not available.
Change-Id: I3166c6863dffa297bc0adcdeb4c22f810d18de8e
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=922744
Signed-off-by: Yeela Kaplan <ykaplan(a)redhat.com>
---
M vdsm/storage/mount.py
M vdsm/storage/storageServer.py
2 files changed, 44 insertions(+), 20 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/34/16534/1
diff --git a/vdsm/storage/mount.py b/vdsm/storage/mount.py
index 90cacc7..8cade18 100644
--- a/vdsm/storage/mount.py
+++ b/vdsm/storage/mount.py
@@ -187,6 +187,15 @@
raise OSError(errno.ENOENT, 'device %s not mounted' % device)
+def _getRecord(spec, file):
+ for record in _iterMountRecords():
+ if (record.fs_spec == spec and record.fs_file == file):
+ return record
+
+ raise OSError(errno.ENOENT,
+ "Mount of `%s` at `%s` does not exist" % (spec, file))
+
+
class Mount(object):
def __init__(self, fs_spec, fs_file):
self.fs_spec = normpath(fs_spec)
@@ -261,14 +270,7 @@
return True
def getRecord(self):
- for record in _iterMountRecords():
- if (record.fs_spec == self.fs_spec and
- record.fs_file == self.fs_file):
- return record
-
- raise OSError(errno.ENOENT,
- "Mount of `%s` at `%s` does not exist" %
- (self.fs_spec, self.fs_file))
+ return _getRecord(self.fs_spec, self.fs_file)
def __repr__(self):
return ("<Mount fs_spec='%s' fs_file='%s'>" %
diff --git a/vdsm/storage/storageServer.py b/vdsm/storage/storageServer.py
index 023f607..515ebd9 100644
--- a/vdsm/storage/storageServer.py
+++ b/vdsm/storage/storageServer.py
@@ -197,14 +197,14 @@
self._remotePath.replace("_",
"__").replace("/", "_"))
- def connect(self):
+ def createConnection(self):
if self._mount.isMounted():
return
fileUtils.createdir(self._getLocalPath())
try:
- self._mount.mount(self.options, self._vfsType)
+ self._mount.mount(self.options, self.vfsType)
except MountError as e:
self.log.error("Mount failed: %s", e, exc_info=True)
try:
@@ -214,17 +214,21 @@
self._getLocalPath(), exc_info=True)
raise e
- else:
+ def validateConnection(self):
+ try:
+ fileSD.validateDirAccess(
+ self.getMountObj().getRecord().fs_file)
+ except se.StorageServerAccessPermissionError as e:
try:
- fileSD.validateDirAccess(
- self.getMountObj().getRecord().fs_file)
- except se.StorageServerAccessPermissionError as e:
- try:
- self.disconnect()
- except OSError:
- self.log.warn("Error while disconnecting after access"
- "problem", exc_info=True)
- raise e
+ self.disconnect()
+ except OSError:
+ self.log.warn("Error while disconnecting after access"
+ "problem", exc_info=True)
+ raise e
+
+ def connect(self):
+ self.createConnection()
+ self.validateConnection()
def isConnected(self):
return self._mount.isMounted()
@@ -255,6 +259,24 @@
def getLocalPathBase(cls):
return os.path.join(MountConnection.getLocalPathBase(), "glusterSD")
+ def updateBackup(self):
+ if self.options and not self.isConnected():
+ for opt in self.options.split(','):
+ if opt.strip().startswith("backupvolfile-server"):
+ backupSpec = opt.split('=', 1)[1].strip()
+ try:
+ mount._getRecord(backupSpec, self._mount.fs_file)
+ except OSError as e:
+ self.log.warning("Mount of backup failed: %s", e)
+ else:
+ self._mount.fs_spec = backupSpec
+ return
+
+ def connect(self):
+ self.createConnection()
+ self.updateBackup()
+ self.validateConnection()
+
class NFSConnection(object):
DEFAULT_OPTIONS = ["soft", "nosharecache"]
--
To view, visit http://gerrit.ovirt.org/16534
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3166c6863dffa297bc0adcdeb4c22f810d18de8e
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Yeela Kaplan <ykaplan(a)redhat.com>
9 years, 4 months
Change in vdsm[master]: More precise exception when multipath failed.
by ewarszaw@redhat.com
Eduardo has uploaded a new change for review.
Change subject: More precise exception when multipath failed.
......................................................................
More precise exception when multipath failed.
In spite that any OSError is translated to ENODEV in devicemapper,
the complete info is needed.
Related to BZ#965184.
Change-Id: I1b87e8e91b838db2c8a98c9afbbc998e8f4c792a
Signed-off-by: Eduardo <ewarszaw(a)redhat.com>
---
M vdsm/storage/devicemapper.py
1 file changed, 4 insertions(+), 5 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/45/17145/1
diff --git a/vdsm/storage/devicemapper.py b/vdsm/storage/devicemapper.py
index 451c736..ff1fb7a 100644
--- a/vdsm/storage/devicemapper.py
+++ b/vdsm/storage/devicemapper.py
@@ -34,11 +34,10 @@
devlinkPath = DMPATH_FORMAT % deviceMultipathName
try:
devStat = os.stat(devlinkPath)
- except OSError:
- raise OSError(errno.ENODEV, "Could not find dm device named `%s`" %
- deviceMultipathName)
-
- return "dm-%d" % os.minor(devStat.st_rdev)
+ except OSError as e:
+ raise OSError(errno.ENODEV, "%s: %s" % (deviceMultipathName, e))
+ else:
+ return "dm-%d" % os.minor(devStat.st_rdev)
def findDev(major, minor):
--
To view, visit http://gerrit.ovirt.org/17145
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1b87e8e91b838db2c8a98c9afbbc998e8f4c792a
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo <ewarszaw(a)redhat.com>
9 years, 4 months
Change in vdsm[master]: Avoid hsm image deletions.
by ewarszaw@redhat.com
Eduardo has uploaded a new change for review.
Change subject: Avoid hsm image deletions.
......................................................................
Avoid hsm image deletions.
This code was introduced to fix BZ#560389.
The bug was in Image.delete() which was already removed.
Related to BZ#965184.
Change-Id: Ie1ec2ea8793a4ad63453559bc5f663b65f9b9336
Signed-off-by: Eduardo <ewarszaw(a)redhat.com>
---
M vdsm/storage/blockSD.py
M vdsm/storage/fileSD.py
M vdsm/storage/sd.py
3 files changed, 0 insertions(+), 24 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/93/17193/1
diff --git a/vdsm/storage/blockSD.py b/vdsm/storage/blockSD.py
index 72b3ef0..6507cbf 100644
--- a/vdsm/storage/blockSD.py
+++ b/vdsm/storage/blockSD.py
@@ -416,7 +416,6 @@
# _extendlock is used to prevent race between
# VG extend and LV extend.
self._extendlock = threading.Lock()
- self.imageGarbageCollector()
self._registerResourceNamespaces()
self._lastUncachedSelftest = 0
diff --git a/vdsm/storage/fileSD.py b/vdsm/storage/fileSD.py
index 1651825..0042aab 100644
--- a/vdsm/storage/fileSD.py
+++ b/vdsm/storage/fileSD.py
@@ -165,7 +165,6 @@
if not self.oop.fileUtils.pathExists(self.metafile):
raise se.StorageDomainMetadataNotFound(sdUUID, self.metafile)
- self.imageGarbageCollector()
self._registerResourceNamespaces()
@property
@@ -515,20 +514,6 @@
mount.getMountFromTarget(self.mountpoint).umount()
raise se.FileStorageDomainStaleNFSHandle()
raise
-
- def imageGarbageCollector(self):
- """
- Image Garbage Collector
- remove the remnants of the removed images (they could be left sometimes
- (on NFS mostly) due to lazy file removal
- """
- removedPattern = os.path.join(self.domaindir, sd.DOMAIN_IMAGES,
- sd.REMOVED_IMAGE_PREFIX + '*')
- removedImages = self.oop.glob.glob(removedPattern)
- self.log.debug("Removing remnants of deleted images %s" %
- removedImages)
- for imageDir in removedImages:
- self.oop.fileUtils.cleanupdir(imageDir)
def templateRelink(self, imgUUID, volUUID):
"""
diff --git a/vdsm/storage/sd.py b/vdsm/storage/sd.py
index fd79059..c764d2d 100644
--- a/vdsm/storage/sd.py
+++ b/vdsm/storage/sd.py
@@ -786,11 +786,3 @@
def isData(self):
return self.getMetaParam(DMDK_CLASS) == DATA_DOMAIN
-
- def imageGarbageCollector(self):
- """
- Image Garbage Collector
- remove the remnants of the removed images (they could be left sometimes
- (on NFS mostly) due to lazy file removal
- """
- pass
--
To view, visit http://gerrit.ovirt.org/17193
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie1ec2ea8793a4ad63453559bc5f663b65f9b9336
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Eduardo <ewarszaw(a)redhat.com>
9 years, 4 months