diff options
author | Robert Yang <liezhi.yang@windriver.com> | 2016-09-19 00:10:28 -0700 |
---|---|---|
committer | Robert Yang <liezhi.yang@windriver.com> | 2016-09-19 00:19:24 -0700 |
commit | f91c59ec68a08318eee53865979246cfa55888c9 (patch) | |
tree | a0bb16a6467d69ce857da9f251fd3f748d42236a | |
parent | d77fe838ab7631a19e90ff4226f0712e54aa4e22 (diff) | |
download | openembedded-core-contrib-rbt/rq_lock.tar.gz |
runqemu: acquire_lock() should fail when failed to open the filerbt/rq_lock
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'
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-rwxr-xr-x | scripts/runqemu | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/scripts/runqemu b/scripts/runqemu index b6bc0ba734..380568560b 100755 --- a/scripts/runqemu +++ b/scripts/runqemu @@ -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): |