diff options
author | Bhavesh Parekh <bparekh@nvidia.com> | 2011-11-30 13:13:42 +0100 |
---|---|---|
committer | Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2011-11-30 13:13:42 +0100 |
commit | e801e128b2200c40a0ec236cf2330b2586b6e05a (patch) | |
tree | 2f348a09690fea8484d2a4310c1f979f8156b46a /drivers/mtd/ubi/wl.c | |
parent | UBIFS: Use kmemdup rather than duplicating its implementation (diff) | |
download | linux-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.c | 5 |
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) { /* |