From patchwork Thu Jun 21 21:50:08 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [15/15] UBI: Fastmap: Write a fastmap also while detaching. Date: Thu, 21 Jun 2012 11:50:08 -0000 From: Richard Weinberger X-Patchwork-Id: 166411 Message-Id: <1340315408-27375-16-git-send-email-richard@nod.at> To: linux-mtd@lists.infradead.org Cc: artem.bityutskiy@linux.intel.com, linux-kernel@vger.kernel.org, adrian.hunter@intel.com, Heinz.Egger@linutronix.de, thomas.wucher@linutronix.de, shmulik.ladkani@gmail.com, Richard Weinberger , tglx@linutronix.de, Marius.Mazarel@ugal.ro, tim.bird@am.sony.com To ensure that fastmap knows all EC values we have to do this. Otherwise fastmap my miss EC updates. E.g: If the WL sub-system moves data from PEB A to PEB B. It picks B from the WL pool, moves the data to it an eraes A. If we detach now (or a power cut happens) the new EC value is lost. Signed-off-by: Richard Weinberger --- drivers/mtd/ubi/build.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c index 186bc19..611d0c4 100644 --- a/drivers/mtd/ubi/build.c +++ b/drivers/mtd/ubi/build.c @@ -1051,6 +1051,8 @@ int ubi_detach_mtd_dev(int ubi_num, int anyway) ubi_notify_all(ubi, UBI_VOLUME_REMOVED, NULL); dbg_msg("detaching mtd%d from ubi%d", ubi->mtd->index, ubi_num); + ubi_update_fastmap(ubi); + /* * Before freeing anything, we have to stop the background thread to * prevent it from doing anything on this device while we are freeing. @@ -1058,10 +1060,6 @@ int ubi_detach_mtd_dev(int ubi_num, int anyway) if (ubi->bgt_thread) kthread_stop(ubi->bgt_thread); - /* If no fastmap is present on the FLASH write one. */ - if (!ubi->fm) - ubi_update_fastmap(ubi); - /* * Get a reference to the device in order to prevent 'dev_release()' * from freeing the @ubi object.