From patchwork Thu Mar 26 22:41:09 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yauhen Kharuzhy X-Patchwork-Id: 25181 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 3232EDDFBE for ; Fri, 27 Mar 2009 09:45:40 +1100 (EST) Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1LmyGP-0003Mb-8V; Thu, 26 Mar 2009 22:41:29 +0000 Received: from mail-bw0-f159.google.com ([209.85.218.159]) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1LmyGD-0003Ll-4d for linux-mtd@lists.infradead.org; Thu, 26 Mar 2009 22:41:25 +0000 Received: by bwz3 with SMTP id 3so836018bwz.18 for ; Thu, 26 Mar 2009 15:41:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:received:from:to:cc:subject :date:message-id:x-mailer; bh=ivjGnHlgTtrahXXFJwRa0N1uQEitVGbq7HFzy5Io6OA=; b=IQ+8c4gW8XQ88cObRwYAk4a6nFR1ih25Fpa1S+QRF9ZNeZSN9zS3LaK86h8nbNpfi7 jI1AKcUOqskIiX4aH3vlmOH3X1ipAidx1a9sCl7i1ktc3/4ULlTkLlUF3qre79hwo6zY 29vcV8OxuDBW6/mPQU0/X1nuTAjhrkU8Si4/s= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer; b=iDPvD6078S/+ikBP1qJcylRy6EiYmeOEFmp4IkRLZaKKtDRHE/qTHrU8l1767U415q 52mhdU2Bau8LppMFeawuYYQ4PTVH2MD65hn1H/1mDHUypUt8ss8Ozff9M4mYTkgiLlfs FYow4NjLIpTrVo4f6yQwt678OCPtHxS5dgf20= Received: by 10.103.225.11 with SMTP id c11mr104712mur.115.1238107274671; Thu, 26 Mar 2009 15:41:14 -0700 (PDT) Received: from localhost.localdomain (mm-166-254-57-86.leased.line.mgts.by [86.57.254.166]) by mx.google.com with ESMTPS id u9sm1570802muf.25.2009.03.26.15.41.12 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 26 Mar 2009 15:41:13 -0700 (PDT) Received: from jek by localhost.localdomain with local (Exim 4.69) (envelope-from ) id 1LmyG5-0007WM-K2; Fri, 27 Mar 2009 00:41:09 +0200 From: Yauhen Kharuzhy To: linux-mtd@lists.infradead.org Subject: [PATCH] mtdpart: Make ecc_stats more realistic. Date: Fri, 27 Mar 2009 00:41:09 +0200 Message-Id: <1238107269-28883-1-git-send-email-jekhor@gmail.com> X-Mailer: git-send-email 1.6.2 X-Spam-Score: 3.3 (+++) X-Spam-Report: SpamAssassin version 3.2.5 on bombadil.infradead.org summary: Content analysis details: (3.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- 1.1 RCVD_IN_SORBS_WEB RBL: SORBS: sender is a abuseable web server [86.57.254.166 listed in dnsbl.sorbs.net] 2.2 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net [Blocked - see ] Cc: David Woodhouse , Yauhen Kharuzhy 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 In the existing implementation, ecc_stats fields are incremented only by one, regardless of master mtd errors number. For example, if there are N errors were corrected by ECC, partition ecc_stats.corrected will be incremented by one. This commit changes simple increment to sum of old value and parent mtd error count. Signed-off-by: Yauhen Kharuzhy --- drivers/mtd/mtdpart.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c index 3728913..2704a61 100644 --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c @@ -48,8 +48,11 @@ static int part_read(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf) { struct mtd_part *part = PART(mtd); + struct mtd_ecc_stats stats; int res; + stats = part->master->ecc_stats; + if (from >= mtd->size) len = 0; else if (from + len > mtd->size) @@ -58,9 +61,9 @@ static int part_read(struct mtd_info *mtd, loff_t from, size_t len, len, retlen, buf); if (unlikely(res)) { if (res == -EUCLEAN) - mtd->ecc_stats.corrected++; + mtd->ecc_stats.corrected += part->master->ecc_stats.corrected - stats.corrected; if (res == -EBADMSG) - mtd->ecc_stats.failed++; + mtd->ecc_stats.failed += part->master->ecc_stats.failed - stats.failed; } return res; }