backups: disable SIGCHLD handler for the time of running backup
Otherwise some syscalls would return EINTR. This is much easier (and more readable!) solution than wrapping each syscall with try:except and some loop.
This commit is contained in:
parent
0b0297f129
commit
1e7eaf3776
@ -32,6 +32,7 @@ from qubes.qubes import QubesDaemonPidfile
|
|||||||
from qubes.qubes import QubesHost
|
from qubes.qubes import QubesHost
|
||||||
from qubes.qubes import qubes_base_dir
|
from qubes.qubes import qubes_base_dir
|
||||||
import qubesmanager.resources_rc
|
import qubesmanager.resources_rc
|
||||||
|
import signal
|
||||||
|
|
||||||
from pyinotify import WatchManager, Notifier, ThreadedNotifier, EventsCodes, ProcessEvent
|
from pyinotify import WatchManager, Notifier, ThreadedNotifier, EventsCodes, ProcessEvent
|
||||||
|
|
||||||
@ -210,6 +211,7 @@ class RestoreVMsWindow(Ui_Restore, QWizard):
|
|||||||
|
|
||||||
def current_page_changed(self, id):
|
def current_page_changed(self, id):
|
||||||
|
|
||||||
|
old_sigchld_handler = signal.signal(signal.SIGCHLD, signal.SIG_DFL)
|
||||||
if self.currentPage() is self.select_vms_page:
|
if self.currentPage() is self.select_vms_page:
|
||||||
self.__fill_vms_list__()
|
self.__fill_vms_list__()
|
||||||
|
|
||||||
@ -244,8 +246,8 @@ class RestoreVMsWindow(Ui_Restore, QWizard):
|
|||||||
self.app.processEvents()
|
self.app.processEvents()
|
||||||
time.sleep (0.1)
|
time.sleep (0.1)
|
||||||
try:
|
try:
|
||||||
for (signal,data) in iter(self.feedback_queue.get_nowait,None):
|
for (signal_to_emit,data) in iter(self.feedback_queue.get_nowait,None):
|
||||||
self.emit(signal,data)
|
self.emit(signal_to_emit,data)
|
||||||
except Empty:
|
except Empty:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -257,6 +259,8 @@ class RestoreVMsWindow(Ui_Restore, QWizard):
|
|||||||
self.progress_bar.setValue(100)
|
self.progress_bar.setValue(100)
|
||||||
self.button(self.FinishButton).setEnabled(True)
|
self.button(self.FinishButton).setEnabled(True)
|
||||||
|
|
||||||
|
signal.signal(signal.SIGCHLD, old_sigchld_handler)
|
||||||
|
|
||||||
def all_vms_good(self):
|
def all_vms_good(self):
|
||||||
for vminfo in self.vms_to_restore.values():
|
for vminfo in self.vms_to_restore.values():
|
||||||
if not vminfo['good-to-go']:
|
if not vminfo['good-to-go']:
|
||||||
|
Loading…
Reference in New Issue
Block a user