git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mtd: tests: stresstest: bail out if device has not enough eraseblocks
[pandora-kernel.git]
/
drivers
/
mtd
/
tests
/
mtd_oobtest.c
diff --git
a/drivers/mtd/tests/mtd_oobtest.c
b/drivers/mtd/tests/mtd_oobtest.c
index
dec92ae
..
933f7e5
100644
(file)
--- a/
drivers/mtd/tests/mtd_oobtest.c
+++ b/
drivers/mtd/tests/mtd_oobtest.c
@@
-30,7
+30,7
@@
#define PRINT_PREF KERN_INFO "mtd_oobtest: "
#define PRINT_PREF KERN_INFO "mtd_oobtest: "
-static int dev;
+static int dev
= -EINVAL
;
module_param(dev, int, S_IRUGO);
MODULE_PARM_DESC(dev, "MTD device number to use");
module_param(dev, int, S_IRUGO);
MODULE_PARM_DESC(dev, "MTD device number to use");
@@
-131,7
+131,7
@@
static int write_eraseblock(int ebnum)
for (i = 0; i < pgcnt; ++i, addr += mtd->writesize) {
set_random_data(writebuf, use_len);
for (i = 0; i < pgcnt; ++i, addr += mtd->writesize) {
set_random_data(writebuf, use_len);
- ops.mode = MTD_O
OB_AUTO
;
+ ops.mode = MTD_O
PS_AUTO_OOB
;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = use_len;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = use_len;
@@
-184,7
+184,7
@@
static int verify_eraseblock(int ebnum)
for (i = 0; i < pgcnt; ++i, addr += mtd->writesize) {
set_random_data(writebuf, use_len);
for (i = 0; i < pgcnt; ++i, addr += mtd->writesize) {
set_random_data(writebuf, use_len);
- ops.mode = MTD_O
OB_AUTO
;
+ ops.mode = MTD_O
PS_AUTO_OOB
;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = use_len;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = use_len;
@@
-211,7
+211,7
@@
static int verify_eraseblock(int ebnum)
if (use_offset != 0 || use_len < mtd->ecclayout->oobavail) {
int k;
if (use_offset != 0 || use_len < mtd->ecclayout->oobavail) {
int k;
- ops.mode = MTD_O
OB_AUTO
;
+ ops.mode = MTD_O
PS_AUTO_OOB
;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = mtd->ecclayout->oobavail;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = mtd->ecclayout->oobavail;
@@
-276,7
+276,7
@@
static int verify_eraseblock_in_one_go(int ebnum)
size_t len = mtd->ecclayout->oobavail * pgcnt;
set_random_data(writebuf, len);
size_t len = mtd->ecclayout->oobavail * pgcnt;
set_random_data(writebuf, len);
- ops.mode = MTD_O
OB_AUTO
;
+ ops.mode = MTD_O
PS_AUTO_OOB
;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = len;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = len;
@@
-366,6
+366,13
@@
static int __init mtd_oobtest_init(void)
printk(KERN_INFO "\n");
printk(KERN_INFO "=================================================\n");
printk(KERN_INFO "\n");
printk(KERN_INFO "=================================================\n");
+
+ if (dev < 0) {
+ printk(PRINT_PREF "Please specify a valid mtd-device via module paramter\n");
+ printk(KERN_CRIT "CAREFUL: This test wipes all data on the specified MTD device!\n");
+ return -EINVAL;
+ }
+
printk(PRINT_PREF "MTD device: %d\n", dev);
mtd = get_mtd_device(NULL, dev);
printk(PRINT_PREF "MTD device: %d\n", dev);
mtd = get_mtd_device(NULL, dev);
@@
-507,7
+514,7
@@
static int __init mtd_oobtest_init(void)
addr0 += mtd->erasesize;
/* Attempt to write off end of OOB */
addr0 += mtd->erasesize;
/* Attempt to write off end of OOB */
- ops.mode = MTD_O
OB_AUTO
;
+ ops.mode = MTD_O
PS_AUTO_OOB
;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = 1;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = 1;
@@
-527,7
+534,7
@@
static int __init mtd_oobtest_init(void)
}
/* Attempt to read off end of OOB */
}
/* Attempt to read off end of OOB */
- ops.mode = MTD_O
OB_AUTO
;
+ ops.mode = MTD_O
PS_AUTO_OOB
;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = 1;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = 1;
@@
-551,7
+558,7
@@
static int __init mtd_oobtest_init(void)
"block is bad\n");
else {
/* Attempt to write off end of device */
"block is bad\n");
else {
/* Attempt to write off end of device */
- ops.mode = MTD_O
OB_AUTO
;
+ ops.mode = MTD_O
PS_AUTO_OOB
;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = mtd->ecclayout->oobavail + 1;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = mtd->ecclayout->oobavail + 1;
@@
-571,7
+578,7
@@
static int __init mtd_oobtest_init(void)
}
/* Attempt to read off end of device */
}
/* Attempt to read off end of device */
- ops.mode = MTD_O
OB_AUTO
;
+ ops.mode = MTD_O
PS_AUTO_OOB
;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = mtd->ecclayout->oobavail + 1;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = mtd->ecclayout->oobavail + 1;
@@
-595,7
+602,7
@@
static int __init mtd_oobtest_init(void)
goto out;
/* Attempt to write off end of device */
goto out;
/* Attempt to write off end of device */
- ops.mode = MTD_O
OB_AUTO
;
+ ops.mode = MTD_O
PS_AUTO_OOB
;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = mtd->ecclayout->oobavail;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = mtd->ecclayout->oobavail;
@@
-615,7
+622,7
@@
static int __init mtd_oobtest_init(void)
}
/* Attempt to read off end of device */
}
/* Attempt to read off end of device */
- ops.mode = MTD_O
OB_AUTO
;
+ ops.mode = MTD_O
PS_AUTO_OOB
;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = mtd->ecclayout->oobavail;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = mtd->ecclayout->oobavail;
@@
-655,7
+662,7
@@
static int __init mtd_oobtest_init(void)
addr = (i + 1) * mtd->erasesize - mtd->writesize;
for (pg = 0; pg < cnt; ++pg) {
set_random_data(writebuf, sz);
addr = (i + 1) * mtd->erasesize - mtd->writesize;
for (pg = 0; pg < cnt; ++pg) {
set_random_data(writebuf, sz);
- ops.mode = MTD_O
OB_AUTO
;
+ ops.mode = MTD_O
PS_AUTO_OOB
;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = sz;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = sz;
@@
-683,7
+690,7
@@
static int __init mtd_oobtest_init(void)
continue;
set_random_data(writebuf, mtd->ecclayout->oobavail * 2);
addr = (i + 1) * mtd->erasesize - mtd->writesize;
continue;
set_random_data(writebuf, mtd->ecclayout->oobavail * 2);
addr = (i + 1) * mtd->erasesize - mtd->writesize;
- ops.mode = MTD_O
OB_AUTO
;
+ ops.mode = MTD_O
PS_AUTO_OOB
;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = mtd->ecclayout->oobavail * 2;
ops.len = 0;
ops.retlen = 0;
ops.ooblen = mtd->ecclayout->oobavail * 2;