From patchwork Mon Mar 23 22:42:18 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Andrzej Siewior X-Patchwork-Id: 24938 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 6BC52DE1F7 for ; Tue, 24 Mar 2009 17:01:23 +1100 (EST) Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1Llzdr-0002dH-Vo; Tue, 24 Mar 2009 05:57:39 +0000 Received: from chamillionaire.breakpoint.cc ([85.10.199.196]) by bombadil.infradead.org with esmtps (Exim 4.69 #1 (Red Hat Linux)) id 1Llsqb-0001p5-VK for linux-mtd@lists.infradead.org; Mon, 23 Mar 2009 22:42:28 +0000 Received: id: bigeasy by Chamillionaire.breakpoint.cc authenticated by bigeasy with local (easymta 1.00 BETA 1) id 1LlsqY-0004mo-K7; Mon, 23 Mar 2009 23:42:18 +0100 From: Sebastian Andrzej Siewior To: linux-mtd@lists.infradead.org Subject: [RFC/PATCH] flash_eraseall: extra care if NOR flash is not BIT_WRITEABLE Date: Mon, 23 Mar 2009 23:42:18 +0100 Message-Id: <1237848138-18157-4-git-send-email-sebastian@breakpoint.cc> X-Mailer: git-send-email 1.6.0.6 In-Reply-To: <1237848138-18157-1-git-send-email-sebastian@breakpoint.cc> References: <1237848138-18157-1-git-send-email-sebastian@breakpoint.cc> X-Bad-Reply: References and In-Reply-To but no 'Re:' in Subject. X-Spam-Score: 0.0 (/) X-Mailman-Approved-At: Tue, 24 Mar 2009 01:57:37 -0400 Cc: Sebastian Andrzej Siewior X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linux-mtd-bounces@lists.infradead.org Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org this is difficult because it depends on CONFIG_JFFS2_FS_WRITEBUFFER Signed-off-by: Sebastian Andrzej Siewior --- flash_eraseall.c | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) diff --git a/flash_eraseall.c b/flash_eraseall.c index 0a4010e..3591db5 100644 --- a/flash_eraseall.c +++ b/flash_eraseall.c @@ -64,12 +64,24 @@ static int prepare_clean_marker(mtd_info_t *meminfo) cleanmarker.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK); cleanmarker.nodetype = cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER); + cleanmarker.totlen = cpu_to_je32(sizeof(struct jffs2_unknown_node)); switch (meminfo->type) { case MTD_ROM: case MTD_RAM: + break; + case MTD_NORFLASH: - cleanmarker.totlen = cpu_to_je32(sizeof(struct jffs2_unknown_node)); + /* only if the kernel is compiled with + * CONFIG_JFFS2_FS_WRITEBUFFER + * Now, how to check that? + */ + if (!(meminfo->flags & MTD_BIT_WRITEABLE)) { + int l; + + l = meminfo->writesize > 16 ? meminfo->writesize : 16; + cleanmarker.totlen = cpu_to_je32(l); + } break; case MTD_DATAFLASH: