Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=94780d4de2e9339ab93df63420db70f11882634d
Commit:     94780d4de2e9339ab93df63420db70f11882634d
Parent:     2362a53ec59f286495307e0e0d8ef2401e8c5c49
Author:     Artem Bityutskiy <[EMAIL PROTECTED]>
AuthorDate: Tue Dec 4 21:36:12 2007 +0200
Committer:  Artem Bityutskiy <[EMAIL PROTECTED]>
CommitDate: Wed Dec 26 19:15:14 2007 +0200

    UBI: bugfix: allocate mandatory EBs first
    
    First allocate the necessary eraseblocks, then the optional ones.
    Otherwise it allocates all PEBs for bad EB handling, and fails
    on then following EBA LEB allocation.
    
    Reported-by: Adrian Hunter <[EMAIL PROTECTED]>
    Signed-off-by: Artem Bityutskiy <[EMAIL PROTECTED]>
---
 drivers/mtd/ubi/eba.c |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/mtd/ubi/eba.c b/drivers/mtd/ubi/eba.c
index 880fa36..85f50c8 100644
--- a/drivers/mtd/ubi/eba.c
+++ b/drivers/mtd/ubi/eba.c
@@ -1168,6 +1168,15 @@ int ubi_eba_init_scan(struct ubi_device *ubi, struct 
ubi_scan_info *si)
                }
        }
 
+       if (ubi->avail_pebs < EBA_RESERVED_PEBS) {
+               ubi_err("no enough physical eraseblocks (%d, need %d)",
+                       ubi->avail_pebs, EBA_RESERVED_PEBS);
+               err = -ENOSPC;
+               goto out_free;
+       }
+       ubi->avail_pebs -= EBA_RESERVED_PEBS;
+       ubi->rsvd_pebs += EBA_RESERVED_PEBS;
+
        if (ubi->bad_allowed) {
                ubi_calculate_reserved(ubi);
 
@@ -1184,15 +1193,6 @@ int ubi_eba_init_scan(struct ubi_device *ubi, struct 
ubi_scan_info *si)
                ubi->rsvd_pebs  += ubi->beb_rsvd_pebs;
        }
 
-       if (ubi->avail_pebs < EBA_RESERVED_PEBS) {
-               ubi_err("no enough physical eraseblocks (%d, need %d)",
-                       ubi->avail_pebs, EBA_RESERVED_PEBS);
-               err = -ENOSPC;
-               goto out_free;
-       }
-       ubi->avail_pebs -= EBA_RESERVED_PEBS;
-       ubi->rsvd_pebs += EBA_RESERVED_PEBS;
-
        dbg_eba("EBA unit is initialized");
        return 0;
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to