[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