[UBI] is ubi_self_check_all_ff() with mtd_read() return value not match?

Ted Juan ted.juan at gmail.com
Mon May 5 20:43:16 PDT 2014


Hi All,

Sorry to bother all. I got it.
mtd_read() has check the "return ret_code >= mtd->bitflip_threshold ?
-EUCLEAN : 0;"

Thanks.


2014-05-06 9:59 GMT+08:00 Ted Juan <ted.juan at gmail.com>:
> Hi All,
>
> int ubi_self_check_all_ff(struct ubi_device *ubi, int pnum, int offset, int len)
> {
>
>          ............................  // skip
>
>         err = mtd_read(ubi->mtd, addr, len, &read, buf);
>         if (err && !mtd_is_bitflip(err)) {
>                 ubi_err("error %d while reading %d bytes from PEB
> %d:%d, read %zd bytes",
>                         err, len, pnum, offset, read);
>                 goto error;
>         }
>
>         err = ubi_check_pattern(buf, 0xFF, len);
>         ........................... // skip
> }
>
> In the low level nand flash driver (nand_base.c), the nand_read_page()
> always return "max_bitflips".
> That will cause the above code something wrong, err = mtd_read(), err
> is max_bitflips.
> It will "goto error" but not got to check pattern 0xff.
>
> Is it something wrong, or I am misunderstanding?
>
> Thanks much.
>
> regards,
>
> Ted



More information about the linux-mtd mailing list