From d4d4cba0dcbedf18ad8c35ffc515a485daf029cc Mon Sep 17 00:00:00 2001 From: Papoteur Date: Sat, 28 Nov 2020 21:37:11 +0100 Subject: Add management of error when creating partition with fdisk --- backend/raw_write.py | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'backend') diff --git a/backend/raw_write.py b/backend/raw_write.py index a44eabe..58417f9 100755 --- a/backend/raw_write.py +++ b/backend/raw_write.py @@ -244,11 +244,32 @@ class Dumper(object): process = None working= False if rc != 0: - self.return_state = False - self.return_message = _("Error {} while doing persistent partition: {}").format(rc, errs.decode('utf-8')) - logging.error(self.return_message) - self.finished.set() - return + if rc == 1: + # the error is Re-reading the partition table failed.: Device or resource busy + logging.error(_("Error {} while doing persistent partition: {}").format(rc, errs.decode('utf-8'))) + logging.error(_("Try reloading partition table")) + p = Popen(["partprobe",target], stdin = PIPE, stderr=PIPE) + outs, errs = p.communicate() + working=True + while working: + time.sleep(0.5) + p.poll() + rc=p.returncode + if not (rc is None): + process = None + working= False + else: + self.return_state = False + self.return_message = _("Unable to reload the partition table: {}").format(errs.decode('utf-8')) + logging.error(self.return_message) + self.finished.set() + return + else: + self.return_state = False + self.return_message = _("Error {} while doing persistent partition: {}").format(rc, errs.decode('utf-8')) + logging.error(self.return_message) + self.finished.set() + return logging.debug("New partition created") self._progress = 25 -- cgit v1.2.1