]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/mtd/mtdpart.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / mtd / mtdpart.c
index 02ce38fb1fc3fc4c9cc4095ec97d2e3473d31faa..29675edb44b46180bb954ed520f3d329c451a83d 100644 (file)
@@ -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;
 }