aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd
diff options
context:
space:
mode:
authorBrijesh Singh <brijesh.s.singh@gmail.com>2007-07-06 07:35:43 -0400
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2007-07-18 09:57:52 -0400
commit76eafe479ec30dd72b8cf209c4f576eac3c93112 (patch)
tree68fa0b8943e8629a9208951a2d8dede4b8de17e6 /drivers/mtd
parent2f176f79877937082ce052977e552a75e23a73d1 (diff)
UBI: bugfix in sqnum calculation
Hi,I came across problem of having two leb with same sequence no.This happens when we continuously write one block again and again and reboot machine before background thread erases those blocks. The problem here was,when we find two blocks with same sequence no,we take the higher one,but we were not updating max seq no,so next block may have the same seqnum. This patch solves this problem. Signed-off-by: Brijesh Singh <brijesh.s.singh@gmail.com> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'drivers/mtd')
-rw-r--r--drivers/mtd/ubi/scan.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/mtd/ubi/scan.c b/drivers/mtd/ubi/scan.c
index 23e30ac089ce..ce26b1b25ba7 100644
--- a/drivers/mtd/ubi/scan.c
+++ b/drivers/mtd/ubi/scan.c
@@ -437,6 +437,9 @@ int ubi_scan_add_used(const struct ubi_device *ubi, struct ubi_scan_info *si,
437 if (IS_ERR(sv) < 0) 437 if (IS_ERR(sv) < 0)
438 return PTR_ERR(sv); 438 return PTR_ERR(sv);
439 439
440 if (si->max_sqnum < sqnum)
441 si->max_sqnum = sqnum;
442
440 /* 443 /*
441 * Walk the RB-tree of logical eraseblocks of volume @vol_id to look 444 * Walk the RB-tree of logical eraseblocks of volume @vol_id to look
442 * if this is the first instance of this logical eraseblock or not. 445 * if this is the first instance of this logical eraseblock or not.
@@ -563,9 +566,6 @@ int ubi_scan_add_used(const struct ubi_device *ubi, struct ubi_scan_info *si,
563 sv->last_data_size = be32_to_cpu(vid_hdr->data_size); 566 sv->last_data_size = be32_to_cpu(vid_hdr->data_size);
564 } 567 }
565 568
566 if (si->max_sqnum < sqnum)
567 si->max_sqnum = sqnum;
568
569 sv->leb_count += 1; 569 sv->leb_count += 1;
570 rb_link_node(&seb->u.rb, parent, p); 570 rb_link_node(&seb->u.rb, parent, p);
571 rb_insert_color(&seb->u.rb, &sv->root); 571 rb_insert_color(&seb->u.rb, &sv->root);