From b9943e4bfe96e3e1242643014cba915924222fa4 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 (From OE-Core rev: 17a0a067d597c445c5892ff9914e91a2187f7e09) (From OE-Core rev: 1d03e0d54863124c5a65b59ecdc76dbac13d312a) 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 1eeafa9f5b..295c8b1b60 100755 --- a/scripts/runqemu +++ b/scripts/runqemu @@ -1218,7 +1218,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 v1.2.3-54-g00ecf