From 41975aa977f7aa387851aa5e4f584db749a27736 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(-) 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