impact of 2X_PROGRAM on read operations
David Wagner
david.wagner at free-electrons.com
Mon Jun 6 08:12:15 EDT 2011
Hello,
I have been trying to understand what does the 2X_PROGRAM configuration
(and the IS_2PLANE macro).
At first, I was confused to see that, in onenand_command(), when the
command is "READ", the IS_2PLANE macro modifies the block and page
address. I was expecting this option only to affect program operations.
Then, after seeing jffs2 not finding its magic bitmask after switching
the 2X_PROGRAM configuration off, I understood that, since the 2X
Program only programs one OOB for two blocks, the read operations had to
be impacted anyway.
So, is the following right/almost/wrong ?
Let the size of physical pages/block sizes be 2KiB/128KiB
A filesystem on top of a 2X_PROGRAM-enabled mtd layer sees 4KiB-big
pages. When this FS wants to read one 4KiB page, the mtd layer will read
2KiB pages, two times. The layout of the blocks and pages is:
Even plane Odd plane
+--------------------+--------------------+
| page 0 | page 1 (oob 0&1)| <--- one logical page
| page 2 | page 3 (oob 2&3)| as seen by a filesystem
| page 4 | page 5 (oob 4&5)|
| . | . |
| . | . |
| . | . |
| (Block 0) | (Block 1) |
+--------------------+--------------------+
| page 128 | page 129 (oob) |
| . | . |
| . | . |
| . | . |
| (Block 2) | (Block 3) |
+--------------------+--------------------+
(the page number is not the one that would be computed within
onenand_command but indicates the order in which pages get read or
programmed.)
Is there a way to safely read without 2X_PROGRAM enabled once it has
been flashed with a 2X_PROGRAM-enabled flasher (e.g. patched u-boot).
Regards,
David Wagner.
--
David Wagner, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
More information about the linux-mtd
mailing list