summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/ubi/wl.c
diff options
context:
space:
mode:
authorBhavesh Parekh <bparekh@nvidia.com>2011-11-30 13:13:42 +0100
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>2011-11-30 13:13:42 +0100
commite801e128b2200c40a0ec236cf2330b2586b6e05a (patch)
tree2f348a09690fea8484d2a4310c1f979f8156b46a /drivers/mtd/ubi/wl.c
parentUBIFS: Use kmemdup rather than duplicating its implementation (diff)
downloadlinux-e801e128b2200c40a0ec236cf2330b2586b6e05a.tar.xz
linux-e801e128b2200c40a0ec236cf2330b2586b6e05a.zip
UBI: fix missing scrub when there is a bit-flip
Under some cases, when scrubbing the PEB if we did not get the lock on the PEB it fails to scrub. Add that PEB again to the scrub list Artem: minor amendments. Cc: stable@kernel.org [2.6.31+] Signed-off-by: Bhavesh Parekh <bparekh@nvidia.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Diffstat (limited to 'drivers/mtd/ubi/wl.c')
-rw-r--r--drivers/mtd/ubi/wl.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c
index 42c684cf3688..277c429a138f 100644
--- a/drivers/mtd/ubi/wl.c
+++ b/drivers/mtd/ubi/wl.c
@@ -795,7 +795,10 @@ static int wear_leveling_worker(struct ubi_device *ubi, struct ubi_work *wrk,
protect = 1;
goto out_not_moved;
}
-
+ if (err == MOVE_RETRY) {
+ scrubbing = 1;
+ goto out_not_moved;
+ }
if (err == MOVE_CANCEL_BITFLIPS || err == MOVE_TARGET_WR_ERR ||
err == MOVE_TARGET_RD_ERR) {
/*