static int do_read(void) { size_t read; int eb = rand_eb(); int offs = rand_offs(); int len = rand_len(offs), err; loff_t addr; if (bbt[eb + 1]) { if (offs >= mtd->erasesize) offs -= mtd->erasesize; if (offs + len > mtd->erasesize) len = mtd->erasesize - offs; } addr = eb * mtd->erasesize + offs; err = mtd_read(mtd, addr, len, &read, readbuf); if (mtd_is_bitflip(err)) err = 0; if (unlikely(err || read != len)) { pr_err("error: read failed at 0x%llx\n", (long long)addr); if (!err) err = -EINVAL; return err; } return 0; }
static int do_read(void) { size_t read = 0; int eb = rand_eb(); int offs = rand_offs(); int len = rand_len(offs), err; loff_t addr; if (bbt[eb + 1]) { if (offs >= mtd->erasesize) offs -= mtd->erasesize; if (offs + len > mtd->erasesize) len = mtd->erasesize - offs; } addr = eb * mtd->erasesize + offs; err = mtd->read(mtd, addr, len, &read, readbuf); if (err == -EUCLEAN) err = 0; if (unlikely(err || read != len)) { printk(PRINT_PREF "error: read failed at 0x%llx of length %d(%x)\n", (long long)addr, len, len); if (!err) err = -EINVAL; return err; } return 0; }
static int do_read(void) { int eb = rand_eb(); int offs = rand_offs(); int len = rand_len(offs); loff_t addr; if (bbt[eb + 1]) { if (offs >= mtd->erasesize) offs -= mtd->erasesize; if (offs + len > mtd->erasesize) len = mtd->erasesize - offs; } addr = (loff_t)eb * mtd->erasesize + offs; return mtdtest_read(mtd, addr, len, readbuf); }