diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/yaffs2/Kconfig | 20 | ||||
-rw-r--r-- | fs/yaffs2/yaffs_guts.c | 3 | ||||
-rw-r--r-- | fs/yaffs2/yaffs_packedtags2.h | 2 |
3 files changed, 24 insertions, 1 deletions
diff --git a/fs/yaffs2/Kconfig b/fs/yaffs2/Kconfig index 85844504057c..20f3991af19b 100644 --- a/fs/yaffs2/Kconfig +++ b/fs/yaffs2/Kconfig @@ -126,6 +126,26 @@ config YAFFS_DISABLE_WIDE_TNODES If unsure, say N. +config YAFFS2_TAG_NO_ECC + bool "Do not include the ECC data structure in packed tags" + depends on YAFFS_YAFFS2 && !YAFFS_DOES_ECC + default n + help + This makes the packedtags structure in yaffs2 not contain the + ECC descriptor. This saves 8 bytes in the OOB on systems with HW ECC. + + Note: Care must be taken to ensure that a kernel with this option + does not attempt to mount an existing file system in flash that was + created with the larger tag. If the HW performs error-checking on the + tag area, it will fail and the file system could be rendered + unmountable. + + If you will be mounting a brand new filesystem and the tools have + written the correct OOB data, it is recommended to say 'Y' here. + + If unsure, say N. + + config YAFFS_ALWAYS_CHECK_CHUNK_ERASED bool "Force chunk erase check" depends on YAFFS_FS diff --git a/fs/yaffs2/yaffs_guts.c b/fs/yaffs2/yaffs_guts.c index 968223eb3e31..8823d2b4d134 100644 --- a/fs/yaffs2/yaffs_guts.c +++ b/fs/yaffs2/yaffs_guts.c @@ -6331,13 +6331,14 @@ static int yaffs_ScanBackwards(yaffs_Device *dev) dev->nFreeChunks++; +#if !defined(CONFIG_YAFFS2_TAG_NO_ECC) && !defined(CONFIG_YAFFS_DOES_ECC) } else if (tags.eccResult == YAFFS_ECC_RESULT_UNFIXED) { T(YAFFS_TRACE_SCAN, (TSTR(" Unfixed ECC in chunk(%d:%d), chunk ignored"TENDSTR), blk, c)); dev->nFreeChunks++; - +#endif } else if (tags.chunkId > 0) { /* chunkId > 0 so it is a data chunk... */ unsigned int endpos; diff --git a/fs/yaffs2/yaffs_packedtags2.h b/fs/yaffs2/yaffs_packedtags2.h index ec30f843bcbd..86b0772e64de 100644 --- a/fs/yaffs2/yaffs_packedtags2.h +++ b/fs/yaffs2/yaffs_packedtags2.h @@ -30,7 +30,9 @@ typedef struct { typedef struct { yaffs_PackedTags2TagsPart t; +#ifndef CONFIG_YAFFS2_TAG_NO_ECC yaffs_ECCOther ecc; +#endif } yaffs_PackedTags2; /* Full packed tags with ECC, used for oob tags */ |