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>
Este cometimento está contido em:

cometido por
Brian Norris

ascendente
d2b51c8087
cometimento
2a6a28e792
@@ -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();
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador