浏览代码

block-mount: remove explicit lock waits, solves some potential race conditions

SVN-Revision: 27226
Jo-Philipp Wich 14 年之前
父节点
当前提交
a434ed2fc6
共有 3 个文件被更改,包括 21 次插入27 次删除
  1. 1 1
      package/block-mount/Makefile
  2. 16 20
      package/block-mount/files/block.sh
  3. 4 6
      package/block-mount/files/fstab.init

+ 1 - 1
package/block-mount/Makefile

@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=block-mount
 PKG_VERSION:=0.2.0
-PKG_RELEASE:=5
+PKG_RELEASE:=6
 
 include $(INCLUDE_DIR)/package.mk
 

+ 16 - 20
package/block-mount/files/block.sh

@@ -119,17 +119,15 @@ config_create_swap_fstab_entry() {
 	[ -n "$device" ] || return 0
 
 	local fstabnew
-	
+
 	mkdir -p /var/lock
-	lock -w /var/lock/fstab.lck && {
-		lock /var/lock/fstab.lck
-		fstabnew="$(mktemp -t '.fstab.XXXXXXXX')"
-		cat /tmp/fstab | grep -E -v "^$device[[:blank:]]" >>"$fstabnew"
-		[ "$enabled" -eq 1 ] && echo "$device	none	swap	sw	0	0" >> "$fstabnew"
-		cat "$fstabnew" >/tmp/fstab
-		rm -f $fstabnew
-		lock -u /var/lock/fstab.lck
-	}
+	lock /var/lock/fstab.lck
+	fstabnew="$(mktemp -t '.fstab.XXXXXXXX')"
+	cat /tmp/fstab | grep -E -v "^$device[[:blank:]]" >>"$fstabnew"
+	[ "$enabled" -eq 1 ] && echo "$device	none	swap	sw	0	0" >> "$fstabnew"
+	cat "$fstabnew" >/tmp/fstab
+	rm -f $fstabnew
+	lock -u /var/lock/fstab.lck
 }
 
 config_create_mount_fstab_entry() {
@@ -144,17 +142,15 @@ config_create_mount_fstab_entry() {
 	[ -n "$device" ] || return 0
 
 	local fstabnew
-	
+
 	mkdir -p /var/lock
-	lock -w /var/lock/fstab.lck && {
-		lock /var/lock/fstab.lck
-		fstabnew="$(mktemp -t '.fstab.XXXXXXXX')"
-		cat /tmp/fstab | grep -E -v "^$device[[:blank:]]" | grep -v "$target" >>"$fstabnew"
-		echo "$device	$target	$fstype	$options	0	0" >>"$fstabnew"
-		cat "$fstabnew" >/tmp/fstab		
-		rm -f $fstabnew
-		lock -u /var/lock/fstab.lck
-	}
+	lock /var/lock/fstab.lck
+	fstabnew="$(mktemp -t '.fstab.XXXXXXXX')"
+	cat /tmp/fstab | grep -E -v "^$device[[:blank:]]" | grep -v "$target" >>"$fstabnew"
+	echo "$device	$target	$fstype	$options	0	0" >>"$fstabnew"
+	cat "$fstabnew" >/tmp/fstab		
+	rm -f $fstabnew
+	lock -u /var/lock/fstab.lck
 }
 
 libmount_find_token() {

+ 4 - 6
package/block-mount/files/fstab.init

@@ -66,13 +66,11 @@ start() {
 
 	config_load fstab
 	mkdir -p /var/lock
-	lock -w /var/lock/fstab.lck && {
-		lock /var/lock/fstab.lck
-		[ -e /tmp/fstab ] || { 
-			echo '# WARNING: this is an auto generated file, please use uci to set defined filesystems' > /tmp/fstab
-		}
-		lock -u /var/lock/fstab.lck
+	lock /var/lock/fstab.lck
+	[ -e /tmp/fstab ] || {
+		echo '# WARNING: this is an auto generated file, please use uci to set defined filesystems' > /tmp/fstab
 	}
+	lock -u /var/lock/fstab.lck
 	config_foreach do_swapon swap
 	config_foreach do_mount mount
 	config_foreach do_swapon swap  # do swap a second time so that swap on filesystems is enabled