[NEW PATCH] Related to BZ#732416 - Fixes to misc.ddWatchCopy() (via gerrit-bot)
Dan Kenigsberg
danken at redhat.com
Sun Sep 11 09:44:03 UTC 2011
New patch submitted by Dan Kenigsberg (danken at redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/876
commit d1efc20ff41d6a12066a42db67089f68cc3708ab
Author: Eduardo Warszawski <ewarszaw at redhat.com>
Date: Mon Aug 29 18:57:28 2011 +0300
Related to BZ#732416 - Fixes to misc.ddWatchCopy()
Change-Id: I76d1a73442092769615c7236a2464cbc57bc3b2b
diff --git a/vdsm/storage/blockVolume.py b/vdsm/storage/blockVolume.py
index a4c61f1..9d2e0d7 100644
--- a/vdsm/storage/blockVolume.py
+++ b/vdsm/storage/blockVolume.py
@@ -268,16 +268,13 @@ class BlockVolume(volume.Volume):
if postZero:
self.prepare(justme=True, rw=True, chainrw=force, setrw=True, force=True)
try:
- # wipe out the whole volume
- idle = config.getfloat('irs', 'idle')
- try:
- misc.ddWatchCopy("/dev/zero", vol_path, vars.task.aborting, idle, int(size),
- recoveryCallback=volume.baseAsyncTasksRollback)
- except se.ActionStopped, e:
- raise e
- except Exception, e:
- self.log.error("Unexpected error", exc_info=True)
- raise se.VolumesZeroingError(vol_path)
+ misc.ddWatchCopy("/dev/zero", vol_path, vars.task.aborting, int(size),
+ recoveryCallback=volume.baseAsyncTasksRollback)
+ except se.ActionStopped, e:
+ raise e
+ except Exception, e:
+ self.log.error("Unexpected error", exc_info=True)
+ raise se.VolumesZeroingError(vol_path)
finally:
self.teardown(self.sdUUID, self.volUUID, justme=True)
diff --git a/vdsm/storage/fileVolume.py b/vdsm/storage/fileVolume.py
index f8f5e98..f6aae79 100644
--- a/vdsm/storage/fileVolume.py
+++ b/vdsm/storage/fileVolume.py
@@ -20,7 +20,6 @@
import os
import uuid
-from config import config
import storage_exception as se
from sdf import StorageDomainFactory as SDF
@@ -128,10 +127,9 @@ class FileVolume(volume.Volume):
vars.task.pushRecovery(task.Recovery("halfbaked volume rollback", "fileVolume", "FileVolume", "halfbakedVolumeRollback",
[vol_path]))
if preallocate == volume.PREALLOCATED_VOL:
- idle = config.getfloat('irs', 'idle')
try:
# ddWatchCopy expects size to be in bytes
- misc.ddWatchCopy("/dev/zero", vol_path, vars.task.aborting, idle, (int(size) * 512))
+ misc.ddWatchCopy("/dev/zero", vol_path, vars.task.aborting, (int(size) * 512))
except se.ActionStopped, e:
raise e
except Exception, e:
diff --git a/vdsm/storage/image.py b/vdsm/storage/image.py
index 09c655c..8e86fdc 100644
--- a/vdsm/storage/image.py
+++ b/vdsm/storage/image.py
@@ -571,7 +571,7 @@ class Image:
try:
dstVol = destDom.produceVolume(imgUUID=imgUUID, volUUID=srcVol.volUUID)
srcSize = srcVol.getVolumeSize(bs=1)
- misc.ddWatchCopy(srcVol.getVolumePath(), dstVol.getVolumePath(), vars.task.aborting, self.idle, size=srcSize)
+ misc.ddWatchCopy(srcVol.getVolumePath(), dstVol.getVolumePath(), vars.task.aborting, size=srcSize)
except se.ActionStopped:
raise
except se.StorageException:
diff --git a/vdsm/storage/misc.py b/vdsm/storage/misc.py
index 8fa8ea2..369774a 100644
--- a/vdsm/storage/misc.py
+++ b/vdsm/storage/misc.py
@@ -359,18 +359,19 @@ def _alignData(length, offset):
def randomStr(strLen):
return "".join(random.sample(string.letters, strLen))
-def ddWatchCopy(src, dst, stop, idle, size, offset=0, recoveryCallback=None):
+def ddWatchCopy(src, dst, stop, size, offset=0, recoveryCallback=None):
"""
Copy src to dst using dd command with stop abilities
"""
+ try:
+ size = int(size)
+ offset = int(offset)
+ except ValueError:
+ raise se.InvalidParameterException("size = %s, offset = %s" % (size, offset))
+
left = size
baseoffset = offset
- try:
- int(size)
- except:
- raise se.InvalidParameterException("size", size)
-
while left > 0:
(iounit, count, iooffset) = _alignData(left, offset)
oflag = None
@@ -406,11 +407,11 @@ def ddWatchCopy(src, dst, stop, idle, size, offset=0, recoveryCallback=None):
return (rc, out, err)
-def ddCopy(src, dst, size=None):
+def ddCopy(src, dst, size):
"""
Copy src to dst using dd command
"""
- return ddWatchCopy(src, dst, None, None, size=size)
+ return ddWatchCopy(src, dst, None, size=size)
def parseBool(var):
diff --git a/vdsm/storage/volume.py b/vdsm/storage/volume.py
index a5e0a1f..aa3f4ae 100644
--- a/vdsm/storage/volume.py
+++ b/vdsm/storage/volume.py
@@ -930,7 +930,7 @@ def qemuConvert(src, dst, src_fmt, dst_fmt, idle, stop, size, dstvolType):
log.debug('(qemuConvert): COPY %s (%s) to %s (%s) START' % (src, src_fmt, dst, dst_fmt))
if src_fmt == "raw" and dst_fmt == "raw" and dstvolType == PREALLOCATED_VOL:
- (rc, out, err) = misc.ddWatchCopy(src=src, dst=dst, stop=stop, idle=idle, size=size,
+ (rc, out, err) = misc.ddWatchCopy(src=src, dst=dst, stop=stop, size=size,
recoveryCallback=baseAsyncTasksRollback)
else:
cmd = constants.CMD_LOWPRIO + [constants.EXT_QEMUIMG, "convert",
More information about the vdsm-patches
mailing list