|
@@ -578,6 +578,16 @@ static int init_volumes(struct ubi_device *ubi,
|
|
|
vol->ubi = 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 */
|