From bdc2e671912c3737ec65454cc7a5ed91213f7e01 Mon Sep 17 00:00:00 2001 From: Imre Kaloz Date: Thu, 24 Oct 2013 13:50:11 +0000 Subject: [generic:] preliminary 3.12 support Signed-off-by: Imre Kaloz git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38528 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- ...use-mtd_get_squashfs_len-in-split_squasfh.patch | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 target/linux/generic/patches-3.12/404-mtd-use-mtd_get_squashfs_len-in-split_squasfh.patch (limited to 'target/linux/generic/patches-3.12/404-mtd-use-mtd_get_squashfs_len-in-split_squasfh.patch') diff --git a/target/linux/generic/patches-3.12/404-mtd-use-mtd_get_squashfs_len-in-split_squasfh.patch b/target/linux/generic/patches-3.12/404-mtd-use-mtd_get_squashfs_len-in-split_squasfh.patch new file mode 100644 index 0000000000..1ebeca64d1 --- /dev/null +++ b/target/linux/generic/patches-3.12/404-mtd-use-mtd_get_squashfs_len-in-split_squasfh.patch @@ -0,0 +1,69 @@ +--- a/drivers/mtd/mtdpart.c ++++ b/drivers/mtd/mtdpart.c +@@ -34,6 +34,7 @@ + #include + + #include "mtdcore.h" ++#include "mtdsplit.h" + + /* Our partition linked list */ + static LIST_HEAD(mtd_partitions); +@@ -670,43 +671,16 @@ mtd_pad_erasesize(struct mtd_info *mtd, + return len; + } + +-#define ROOTFS_SPLIT_NAME "rootfs_data" +- +-struct squashfs_super_block { +- __le32 s_magic; +- __le32 pad0[9]; +- __le64 bytes_used; +-}; +- +- + static int split_squashfs(struct mtd_info *master, int offset, int *split_offset) + { +- struct squashfs_super_block sb; ++ size_t squashfs_len; + int len, ret; + +- ret = mtd_read(master, offset, sizeof(sb), &len, (void *) &sb); +- if (ret || (len != sizeof(sb))) { +- printk(KERN_ALERT "split_squashfs: error occured while reading " +- "from \"%s\"\n", master->name); +- return -EINVAL; +- } +- +- if (SQUASHFS_MAGIC != le32_to_cpu(sb.s_magic) ) { +- printk(KERN_ALERT "split_squashfs: no squashfs found in \"%s\"\n", +- master->name); +- *split_offset = 0; +- return 0; +- } +- +- if (le64_to_cpu((sb.bytes_used)) <= 0) { +- printk(KERN_ALERT "split_squashfs: squashfs is empty in \"%s\"\n", +- master->name); +- *split_offset = 0; +- return 0; +- } ++ ret = mtd_get_squashfs_len(master, offset, &squashfs_len); ++ if (ret) ++ return ret; + +- len = (u32) le64_to_cpu(sb.bytes_used); +- len = mtd_pad_erasesize(master, offset, len); ++ len = mtd_pad_erasesize(master, offset, squashfs_len); + *split_offset = offset + len; + + return 0; +--- a/drivers/mtd/Kconfig ++++ b/drivers/mtd/Kconfig +@@ -20,6 +20,7 @@ config MTD_ROOTFS_ROOT_DEV + + config MTD_ROOTFS_SPLIT + bool "Automatically split 'rootfs' partition for squashfs" ++ select MTD_SPLIT + default y + + config MTD_SPLIT_FIRMWARE -- cgit v1.2.3