diff options
-rwxr-xr-x | scripts/runqemu-internal | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal index e53e40c783..f06870e972 100755 --- a/scripts/runqemu-internal +++ b/scripts/runqemu-internal | |||
@@ -112,18 +112,12 @@ acquire_lock() { | |||
112 | return 1 | 112 | return 1 |
113 | fi | 113 | fi |
114 | 114 | ||
115 | if [ -e "$lockfile.lock" ]; then | 115 | touch $lockfile.lock |
116 | # Check that the lockfile is not stale | 116 | exec 8>$lockfile.lock |
117 | ps=`ps -eo pid | grep $(cat $lockfile.lock)` | 117 | flock -n -x 8 |
118 | if [ -z "$ps" ]; then | 118 | if [ $? -ne 0 ]; then |
119 | echo "WARNING: Stale lock file detected, deleting $lockfile.lock." | 119 | exec 8>&- |
120 | rm -f $lockfile.lock | 120 | return 1 |
121 | echo $$ > $lockfile.lock | ||
122 | else | ||
123 | return 1 | ||
124 | fi | ||
125 | else | ||
126 | echo $$ > $lockfile.lock | ||
127 | fi | 121 | fi |
128 | 122 | ||
129 | return 0 | 123 | return 0 |
@@ -137,6 +131,7 @@ release_lock() { | |||
137 | fi | 131 | fi |
138 | 132 | ||
139 | rm -f $lockfile.lock | 133 | rm -f $lockfile.lock |
134 | exec 8>&- | ||
140 | } | 135 | } |
141 | 136 | ||
142 | LOCKDIR="/tmp/qemu-tap-locks" | 137 | LOCKDIR="/tmp/qemu-tap-locks" |