In read-only mode is skipped auto-resize. For pre-build images ready for auto-resize there can be reserved more PEBs as whole size of pre-build image. In read-only we do not do any write operation therefore this would allow to use read-only UBI volume which is not auto-resized yet.
Signed-off-by: Pali Rohár <[email protected]> --- drivers/mtd/ubi/vtbl.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/mtd/ubi/vtbl.c b/drivers/mtd/ubi/vtbl.c index 263743e..1d708c5 100644 --- a/drivers/mtd/ubi/vtbl.c +++ b/drivers/mtd/ubi/vtbl.c @@ -240,8 +240,10 @@ static int vtbl_check(const struct ubi_device *ubi, if (reserved_pebs > ubi->good_peb_count) { ubi_err(ubi, "too large reserved_pebs %d, good PEBs %d", reserved_pebs, ubi->good_peb_count); - err = 9; - goto bad; + if (!ubi->ro_mode) { + err = 9; + goto bad; + } } if (name_len > UBI_VOL_NAME_MAX) { @@ -652,10 +654,12 @@ static int init_volumes(struct ubi_device *ubi, if (ubi->corr_peb_count) ubi_err(ubi, "%d PEBs are corrupted and not used", ubi->corr_peb_count); - return -ENOSPC; + if (!ubi->ro_mode) + return -ENOSPC; + } else { + ubi->rsvd_pebs += reserved_pebs; + ubi->avail_pebs -= reserved_pebs; } - ubi->rsvd_pebs += reserved_pebs; - ubi->avail_pebs -= reserved_pebs; return 0; } -- 1.7.9.5

