[RFC] slight UBI scan time improvement

Hamish Moffatt hamish at cloud.net.au
Wed Apr 23 21:53:03 EDT 2008


On Wed, Apr 23, 2008 at 05:09:19PM +0300, Artem Bityutskiy wrote:
> You may make it save the BBT on the flash media. So next time you boot,
> it reads the BBT from a pre-defined place (e.g., the last eraseblock)
> and that's it. It does not scan and does not waste time.

Thanks for the info. It looks like this would not save me very much
time so I don't think I will bother.

[    0.960000] Scanning device for bad blocks
[    1.000000] Bad eraseblock 494 at 0x03dc0000
[    1.050000] Bad eraseblock 1300 at 0x0a280000
[    1.140000] Bad eraseblock 2554 at 0x13f40000
[    1.160000] Bad eraseblock 2923 at 0x16d60000
[    1.200000] Bad eraseblock 3349 at 0x1a2a0000
[    1.230000] Bad eraseblock 3790 at 0x1d9c0000
[    1.250000] UBI: attaching mtd9 to ubi-1
[    6.890000] UBI: attached mtd9 to ubi0

I notice in your patch that you read a whole min_io_size block, even
though you only need the EC and VID headers (total of 128 bytes each, or
576 bytes as a single read according to my calculation):

+	/*
+	 * During scanning we read EC and VID headers at one go in to the
+	 * @si->read_buf, and then check EC and VID header. This must be faster
+	 * than doing 2 small read operations.
+	 */
+	si->read_len = ubi->vid_hdr_offset + UBI_VID_HDR_SIZE;
+	si->read_len = ALIGN(si->read_len, ubi->min_io_size);
+	si->read_buf = kmalloc(si->read_len, GFP_KERNEL);
+	if (!si->read_buf) {
+		err = -ENOMEM;
 		goto out_si;
+	}
 
Won't reading 2K bytes be slower than 576 in some cases? If you have
soft ECC then you have to read the whole page anyway, but if you have
hardware ECC then you have no need to read the whole page into RAM.

Hmm. The software ECC seems to work internally on 256 byte blocks.
However it appears that nand_base will always read in a whole page (2K
on my flash). It should be ok to read only a 256-byte block as that's
all you need for ECC calculation? Not a whole 2K which requires 8 ECC
calculations.


Hamish
-- 
Hamish Moffatt VK3SB <hamish at debian.org> <hamish at cloud.net.au>



More information about the linux-mtd mailing list