123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- From fc0c70a7c6a088072d0c77e5a59d5e9b7754c6db Mon Sep 17 00:00:00 2001
- From: Weijie Gao <[email protected]>
- Date: Mon, 25 Jul 2022 17:01:20 +0800
- Subject: [PATCH 61/71] env: ubi: add support to create environment volume if
- it does not exist
- Add an option to allow environment volume being auto created if not exist.
- Signed-off-by: Weijie Gao <[email protected]>
- ---
- env/Kconfig | 6 ++++++
- env/ubi.c | 20 ++++++++++++++++++++
- 2 files changed, 26 insertions(+)
- --- a/env/Kconfig
- +++ b/env/Kconfig
- @@ -689,6 +689,12 @@ config ENV_UBI_VOLUME_REDUND
- help
- Name of the redundant volume that you want to store the environment in.
-
- +config ENV_UBI_VOLUME_CREATE
- + bool "Create UBI volume if not exist"
- + depends on ENV_IS_IN_UBI
- + help
- + Create the UBI volume if it does not exist.
- +
- config ENV_UBI_VID_OFFSET
- int "ubi environment VID offset"
- depends on ENV_IS_IN_UBI
- --- a/env/ubi.c
- +++ b/env/ubi.c
- @@ -106,6 +106,18 @@ static int env_ubi_save(void)
- #endif /* CONFIG_SYS_REDUNDAND_ENVIRONMENT */
- #endif /* CONFIG_CMD_SAVEENV */
-
- +int __weak env_ubi_volume_create(const char *volume)
- +{
- + struct ubi_volume *vol;
- +
- + vol = ubi_find_volume((char *)volume);
- + if (vol)
- + return 0;
- +
- + return ubi_create_vol((char *)volume, CONFIG_ENV_SIZE, true,
- + UBI_VOL_NUM_AUTO, false);
- +}
- +
- #ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
- static int env_ubi_load(void)
- {
- @@ -135,6 +147,11 @@ static int env_ubi_load(void)
- return -EIO;
- }
-
- + if (IS_ENABLED(CONFIG_ENV_UBI_VOLUME_CREATE)) {
- + env_ubi_volume_create(CONFIG_ENV_UBI_VOLUME);
- + env_ubi_volume_create(CONFIG_ENV_UBI_VOLUME_REDUND);
- + }
- +
- read1_fail = ubi_volume_read(CONFIG_ENV_UBI_VOLUME, (void *)tmp_env1,
- CONFIG_ENV_SIZE);
- if (read1_fail)
- @@ -172,6 +189,9 @@ static int env_ubi_load(void)
- return -EIO;
- }
-
- + if (IS_ENABLED(CONFIG_ENV_UBI_VOLUME_CREATE))
- + env_ubi_volume_create(CONFIG_ENV_UBI_VOLUME);
- +
- if (ubi_volume_read(CONFIG_ENV_UBI_VOLUME, buf, CONFIG_ENV_SIZE)) {
- printf("\n** Unable to read env from %s:%s **\n",
- CONFIG_ENV_UBI_PART, CONFIG_ENV_UBI_VOLUME);
|