[master 3/4] Retry interruptible calls

dashea installerbot-noreply at redhat.com
Tue Jun 23 14:54:02 UTC 2015


From: David Shea <dshea at redhat.com>

Redefine open to a wrapper that retries open, and wrap a call to
os.mknod.
---
 blivet/arch.py            | 1 +
 blivet/blivet.py          | 1 +
 blivet/devicelibs/edd.py  | 1 +
 blivet/devices/disk.py    | 1 +
 blivet/devices/lib.py     | 1 +
 blivet/devices/md.py      | 1 +
 blivet/devices/storage.py | 1 +
 blivet/devicetree.py      | 1 +
 blivet/fcoe.py            | 1 +
 blivet/flags.py           | 2 ++
 blivet/formats/fslib.py   | 2 ++
 blivet/mounts.py          | 1 +
 blivet/osinstall.py       | 3 ++-
 blivet/populator.py       | 1 +
 blivet/udev.py            | 1 +
 blivet/util.py            | 5 +++++
 blivet/zfcp.py            | 1 +
 17 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/blivet/arch.py b/blivet/arch.py
index ca40832..7759963 100644
--- a/blivet/arch.py
+++ b/blivet/arch.py
@@ -35,6 +35,7 @@
 
 from .flags import flags
 from .storage_log import log_exception_info
+from .util import open  # pylint: disable=redefined-builtin
 
 import logging
 log = logging.getLogger("blivet")
diff --git a/blivet/blivet.py b/blivet/blivet.py
index 306a479..cc9607f 100644
--- a/blivet/blivet.py
+++ b/blivet/blivet.py
@@ -53,6 +53,7 @@
 from . import zfcp
 from . import devicefactory
 from . import get_bootloader, getSysroot, shortProductName, __version__
+from .util import open  # pylint: disable=redefined-builtin
 
 from .i18n import _
 
diff --git a/blivet/devicelibs/edd.py b/blivet/devicelibs/edd.py
index 7c99bb1..71fb271 100644
--- a/blivet/devicelibs/edd.py
+++ b/blivet/devicelibs/edd.py
@@ -28,6 +28,7 @@
 import struct
 
 from .. import util
+from ..util import open # pylint: disable=redefined-builtin
 
 log = logging.getLogger("blivet")
 
diff --git a/blivet/devices/disk.py b/blivet/devices/disk.py
index e2b9dee..7b3bfdd 100644
--- a/blivet/devices/disk.py
+++ b/blivet/devices/disk.py
@@ -30,6 +30,7 @@
 from .. import udev
 from ..size import Size
 from ..tasks import availability
+from ..util import open # pylint: disable=redefined-builtin
 
 from ..fcoe import fcoe
 
diff --git a/blivet/devices/lib.py b/blivet/devices/lib.py
index 14e9501..5faada5 100644
--- a/blivet/devices/lib.py
+++ b/blivet/devices/lib.py
@@ -23,6 +23,7 @@
 from .. import errors
 from .. import udev
 from ..size import Size
+from ..util import open # pylint: disable=redefined-builtin
 
 LINUX_SECTOR_SIZE = Size(512)
 
diff --git a/blivet/devices/md.py b/blivet/devices/md.py
index 513d2dd..3291e71 100644
--- a/blivet/devices/md.py
+++ b/blivet/devices/md.py
@@ -33,6 +33,7 @@
 from .. import udev
 from ..size import Size
 from ..tasks import availability
+from ..util import open # pylint: disable=redefined-builtin
 
 import logging
 log = logging.getLogger("blivet")
diff --git a/blivet/devices/storage.py b/blivet/devices/storage.py
index e63c7f9..525db63 100644
--- a/blivet/devices/storage.py
+++ b/blivet/devices/storage.py
@@ -31,6 +31,7 @@
 from .. import udev
 from ..formats import getFormat
 from ..size import Size
+from ..util import open # pylint: disable=redefined-builtin
 
 import logging
 log = logging.getLogger("blivet")
diff --git a/blivet/devicetree.py b/blivet/devicetree.py
index 3349569..6392b65 100644
--- a/blivet/devicetree.py
+++ b/blivet/devicetree.py
@@ -35,6 +35,7 @@
 from .devicelibs import edd
 from . import udev
 from . import util
+from .util import open  # pylint: disable=redefined-builtin
 from .flags import flags
 from .populator import Populator
 from .storage_log import log_method_call, log_method_return
diff --git a/blivet/fcoe.py b/blivet/fcoe.py
index a7d7a4c..861e412 100644
--- a/blivet/fcoe.py
+++ b/blivet/fcoe.py
@@ -20,6 +20,7 @@
 import os
 from . import udev
 from . import util
+from .util import open  # pylint: disable=redefined-builtin
 import logging
 import time
 from .i18n import _
diff --git a/blivet/flags.py b/blivet/flags.py
index 0ff1c96..7c0319c 100644
--- a/blivet/flags.py
+++ b/blivet/flags.py
@@ -22,6 +22,8 @@
 import shlex
 import selinux
 
+from .util import open  # pylint: disable=redefined-builtin
+
 class Flags(object):
     def __init__(self):
         #
diff --git a/blivet/formats/fslib.py b/blivet/formats/fslib.py
index 618c15b..a0e419d 100644
--- a/blivet/formats/fslib.py
+++ b/blivet/formats/fslib.py
@@ -21,6 +21,8 @@
 #                    David Cantrell <dcantrell at redhat.com>
 #                    Anne Mulhern <amulhern at redhat.com>
 
+from ..util import open # pylint: disable=redefined-builtin
+
 kernel_filesystems = []
 nodev_filesystems = []
 
diff --git a/blivet/mounts.py b/blivet/mounts.py
index a7763cf..8e32220 100644
--- a/blivet/mounts.py
+++ b/blivet/mounts.py
@@ -21,6 +21,7 @@
 #
 from collections import defaultdict
 from . import util
+from .util import open  # pylint: disable=redefined-builtin
 from .devicelibs import btrfs
 
 import logging
diff --git a/blivet/osinstall.py b/blivet/osinstall.py
index 1c63302..7608bf6 100644
--- a/blivet/osinstall.py
+++ b/blivet/osinstall.py
@@ -28,6 +28,7 @@
 
 from . import util
 from . import getSysroot, getTargetPhysicalRoot, errorHandler, ERROR_RAISE
+from .util import open  # pylint: disable=redefined-builtin
 
 from .storage_log import log_exception_info
 from .devices import FileDevice, NFSDevice, NoDevice, OpticalDevice, NetworkStorageDevice, DirectoryDevice
@@ -644,7 +645,7 @@ def mkDevRoot(self):
         dev = "%s/%s" % (getSysroot(), root.path)
         if not os.path.exists("%s/dev/root" %(getSysroot(),)) and os.path.exists(dev):
             rdev = os.stat(dev).st_rdev
-            os.mknod("%s/dev/root" % (getSysroot(),), stat.S_IFBLK | 0o600, rdev)
+            util.eintr_retry_call(os.mknod, "%s/dev/root" % (getSysroot(),), stat.S_IFBLK | 0o600, rdev)
 
     @property
     def swapDevices(self):
diff --git a/blivet/populator.py b/blivet/populator.py
index d86fa39..3ff6f8e 100644
--- a/blivet/populator.py
+++ b/blivet/populator.py
@@ -47,6 +47,7 @@
 from .devicelibs import raid
 from . import udev
 from . import util
+from .util import open  # pylint: disable=redefined-builtin
 from .flags import flags
 from .storage_log import log_exception_info, log_method_call
 from .i18n import _
diff --git a/blivet/udev.py b/blivet/udev.py
index 99a7bc3..1c36cbc 100644
--- a/blivet/udev.py
+++ b/blivet/udev.py
@@ -25,6 +25,7 @@
 import re
 
 from . import util
+from .util import open  # pylint: disable=redefined-builtin
 from .size import Size
 from .flags import flags
 
diff --git a/blivet/util.py b/blivet/util.py
index 30db569..069a266 100644
--- a/blivet/util.py
+++ b/blivet/util.py
@@ -651,3 +651,8 @@ def eintr_ignore(func, *args, **kwargs):
         if e.errno == errno.EINTR:
             pass
         raise
+
+_open = open
+def open(*args, **kwargs):  # pylint: disable=redefined-builtin
+    """Open a file, and retry on EINTR."""
+    return eintr_retry_call(_open, *args, **kwargs)
diff --git a/blivet/zfcp.py b/blivet/zfcp.py
index 74620bd..b1a1317 100644
--- a/blivet/zfcp.py
+++ b/blivet/zfcp.py
@@ -22,6 +22,7 @@
 import os
 from . import udev
 from . import util
+from .util import open  # pylint: disable=redefined-builtin
 from .i18n import _
 from .util import stringize, unicodeize
 from gi.repository import BlockDev as blockdev


-- 
To view this commit on github, visit https://github.com/rhinstaller/blivet/commit/bcddee289102e7be66e58c7ebb92ea4bb1517078


More information about the anaconda-patches mailing list