runqemu: acquire_lock() should fail when failed to open the file

The open(self.lock, 'w') may fail when the lock is created by other
users, return false for this case to let it try other devices.

Fixed:
runqemu - INFO - Running /sbin/ip link...
runqemu - INFO - Acquiring lockfile /tmp/qemu-tap-locks/tap0.lock...
Traceback (most recent call last):
  File "/buildarea/lyang1/poky/scripts/runqemu", line 972, in <module>
    ret = main()
  File "/buildarea/lyang1/poky/scripts/runqemu", line 963, in main
    config.setup_network()
  File "/buildarea/lyang1/poky/scripts/runqemu", line 810, in setup_network
    self.setup_tap()
  File "/buildarea/lyang1/poky/scripts/runqemu", line 761, in setup_tap
    if self.acquire_lock():
  File "/buildarea/lyang1/poky/scripts/runqemu", line 182, in acquire_lock
    lock_descriptor = open(self.lock, 'w')
PermissionError: [Errno 13] Permission denied: '/tmp/qemu-tap-locks/tap0.lock'

(From OE-Core rev: f364f773a0381a75b5992c8c8a1d63a81dbd4422)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Robert Yang 2016-09-19 00:20:08 -07:00 committed by Richard Purdie
parent 286db044c3
commit 6a5bd99bfc
1 changed files with 4 additions and 4 deletions

View File

@ -168,14 +168,14 @@ class BaseConfig(object):
def acquire_lock(self):
logger.info("Acquiring lockfile %s..." % self.lock)
lock_descriptor = open(self.lock, 'w')
try:
fcntl.flock(lock_descriptor, fcntl.LOCK_EX|fcntl.LOCK_NB)
self.lock_descriptor = open(self.lock, 'w')
fcntl.flock(self.lock_descriptor, fcntl.LOCK_EX|fcntl.LOCK_NB)
except Exception as e:
logger.info("Acquiring lockfile %s failed: %s" % (self.lock, e))
lock_descriptor.close()
if self.lock_descriptor:
self.lock_descriptor.close()
return False
self.lock_descriptor = lock_descriptor
return True
def release_lock(self):