[backfire] merge r26642
[openwrt-10.03/.git] / package / block-mount / files / fstab.init
index bd2bf24cb0f41f9e1e8dd1fc215917371450b51f..a3e0338f4ee17271851585184166eba914cf7a21 100644 (file)
@@ -8,8 +8,6 @@
 
 START=20
 
-. /lib/functions/mount.sh
-
 do_mount() {
        local cfg="$1"
        config_mount_by_section "$cfg"
@@ -39,19 +37,29 @@ do_swapoff() {
 }
 
 start() {
+       . /lib/functions/mount.sh
+
        config_load fstab
        mkdir -p /var/lock
-       lock /var/lock/fstab.lck
-       echo '# WARNING: this is an auto generated file, please use uci to set defined filesystems' > /etc/fstab
-       lock -u /var/lock/fstab.lck
-       config_foreach do_mount mount
+       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
+       }
        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
 }
 
 stop() {
+       . /lib/functions/mount.sh
+
        config_load fstab
        config_foreach do_unmount mount
        config_foreach do_swapoff swap
        swapoff -a
 }
 
+