From 17a0a067d597c445c5892ff9914e91a2187f7e09 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 28 Nov 2018 17:31:39 +0000 Subject: scripts/runqemu: Improve lockfile handling for python with close_fd=True On python versions with close_fds=True (python 3.2 onwards), the tap device lockfile isn't passed to the child process. Since this guards against use of an active interface, we really want this here, so pass it in pass_fds. This means if the parent exits early, the child still holds the lock, avoiding messages like: runqemu - ERROR - Failed to run qemu: qemu-system-x86_64: could not configure /dev/net/tun (tap0): Device or resource busy Signed-off-by: Richard Purdie --- scripts/runqemu | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/runqemu b/scripts/runqemu index d25de42f27..f661892aec 100755 --- a/scripts/runqemu +++ b/scripts/runqemu @@ -1220,7 +1220,10 @@ class BaseConfig(object): cmd = "%s %s" % (self.qemu_opt, kernel_opts) cmds = shlex.split(cmd) logger.info('Running %s\n' % cmd) - process = subprocess.Popen(cmds, stderr=subprocess.PIPE) + pass_fds = [] + if self.lock_descriptor: + pass_fds = [self.lock_descriptor.fileno()] + process = subprocess.Popen(cmds, stderr=subprocess.PIPE, pass_fds=pass_fds) self.qemupid = process.pid retcode = process.wait() if retcode: -- cgit 1.2.3-korg