Browse Source

fs/jffs2: Fix mkfs.jffs2 --pagesize parameter usage

Fixes #8186

Mkfs.jffs2 accepts a --pagesize parameter, which allows specifying the size
of the virtual memory page size of the target machine, where the image will
be used.  (This is the value of the PAGE_SIZE macro in Linux.) In most cases
the parameter doesn't need to be set as the default value of 4 kB is usually
correct.

The parameter was used incorrectly in Buildroot -- it was set to the page
size of flash memory chip -- this commit fixes this problem.  Now the
--pagesize parameter is not used at all (unless the user explicitly chooses
to use a custom value during configuration).  All existing defconfigs were
corrected to match the new configuration variable names.

[Peter: reword, add Config.in.legacy handling]
Signed-off-by: Michał Leśniewski <mlesniew@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Michał Leśniewski 10 years ago
parent
commit
e3904a890d

+ 16 - 0
Config.in.legacy

@@ -107,6 +107,22 @@ endif
 ###############################################################################
 comment "Legacy options removed in 2015.05"
 
+config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K
+	bool "jffs2 16kB erasesize NAND flash option renamed"
+	select BR2_LEGACY
+	select BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K
+	help
+	  The JFFS2 NAND flash options now longer include the page
+	  size.
+
+config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K
+	bool "jffs2 128kB erasesize NAND flash option renamed"
+	select BR2_LEGACY
+	select BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K
+	help
+	  The JFFS2 NAND flash options now longer include the page
+	  size.
+
 config BR2_PACKAGE_MONO_20
 	bool "2.0/3.5 .Net Runtime"
 	select BR2_LEGACY

+ 1 - 1
configs/mini2440_defconfig

@@ -8,7 +8,7 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttySAC0"
 
 # Filesystem
 BR2_TARGET_ROOTFS_JFFS2=y
-BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K=y
+BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K=y
 BR2_TARGET_ROOTFS_JFFS2_PAGESIZE=0x800
 BR2_TARGET_ROOTFS_JFFS2_EBSIZE=0x20000
 BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y

+ 1 - 1
configs/openblocks_a6_defconfig

@@ -9,7 +9,7 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
 
 # filesystem
 BR2_TARGET_ROOTFS_JFFS2=y
-BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K=y
+BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K=y
 
 # Lock to 3.18 headers to avoid breaking with newer kernels
 BR2_KERNEL_HEADERS_VERSION=y

+ 1 - 1
configs/sheevaplug_defconfig

@@ -8,7 +8,7 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
 
 # filesystem
 BR2_TARGET_ROOTFS_JFFS2=y
-BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K=y
+BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K=y
 
 # Lock down headers to avoid breaking with new defaults
 BR2_KERNEL_HEADERS_VERSION=y

+ 29 - 28
fs/jffs2/Config.in

@@ -17,32 +17,25 @@ config BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528
 	bool "AT45 dataflash with 528 byte pagesize"
 	select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER
 
-config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K
-	bool "NAND flash with 512B Page and 16 kB erasesize"
+config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K
+	bool "NAND flash with 16 kB erasesize"
 	select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER
 
-config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K
-	bool "NAND flash with 2kB Page and 128 kB erasesize"
+config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K
+	bool "NAND flash with 128 kB erasesize"
 	select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER
 
 config BR2_TARGET_ROOTFS_JFFS2_FLASH_128
-	bool "Parallel flash with 4 kB pagesize and 128 kB erase size"
+	bool "Parallel flash with 128 kB erase size"
 
 config BR2_TARGET_ROOTFS_JFFS2_FLASH_64
-	bool "Parallel flash with 4 kB pagesize and 64 kB erase size"
+	bool "Parallel flash with 64 kB erase size"
 
 config BR2_TARGET_ROOTFS_JFFS2_CUSTOM
-	bool "Select custom page and erase size"
+	bool "Select custom erase size"
 
 endchoice
 
-config BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE
-	hex "Page Size"
-	depends on BR2_TARGET_ROOTFS_JFFS2_CUSTOM
-	default 0x1000
-	help
-	  Set to pagesize of memory
-
 config BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE
 	hex "Erase block size"
 	depends on BR2_TARGET_ROOTFS_JFFS2_CUSTOM
@@ -50,22 +43,12 @@ config BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE
 	help
 	  Set to erase size of memory
 
-config BR2_TARGET_ROOTFS_JFFS2_PAGESIZE
-	hex
-	default 0x420 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056
-	default 0x210 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528
-	default 0x200 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K
-	default 0x800 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K
-	default 0x1000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_128
-	default 0x1000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_64
-	default BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE if BR2_TARGET_ROOTFS_JFFS2_CUSTOM
-
 config BR2_TARGET_ROOTFS_JFFS2_EBSIZE
 	hex
 	default 0x2100 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056
 	default 0x1080 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528
-	default 0x4000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K
-	default 0x20000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K
+	default 0x4000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K
+	default 0x20000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K
 	default 0x20000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_128
 	default 0x10000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_64
 	default BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE if BR2_TARGET_ROOTFS_JFFS2_CUSTOM
@@ -74,8 +57,8 @@ config BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER
 	bool "Do not use Cleanmarker"
 	default y if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056
 	default y if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528
-	default y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K
-	default y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K
+	default y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K
+	default y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K
 	help
 	  Do not use cleanmarkers if using NAND flash or Dataflash where
 	  the pagesize is not a power of 2
@@ -108,4 +91,22 @@ config BR2_TARGET_ROOTFS_JFFS2_SUMMARY
 	  A summarised image can be mounted faster if support is
 	  enabled in the kernel (CONFIG_JFFS2_SUMMARY)
 
+config BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE
+	bool "Select custom virtual memory page size"
+	help
+	  Use a custom virtual memory page size.  Note that this is not related to
+	  the flash memory page size.  Using this option is only needed if Linux is
+	  configured to use a page size different than 4kB.
+
+
+config BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE
+	hex "Virtual memory page size"
+	depends on BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE
+	default 0x1000
+	help
+	  Set to virtual memory page size of target system (in bytes).  This value
+	  should match the virtual page size in Linux (i.e. this should have the
+	  same value as the value of the PAGE_SIZE macro in Linux).  It is not
+	  related to the flash memory page size.
+
 endif

+ 4 - 1
fs/jffs2/jffs2.mk

@@ -26,7 +26,10 @@ JFFS2_OPTS += -b
 SUMTOOL_OPTS += -b
 endif
 
-JFFS2_OPTS += -s $(BR2_TARGET_ROOTFS_JFFS2_PAGESIZE)
+ifeq ($(BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE),y)
+JFFS2_OPTS += -s $(BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE)
+endif
+
 ifeq ($(BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER),y)
 JFFS2_OPTS += -n
 SUMTOOL_OPTS += -n