Add some attempts to mount partition with mount retcode 2816.

Some times (after change id) udev do not has time to re-create device in
/dev at the moment mounting for unpacking. The solution is some
attempts to mount this partition if mount has retcode 2816.
master 2.2.20-r4
Mike Hiretsky 13 years ago
parent ad714181d7
commit e020ae4a00

@ -565,8 +565,9 @@ class Distributive(object, SignalInterrupt):
return None
def _mountToDirectory(self,file,directory,mountopts=""):
def _mountToDirectory(self,file,directory,mountopts="",count=2):
"""Mount squashfs to directory"""
NO_SUCH_DEVICE = 2816
if isMount(directory):
raise DistributiveError(_("Cann't mount to directory: %s\n")\
%directory+ _("Directory already mounted"))
@ -577,6 +578,12 @@ class Distributive(object, SignalInterrupt):
if mountProcess.success():
return True
else:
# 2816 code return by mount if device is absent (update /dev by udev)
# try mount 3 times with interval 0.5 second
if mountProcess.returncode() == NO_SUCH_DEVICE and count:
sleep(0.5)
mountProcess.close()
return self._mountToDirectory(file,directory,mountopts,count-1)
try:
self._removeDirectory(directory)
except:

Loading…
Cancel
Save