diff options
author | Richard Weinberger <richard@nod.at> | 2015-03-29 21:52:06 +0200 |
---|---|---|
committer | Brian Norris <computersforpeace@gmail.com> | 2015-04-05 18:12:53 -0700 |
commit | 2a6a28e7922c07c116ba8f2aa3682c03ef8be678 (patch) | |
tree | a12044a676ee8b2b3668b6e1bcffae46180befb1 /drivers/mtd/tests/subpagetest.c | |
parent | d2b51c808745ca93c020ba34a3cf256ad52adc63 (diff) | |
download | linux-2a6a28e7922c07c116ba8f2aa3682c03ef8be678.tar.gz linux-2a6a28e7922c07c116ba8f2aa3682c03ef8be678.tar.bz2 linux-2a6a28e7922c07c116ba8f2aa3682c03ef8be678.zip |
mtd: Make MTD tests cancelable
I always go nuts when I start an MTD test on a slow device and have to
wait forever until it finishes. From the debug output I already know
what the issue is but I have to wait or reset the board hard. Resetting
is often not an option (remote access, you don't want lose the current
state, etc...).
The solution is easy, check for pending signals at key positions in the
code. Using that one can even stop a test by pressing CTRL-C as
insmod/modprobe have SIGINT pending.
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Diffstat (limited to 'drivers/mtd/tests/subpagetest.c')
-rw-r--r-- | drivers/mtd/tests/subpagetest.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/drivers/mtd/tests/subpagetest.c b/drivers/mtd/tests/subpagetest.c index 0b835c631f91..aecc6ce5a9e1 100644 --- a/drivers/mtd/tests/subpagetest.c +++ b/drivers/mtd/tests/subpagetest.c @@ -269,7 +269,10 @@ static int verify_all_eraseblocks_ff(void) return err; if (i % 256 == 0) pr_info("verified up to eraseblock %u\n", i); - cond_resched(); + + err = mtdtest_relax(); + if (err) + return err; } pr_info("verified %u eraseblocks\n", i); return 0; @@ -346,7 +349,10 @@ static int __init mtd_subpagetest_init(void) goto out; if (i % 256 == 0) pr_info("written up to eraseblock %u\n", i); - cond_resched(); + + err = mtdtest_relax(); + if (err) + goto out; } pr_info("written %u eraseblocks\n", i); @@ -360,7 +366,10 @@ static int __init mtd_subpagetest_init(void) goto out; if (i % 256 == 0) pr_info("verified up to eraseblock %u\n", i); - cond_resched(); + + err = mtdtest_relax(); + if (err) + goto out; } pr_info("verified %u eraseblocks\n", i); @@ -383,7 +392,10 @@ static int __init mtd_subpagetest_init(void) goto out; if (i % 256 == 0) pr_info("written up to eraseblock %u\n", i); - cond_resched(); + + err = mtdtest_relax(); + if (err) + goto out; } pr_info("written %u eraseblocks\n", i); @@ -398,7 +410,10 @@ static int __init mtd_subpagetest_init(void) goto out; if (i % 256 == 0) pr_info("verified up to eraseblock %u\n", i); - cond_resched(); + + err = mtdtest_relax(); + if (err) + goto out; } pr_info("verified %u eraseblocks\n", i); |