X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/52993b922e683b5f97139aa06f003e879018319d..2ed51448ae64a1c4883ce7c76befce1f357b457e:/package/block-mount/files/fstab.init?ds=sidebyside

diff --git a/package/block-mount/files/fstab.init b/package/block-mount/files/fstab.init
index d755eccf0..f54051ebb 100644
--- a/package/block-mount/files/fstab.init
+++ b/package/block-mount/files/fstab.init
@@ -8,7 +8,30 @@
 
 START=20
 
-. /lib/functions/mount.sh
+EXTRA_COMMANDS="overlay_enable whole_root_enable"
+EXTRA_HELP="        overlay_enable    Reenable overlay rootfs. (After you fix it).
+        whole_root_enable Reenable whole-disk rootfs.  (After you fix it)."
+
+rootfs_enable() {
+	local extroot_type="$1"
+		
+	if [ ! -d /tmp/${extroot_type}-disabled ]; then
+		echo "No disabled ${extroot_type} present (/tmp/${extroot_type}-disabled).  Can't renable."
+		exit 1
+	fi
+	
+	rm -f /tmp/${extroot_type}-disabled/.extroot.md5sum
+	rm -f /tmp/${extroot_type}-disabled/etc/extroot.md5sum
+	echo "Please reboot router to complete re-enabling external rootfs."
+}
+
+overlay_enable() {
+	rootfs_enable overlay
+}
+
+whole_root_enable() {
+	rootfs_enable whole_root
+}
 
 do_mount() {
 	local cfg="$1"
@@ -39,19 +62,27 @@ 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
+	[ -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
 }
 
+