UBIFS: add R/O compatibility
Now UBIFS is supported by u-boot. If we ever decide to change the media format, then people will have to upgrade their u-boots to mount new format images. However, very often it is possible to preserve R/O forward-compatibility, even though the write forward-compatibility is not preserved. This patch introduces a new super-block field which stores the R/O compatibility version. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Acked-by: Adrian Hunter <Adrian.Hunter@nokia.com>
This commit is contained in:
@@ -1351,8 +1351,9 @@ static int mount_ubifs(struct ubifs_info *c)
|
||||
x = (long long)c->log_lebs * c->leb_size + c->max_bud_bytes;
|
||||
ubifs_msg("journal size: %lld bytes (%lld KiB, %lld MiB, %d "
|
||||
"LEBs)", x, x >> 10, x >> 20, c->log_lebs + c->max_bud_cnt);
|
||||
ubifs_msg("media format: %d (latest is %d)",
|
||||
c->fmt_version, UBIFS_FORMAT_VERSION);
|
||||
ubifs_msg("media format: w%d/r%d (latest is w%d/r%d)",
|
||||
c->fmt_version, c->ro_compat_version,
|
||||
UBIFS_FORMAT_VERSION, UBIFS_RO_COMPAT_VERSION);
|
||||
ubifs_msg("default compressor: %s", ubifs_compr_name(c->default_compr));
|
||||
ubifs_msg("reserved for root: %llu bytes (%llu KiB)",
|
||||
c->report_rp_size, c->report_rp_size >> 10);
|
||||
@@ -1492,6 +1493,15 @@ static int ubifs_remount_rw(struct ubifs_info *c)
|
||||
{
|
||||
int err, lnum;
|
||||
|
||||
if (c->rw_incompat) {
|
||||
ubifs_err("the file-system is not R/W-compatible");
|
||||
ubifs_msg("on-flash format version is w%d/r%d, but software "
|
||||
"only supports up to version w%d/r%d", c->fmt_version,
|
||||
c->ro_compat_version, UBIFS_FORMAT_VERSION,
|
||||
UBIFS_RO_COMPAT_VERSION);
|
||||
return -EROFS;
|
||||
}
|
||||
|
||||
mutex_lock(&c->umount_mutex);
|
||||
dbg_save_space_info(c);
|
||||
c->remounting_rw = 1;
|
||||
|
Reference in New Issue
Block a user