Message ID | 1438886294.23233.6.camel@mramach3-lnx001 |
---|---|
State | Accepted |
Delegated to: | David Oberhollenzer |
Headers | show |
On 08/06/2015 01:38 PM, Manikandan Ramachandran wrote: > "flash_erase" fails on nand flash with JFFS2 that has OOB size greater than > 32 bytes. "flash_erase" uses "MEMGETOOSEL" to determine OOB size. This ioctl > call is obsolete and returns error if OOB size is more than 32 bytes. > > This patch fixes this issue by using "mtd_write" to update clean-marker > instead of mtd_oob_write. This fix is based on the discussion: > http://lists.infradead.org/pipermail/linux-mtd/2011-September/037958.html. > Hi Manikandan, I'd like to use this patch in our Angstrom/Yocto builds, but our company policy doesn't allow patches that aren't signed off. I wonder if you could re-post this with your sign-off? I'd really appreciate it. Thanks! Graham Moore
On Tue, Sep 6, 2016 at 5:22 PM, Graham Moore <grmoore@opensource.altera.com> wrote: > On 08/06/2015 01:38 PM, Manikandan Ramachandran wrote: >> >> "flash_erase" fails on nand flash with JFFS2 that has OOB size greater >> than >> 32 bytes. "flash_erase" uses "MEMGETOOSEL" to determine OOB size. This >> ioctl >> call is obsolete and returns error if OOB size is more than 32 bytes. >> >> This patch fixes this issue by using "mtd_write" to update clean-marker >> instead of mtd_oob_write. This fix is based on the discussion: >> http://lists.infradead.org/pipermail/linux-mtd/2011-September/037958.html. >> > > Hi Manikandan, > > I'd like to use this patch in our Angstrom/Yocto builds, but our company > policy doesn't allow patches that aren't signed off. > > I wonder if you could re-post this with your sign-off? I'd really > appreciate it. Not needed, I can do that myself. Let's get this reviewed and merged. :-)
On 09/06/2016 11:17 AM, Richard Weinberger wrote: > On Tue, Sep 6, 2016 at 5:22 PM, Graham Moore > <grmoore@opensource.altera.com> wrote: >> On 08/06/2015 01:38 PM, Manikandan Ramachandran wrote: [...] >> >> I wonder if you could re-post this with your sign-off? I'd really >> appreciate it. > > Not needed, I can do that myself. > Let's get this reviewed and merged. :-) > Great, thanks! Graham
diff --git a/flash_erase.c b/flash_erase.c index 933373a..b567173 100644 --- a/flash_erase.c +++ b/flash_erase.c @@ -93,7 +93,7 @@ int main(int argc, char *argv[]) { libmtd_t mtd_desc; struct mtd_dev_info mtd; - int fd, clmpos = 0, clmlen = 8; + int fd; unsigned long long start; unsigned int eb, eb_start, eb_cnt; bool isNAND; @@ -196,37 +196,6 @@ int main(int argc, char *argv[]) if (!isNAND) cleanmarker.totlen = cpu_to_je32(sizeof(cleanmarker)); else { - struct nand_oobinfo oobinfo; - - if (ioctl(fd, MEMGETOOBSEL, &oobinfo) != 0) - return sys_errmsg("%s: unable to get NAND oobinfo", mtd_device); - - /* Check for autoplacement */ - if (oobinfo.useecc == MTD_NANDECC_AUTOPLACE) { - /* Get the position of the free bytes */ - if (!oobinfo.oobfree[0][1]) - return errmsg(" Eeep. Autoplacement selected and no empty space in oob"); - clmpos = oobinfo.oobfree[0][0]; - clmlen = oobinfo.oobfree[0][1]; - if (clmlen > 8) - clmlen = 8; - } else { - /* Legacy mode */ - switch (mtd.oob_size) { - case 8: - clmpos = 6; - clmlen = 2; - break; - case 16: - clmpos = 8; - clmlen = 8; - break; - case 64: - clmpos = 16; - clmlen = 8; - break; - } - } cleanmarker.totlen = cpu_to_je32(8); } cleanmarker.hdr_crc = cpu_to_je32(mtd_crc32(0, &cleanmarker, sizeof(cleanmarker) - 4)); @@ -276,7 +245,8 @@ int main(int argc, char *argv[]) /* write cleanmarker */ if (isNAND) { - if (mtd_write_oob(mtd_desc, &mtd, fd, (uint64_t)offset + clmpos, clmlen, &cleanmarker) != 0) { + if (mtd_write(mtd_desc, &mtd, fd, eb, 0, NULL, 0, &cleanmarker, 0, + MTD_OPS_AUTO_OOB) != 0) { sys_errmsg("%s: MTD writeoob failure", mtd_device); continue; } @@ -286,7 +256,7 @@ int main(int argc, char *argv[]) continue; } } - verbose(!quiet, " Cleanmarker written at %"PRIxoff_t, offset); + verbose(!quiet, " Cleanmarker Updated."); } show_progress(&mtd, offset, eb, eb_start, eb_cnt); bareverbose(!quiet, "\n");
"flash_erase" fails on nand flash with JFFS2 that has OOB size greater than 32 bytes. "flash_erase" uses "MEMGETOOSEL" to determine OOB size. This ioctl call is obsolete and returns error if OOB size is more than 32 bytes. This patch fixes this issue by using "mtd_write" to update clean-marker instead of mtd_oob_write. This fix is based on the discussion: http://lists.infradead.org/pipermail/linux-mtd/2011-September/037958.html. From 0d12dd9eb3053d26e6a3085faf14713d29fcb4ca Mon Sep 17 00:00:00 2001 From: Manikandan <crmanik@gmail.com> Date: Thu, 6 Aug 2015 11:21:46 -0700 Subject: [PATCH] flash_erase Support for large OOB --- flash_erase.c | 38 ++++---------------------------------- 1 file changed, 4 insertions(+), 34 deletions(-)