OSDN Git Service

ubi: Initialize Fastmap checkmapping correctly
authorRichard Weinberger <richard@nod.at>
Tue, 12 Jun 2018 07:33:16 +0000 (09:33 +0200)
committerRichard Weinberger <richard@nod.at>
Tue, 14 Aug 2018 22:06:15 +0000 (00:06 +0200)
We cannot do it last, otherwithse it will be skipped for dynamic
volumes.

Reported-by: Lachmann, Juergen <juergen.lachmann@harman.com>
Fixes: 34653fd8c46e ("ubi: fastmap: Check each mapping only once")
Signed-off-by: Richard Weinberger <richard@nod.at>
drivers/mtd/ubi/vtbl.c

index 94d7a86..7504f43 100644 (file)
@@ -579,6 +579,16 @@ static int init_volumes(struct ubi_device *ubi,
                reserved_pebs += vol->reserved_pebs;
 
                /*
+                * We use ubi->peb_count and not vol->reserved_pebs because
+                * we want to keep the code simple. Otherwise we'd have to
+                * resize/check the bitmap upon volume resize too.
+                * Allocating a few bytes more does not hurt.
+                */
+               err = ubi_fastmap_init_checkmap(vol, ubi->peb_count);
+               if (err)
+                       return err;
+
+               /*
                 * In case of dynamic volume UBI knows nothing about how many
                 * data is stored there. So assume the whole volume is used.
                 */
@@ -620,16 +630,6 @@ static int init_volumes(struct ubi_device *ubi,
                        (long long)(vol->used_ebs - 1) * vol->usable_leb_size;
                vol->used_bytes += av->last_data_size;
                vol->last_eb_bytes = av->last_data_size;
-
-               /*
-                * We use ubi->peb_count and not vol->reserved_pebs because
-                * we want to keep the code simple. Otherwise we'd have to
-                * resize/check the bitmap upon volume resize too.
-                * Allocating a few bytes more does not hurt.
-                */
-               err = ubi_fastmap_init_checkmap(vol, ubi->peb_count);
-               if (err)
-                       return err;
        }
 
        /* And add the layout volume */