[PATCH] kernel: support "linux,rootfs" DT property for splitting rootfs

Rafał Miłecki zajec5 at gmail.com
Tue Nov 8 03:22:51 PST 2022


From: Rafał Miłecki <rafal at milecki.pl>

OpenWrt's support for splitting rootfs (to create an extra "rootfs_data"
partition) is limited to partitions called "rootfs". Upstream kernel
allows any name partition to be rootfs if it has "linux,rootfs" property
set. Add split support to such partitions in OpenWrt code.

Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
---
 .../pending-5.10/400-mtd-mtdsplit-support.patch       | 11 ++++++-----
 .../pending-5.15/400-mtd-mtdsplit-support.patch       | 11 ++++++-----
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/target/linux/generic/pending-5.10/400-mtd-mtdsplit-support.patch b/target/linux/generic/pending-5.10/400-mtd-mtdsplit-support.patch
index b34c041df0..89cac88717 100644
--- a/target/linux/generic/pending-5.10/400-mtd-mtdsplit-support.patch
+++ b/target/linux/generic/pending-5.10/400-mtd-mtdsplit-support.patch
@@ -64,7 +64,7 @@ SVN-Revision: 38002
  
  /*
   * MTD methods which simply translate the effective address and pass through
-@@ -237,6 +239,146 @@ static int mtd_add_partition_attrs(struc
+@@ -237,6 +239,147 @@ static int mtd_add_partition_attrs(struc
  	return ret;
  }
  
@@ -196,7 +196,8 @@ SVN-Revision: 38002
 +	if (rootfs_found)
 +		return;
 +
-+	if (!strcmp(part->name, "rootfs")) {
++	if (of_find_property(mtd_get_of_node(part), "linux,rootfs", NULL) ||
++	    !strcmp(part->name, "rootfs")) {
 +		run_parsers_by_type(part, MTD_PARSER_TYPE_ROOTFS);
 +
 +		rootfs_found = 1;
@@ -211,7 +212,7 @@ SVN-Revision: 38002
  int mtd_add_partition(struct mtd_info *parent, const char *name,
  		      long long offset, long long length)
  {
-@@ -275,6 +417,7 @@ int mtd_add_partition(struct mtd_info *p
+@@ -275,6 +418,7 @@ int mtd_add_partition(struct mtd_info *p
  	if (ret)
  		goto err_remove_part;
  
@@ -219,7 +220,7 @@ SVN-Revision: 38002
  	mtd_add_partition_attrs(child);
  
  	return 0;
-@@ -423,6 +566,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -423,6 +567,7 @@ int add_mtd_partitions(struct mtd_info *
  			goto err_del_partitions;
  		}
  
@@ -227,7 +228,7 @@ SVN-Revision: 38002
  		mtd_add_partition_attrs(child);
  
  		/* Look for subpartitions */
-@@ -439,31 +583,6 @@ err_del_partitions:
+@@ -439,31 +584,6 @@ err_del_partitions:
  	return ret;
  }
  
diff --git a/target/linux/generic/pending-5.15/400-mtd-mtdsplit-support.patch b/target/linux/generic/pending-5.15/400-mtd-mtdsplit-support.patch
index d07afd70ee..bf82bb3950 100644
--- a/target/linux/generic/pending-5.15/400-mtd-mtdsplit-support.patch
+++ b/target/linux/generic/pending-5.15/400-mtd-mtdsplit-support.patch
@@ -66,7 +66,7 @@ Subject: [PATCH] mtd: mtdsplit support
  
  /*
   * MTD methods which simply translate the effective address and pass through
-@@ -236,6 +238,146 @@ static int mtd_add_partition_attrs(struc
+@@ -236,6 +238,147 @@ static int mtd_add_partition_attrs(struc
  	return ret;
  }
  
@@ -198,7 +198,8 @@ Subject: [PATCH] mtd: mtdsplit support
 +	if (rootfs_found)
 +		return;
 +
-+	if (!strcmp(part->name, "rootfs")) {
++	if (of_find_property(mtd_get_of_node(part), "linux,rootfs", NULL) ||
++	    !strcmp(part->name, "rootfs")) {
 +		run_parsers_by_type(part, MTD_PARSER_TYPE_ROOTFS);
 +
 +		rootfs_found = 1;
@@ -213,7 +214,7 @@ Subject: [PATCH] mtd: mtdsplit support
  int mtd_add_partition(struct mtd_info *parent, const char *name,
  		      long long offset, long long length)
  {
-@@ -274,6 +416,7 @@ int mtd_add_partition(struct mtd_info *p
+@@ -274,6 +417,7 @@ int mtd_add_partition(struct mtd_info *p
  	if (ret)
  		goto err_remove_part;
  
@@ -221,7 +222,7 @@ Subject: [PATCH] mtd: mtdsplit support
  	mtd_add_partition_attrs(child);
  
  	return 0;
-@@ -422,6 +565,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -422,6 +566,7 @@ int add_mtd_partitions(struct mtd_info *
  			goto err_del_partitions;
  		}
  
@@ -229,7 +230,7 @@ Subject: [PATCH] mtd: mtdsplit support
  		mtd_add_partition_attrs(child);
  
  		/* Look for subpartitions */
-@@ -438,31 +582,6 @@ err_del_partitions:
+@@ -438,31 +583,6 @@ err_del_partitions:
  	return ret;
  }
  
-- 
2.34.1




More information about the openwrt-devel mailing list