diff options
| -rw-r--r-- | drivers/mtd/tests/mtd_nandecctest.c | 6 | ||||
| -rw-r--r-- | drivers/mtd/tests/mtd_test.h | 12 | ||||
| -rw-r--r-- | drivers/mtd/tests/nandbiterrs.c | 4 | ||||
| -rw-r--r-- | drivers/mtd/tests/oobtest.c | 26 | ||||
| -rw-r--r-- | drivers/mtd/tests/pagetest.c | 10 | ||||
| -rw-r--r-- | drivers/mtd/tests/readtest.c | 5 | ||||
| -rw-r--r-- | drivers/mtd/tests/speedtest.c | 36 | ||||
| -rw-r--r-- | drivers/mtd/tests/stresstest.c | 5 | ||||
| -rw-r--r-- | drivers/mtd/tests/subpagetest.c | 25 | ||||
| -rw-r--r-- | drivers/mtd/tests/torturetest.c | 15 | 
10 files changed, 120 insertions, 24 deletions
| diff --git a/drivers/mtd/tests/mtd_nandecctest.c b/drivers/mtd/tests/mtd_nandecctest.c index e579f9027c47..79316159eec6 100644 --- a/drivers/mtd/tests/mtd_nandecctest.c +++ b/drivers/mtd/tests/mtd_nandecctest.c @@ -9,6 +9,8 @@  #include <linux/slab.h>  #include <linux/mtd/nand_ecc.h> +#include "mtd_test.h" +  /*   * Test the implementation for software ECC   * @@ -274,6 +276,10 @@ static int nand_ecc_test_run(const size_t size)  		}  		pr_info("ok - %s-%zd\n",  			nand_ecc_test[i].name, size); + +		err = mtdtest_relax(); +		if (err) +			break;  	}  error:  	kfree(error_data); diff --git a/drivers/mtd/tests/mtd_test.h b/drivers/mtd/tests/mtd_test.h index f437c776c54f..4b7bee17c924 100644 --- a/drivers/mtd/tests/mtd_test.h +++ b/drivers/mtd/tests/mtd_test.h @@ -1,4 +1,16 @@  #include <linux/mtd/mtd.h> +#include <linux/sched.h> + +static inline int mtdtest_relax(void) +{ +	cond_resched(); +	if (signal_pending(current)) { +		pr_info("aborting test due to pending signal!\n"); +		return -EINTR; +	} + +	return 0; +}  int mtdtest_erase_eraseblock(struct mtd_info *mtd, unsigned int ebnum);  int mtdtest_scan_for_bad_eraseblocks(struct mtd_info *mtd, unsigned char *bbt, diff --git a/drivers/mtd/tests/nandbiterrs.c b/drivers/mtd/tests/nandbiterrs.c index 273f7e553954..09a4ccac53a2 100644 --- a/drivers/mtd/tests/nandbiterrs.c +++ b/drivers/mtd/tests/nandbiterrs.c @@ -320,6 +320,10 @@ static int overwrite_test(void)  			break;  		} +		err = mtdtest_relax(); +		if (err) +			break; +  		opno++;  	} diff --git a/drivers/mtd/tests/oobtest.c b/drivers/mtd/tests/oobtest.c index c6b35644a10f..8e8525f0202f 100644 --- a/drivers/mtd/tests/oobtest.c +++ b/drivers/mtd/tests/oobtest.c @@ -112,7 +112,10 @@ static int write_whole_device(void)  			return err;  		if (i % 256 == 0)  			pr_info("written up to eraseblock %u\n", i); -		cond_resched(); + +		err = mtdtest_relax(); +		if (err) +			return err;  	}  	pr_info("written %u eraseblocks\n", i);  	return 0; @@ -318,7 +321,10 @@ static int verify_all_eraseblocks(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; @@ -429,7 +435,10 @@ static int __init mtd_oobtest_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); @@ -642,7 +651,11 @@ static int __init mtd_oobtest_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; +  			addr += mtd->writesize;  		}  	} @@ -680,7 +693,10 @@ static int __init mtd_oobtest_init(void)  		}  		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); diff --git a/drivers/mtd/tests/pagetest.c b/drivers/mtd/tests/pagetest.c index 88296e888e9d..ba1890d5632c 100644 --- a/drivers/mtd/tests/pagetest.c +++ b/drivers/mtd/tests/pagetest.c @@ -407,7 +407,10 @@ static int __init mtd_pagetest_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); @@ -422,7 +425,10 @@ static int __init mtd_pagetest_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); diff --git a/drivers/mtd/tests/readtest.c b/drivers/mtd/tests/readtest.c index a54cf1511114..a3196b750a22 100644 --- a/drivers/mtd/tests/readtest.c +++ b/drivers/mtd/tests/readtest.c @@ -190,7 +190,10 @@ static int __init mtd_readtest_init(void)  			if (!err)  				err = ret;  		} -		cond_resched(); + +		err = mtdtest_relax(); +		if (err) +			goto out;  	}  	if (err) diff --git a/drivers/mtd/tests/speedtest.c b/drivers/mtd/tests/speedtest.c index a77019cb5510..5a6f31af06f9 100644 --- a/drivers/mtd/tests/speedtest.c +++ b/drivers/mtd/tests/speedtest.c @@ -269,7 +269,10 @@ static int __init mtd_speedtest_init(void)  		err = write_eraseblock(i);  		if (err)  			goto out; -		cond_resched(); + +		err = mtdtest_relax(); +		if (err) +			goto out;  	}  	stop_timing();  	speed = calc_speed(); @@ -284,7 +287,10 @@ static int __init mtd_speedtest_init(void)  		err = read_eraseblock(i);  		if (err)  			goto out; -		cond_resched(); + +		err = mtdtest_relax(); +		if (err) +			goto out;  	}  	stop_timing();  	speed = calc_speed(); @@ -303,7 +309,10 @@ static int __init mtd_speedtest_init(void)  		err = write_eraseblock_by_page(i);  		if (err)  			goto out; -		cond_resched(); + +		err = mtdtest_relax(); +		if (err) +			goto out;  	}  	stop_timing();  	speed = calc_speed(); @@ -318,7 +327,10 @@ static int __init mtd_speedtest_init(void)  		err = read_eraseblock_by_page(i);  		if (err)  			goto out; -		cond_resched(); + +		err = mtdtest_relax(); +		if (err) +			goto out;  	}  	stop_timing();  	speed = calc_speed(); @@ -337,7 +349,10 @@ static int __init mtd_speedtest_init(void)  		err = write_eraseblock_by_2pages(i);  		if (err)  			goto out; -		cond_resched(); + +		err = mtdtest_relax(); +		if (err) +			goto out;  	}  	stop_timing();  	speed = calc_speed(); @@ -352,7 +367,10 @@ static int __init mtd_speedtest_init(void)  		err = read_eraseblock_by_2pages(i);  		if (err)  			goto out; -		cond_resched(); + +		err = mtdtest_relax(); +		if (err) +			goto out;  	}  	stop_timing();  	speed = calc_speed(); @@ -385,7 +403,11 @@ static int __init mtd_speedtest_init(void)  			err = multiblock_erase(i, j);  			if (err)  				goto out; -			cond_resched(); + +			err = mtdtest_relax(); +			if (err) +				goto out; +  			i += j;  		}  		stop_timing(); diff --git a/drivers/mtd/tests/stresstest.c b/drivers/mtd/tests/stresstest.c index d90c1c01dac6..e509f8aa9a7e 100644 --- a/drivers/mtd/tests/stresstest.c +++ b/drivers/mtd/tests/stresstest.c @@ -221,7 +221,10 @@ static int __init mtd_stresstest_init(void)  		err = do_operation();  		if (err)  			goto out; -		cond_resched(); + +		err = mtdtest_relax(); +		if (err) +			goto out;  	}  	pr_info("finished, %d operations done\n", op); 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); diff --git a/drivers/mtd/tests/torturetest.c b/drivers/mtd/tests/torturetest.c index 5045cf1b3160..e5d6e6d9532f 100644 --- a/drivers/mtd/tests/torturetest.c +++ b/drivers/mtd/tests/torturetest.c @@ -279,7 +279,10 @@ static int __init tort_init(void)  					       " for 0xFF... pattern\n");  					goto out;  				} -				cond_resched(); + +				err = mtdtest_relax(); +				if (err) +					goto out;  			}  		} @@ -294,7 +297,10 @@ static int __init tort_init(void)  			err = write_pattern(i, patt);  			if (err)  				goto out; -			cond_resched(); + +			err = mtdtest_relax(); +			if (err) +				goto out;  		}  		/* Verify what we wrote */ @@ -314,7 +320,10 @@ static int __init tort_init(void)  					       "0x55AA55..." : "0xAA55AA...");  					goto out;  				} -				cond_resched(); + +				err = mtdtest_relax(); +				if (err) +					goto out;  			}  		} | 
