From 66bcd1d04900c97dda49883470fb5009609a3766 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Thu, 17 Mar 2011 19:09:39 +0000
Subject: [PATCH] base-files: add initial support for mounting overlayfs

SVN-Revision: 26207
---
 package/base-files/files/lib/firstboot/10_reset_has_mini_fo | 6 +++---
 package/base-files/files/lib/firstboot/20_has_mini_fo       | 6 +++---
 package/base-files/files/lib/functions/boot.sh              | 4 +++-
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/package/base-files/files/lib/firstboot/10_reset_has_mini_fo b/package/base-files/files/lib/firstboot/10_reset_has_mini_fo
index 125af0faea..4e285840a9 100644
--- a/package/base-files/files/lib/firstboot/10_reset_has_mini_fo
+++ b/package/base-files/files/lib/firstboot/10_reset_has_mini_fo
@@ -3,10 +3,10 @@
 # Copyright (C) 2006-2010 OpenWrt.org
 # Copyright (C) 2010 Vertical Communications
 
-reset_check_for_mini_fo() {
-    if grep -q mini_fo /proc/filesystems; then
+reset_check_for_overlay() {
+    if grep -qE '(mini_fo|overlay)' /proc/filesystems; then
 	reset_has_fo=true
     fi
 }
 
-boot_hook_add jffs2reset reset_check_for_mini_fo
+boot_hook_add jffs2reset reset_check_for_overlay
diff --git a/package/base-files/files/lib/firstboot/20_has_mini_fo b/package/base-files/files/lib/firstboot/20_has_mini_fo
index 257b2b54c4..8ca6a4fe58 100644
--- a/package/base-files/files/lib/firstboot/20_has_mini_fo
+++ b/package/base-files/files/lib/firstboot/20_has_mini_fo
@@ -3,11 +3,11 @@
 # Copyright (C) 2006-2010 OpenWrt.org
 # Copyright (C) 2010 Vertical Communications
 
-check_for_mini_fo() {
-    if ! grep -q mini_fo /proc/filesystems; then
+check_for_overlay() {
+    if ! grep -qE '(mini_fo|overlay)' /proc/filesystems; then
 	boot_run_hook no_fo
 	exit 1
     fi
 }
 
-boot_hook_add switch2jffs check_for_mini_fo
+boot_hook_add switch2jffs check_for_overlay
diff --git a/package/base-files/files/lib/functions/boot.sh b/package/base-files/files/lib/functions/boot.sh
index a4ec7be5b2..6bdd7a1490 100644
--- a/package/base-files/files/lib/functions/boot.sh
+++ b/package/base-files/files/lib/functions/boot.sh
@@ -125,7 +125,9 @@ pivot() { # <new_root> <old_root>
 fopivot() { # <rw_root> <ro_root> <dupe?>
 	root=$1
 	{
-		if grep -q mini_fo /proc/filesystems; then
+		if grep -q overlay /proc/filesystems; then
+			mount -t overlayfs -olowerdir=/,upperdir=$1 "overlayfs:$1" /mnt && root=/mnt
+		elif grep -q mini_fo /proc/filesystems; then
 			mount -t mini_fo -o base=/,sto=$1 "mini_fo:$1" /mnt 2>&- && root=/mnt
 		else
 			mount --bind / /mnt
-- 
GitLab