123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- From 93c33e6a7f3b0aef99d02252e6232a3d8b80f2d5 Mon Sep 17 00:00:00 2001
- From: Hauke Mehrtens <hauke@hauke-m.de>
- Date: Sun, 21 Jan 2018 15:47:50 +0100
- Subject: ubifs: Add option to create UBI FS version 4 on empty UBI volume
- Instead of creating an ubifs file system with format version 5 by
- default on empty UBI volumes add a compile option to create an older ubi
- with file system format version 4 instated. This allows it to be mount
- as a volume on kernel versions < 4.10, which does not support format
- version 5.
- We saw that some people can not access their older data when they
- downgraded from kernel 4.14 to kernel 4.9 to prevent this this option
- would help.
- Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
- ---
- fs/ubifs/Kconfig | 13 +++++++++++++
- fs/ubifs/sb.c | 6 ++++++
- 2 files changed, 19 insertions(+)
- --- a/fs/ubifs/Kconfig
- +++ b/fs/ubifs/Kconfig
- @@ -74,3 +74,16 @@ config UBIFS_FS_SECURITY
- the extended attribute support in advance.
-
- If you are not using a security module, say N.
- +
- +config UBIFS_FS_FORMAT4
- + bool "Use file system format version 4 for new file systems"
- + depends on UBIFS_FS
- + help
- + Instead of creating new file systems with the new ubifs file
- + system version 5, use the old format version 4 for implicitly
- + by the driver created file systems on an empty UBI volume. This
- + makes it possible to mount these file systems also with kernel
- + versions before 4.10. The driver will still support file system
- + format version 5 for ubifs file systems created with version 5.
- +
- + If you are unsure, say N.
- --- a/fs/ubifs/sb.c
- +++ b/fs/ubifs/sb.c
- @@ -176,7 +176,9 @@ static int create_default_filesystem(str
- tmp64 = (long long)max_buds * c->leb_size;
- if (big_lpt)
- sup_flags |= UBIFS_FLG_BIGLPT;
- +#ifndef CONFIG_UBIFS_FS_FORMAT4
- sup_flags |= UBIFS_FLG_DOUBLE_HASH;
- +#endif
-
- sup->ch.node_type = UBIFS_SB_NODE;
- sup->key_hash = UBIFS_KEY_HASH_R5;
- @@ -192,7 +194,11 @@ static int create_default_filesystem(str
- sup->jhead_cnt = cpu_to_le32(DEFAULT_JHEADS_CNT);
- sup->fanout = cpu_to_le32(DEFAULT_FANOUT);
- sup->lsave_cnt = cpu_to_le32(c->lsave_cnt);
- +#ifdef CONFIG_UBIFS_FS_FORMAT4
- + sup->fmt_version = cpu_to_le32(4);
- +#else
- sup->fmt_version = cpu_to_le32(UBIFS_FORMAT_VERSION);
- +#endif
- sup->time_gran = cpu_to_le32(DEFAULT_TIME_GRAN);
- if (c->mount_opts.override_compr)
- sup->default_compr = cpu_to_le16(c->mount_opts.compr_type);
|