mirror of
https://git.yoctoproject.org/git/poky
synced 2026-01-01 13:58:04 +00:00
runqemu: keep generating tap devices
in case there is no tap device the script tries to generate a new one. The new device is then unguarded for a moment, so the newly generated device could be acquired by a different instance or user, before it is locked to the instance with acquire_taplock. To fix that keep generating new tap devices in case the lock can't be acquired up to 5 times. If no tap device can be locked it fails in the existing error handling (From OE-Core rev: 23876576d054ebbab9b02c0012782aa56feda123) (From OE-Core rev: 5215635442949a62f502e839ddf1f12e790e5e37) Signed-off-by: Konrad Weihmann <kweihmann@outlook.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Steve Sakoman <steve@sakoman.com>
This commit is contained in:
parent
065bd86349
commit
6ee7342411
|
|
@ -1150,16 +1150,20 @@ to your build configuration.
|
|||
uid = os.getuid()
|
||||
logger.info("Setting up tap interface under sudo")
|
||||
cmd = ('sudo', self.qemuifup, str(uid), str(gid), self.bindir_native)
|
||||
try:
|
||||
tap = subprocess.check_output(cmd).decode('utf-8').strip()
|
||||
except subprocess.CalledProcessError as e:
|
||||
logger.error('Setting up tap device failed:\n%s\nRun runqemu-gen-tapdevs to manually create one.' % str(e))
|
||||
sys.exit(1)
|
||||
lockfile = os.path.join(lockdir, tap)
|
||||
self.taplock = lockfile + '.lock'
|
||||
self.acquire_taplock()
|
||||
self.cleantap = True
|
||||
logger.debug('Created tap: %s' % tap)
|
||||
for _ in range(5):
|
||||
try:
|
||||
tap = subprocess.check_output(cmd).decode('utf-8').strip()
|
||||
except subprocess.CalledProcessError as e:
|
||||
logger.error('Setting up tap device failed:\n%s\nRun runqemu-gen-tapdevs to manually create one.' % str(e))
|
||||
sys.exit(1)
|
||||
lockfile = os.path.join(lockdir, tap)
|
||||
self.taplock = lockfile + '.lock'
|
||||
if self.acquire_taplock():
|
||||
self.cleantap = True
|
||||
logger.debug('Created tap: %s' % tap)
|
||||
break
|
||||
else:
|
||||
tap = None
|
||||
|
||||
if not tap:
|
||||
logger.error("Failed to setup tap device. Run runqemu-gen-tapdevs to manually create.")
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user