[PATCHv3] env: enable accessing the environment in an EXT4 partition

Message ID 1511804735-16238-1-git-send-email-jorge.ramirez-ortiz@linaro.org
State New
Headers show
Series
  • [PATCHv3] env: enable accessing the environment in an EXT4 partition
Related show

Commit Message

Jorge Ramirez Nov. 27, 2017, 5:45 p.m.
the following commit enables accessing the environment in an ext4
partition. In order to do that, some definitions need to be added to
include/configs/board_x.h file.

For example to store the environment in a file named "/uboot.env" in MMC
"0", where partition "1" contains the EXT4 filesystem, you should define:

  EXT4_ENV_DEVICE_AND_PART        "0:1"
  EXT4_ENV_INTERFACE              "mmc"
  EXT4_ENV_FILE                   "/uboot.env"
---
 env/Kconfig | 7 +++++++
 env/env.c   | 2 ++
 2 files changed, 9 insertions(+)

Comments

Tom Rini Nov. 27, 2017, 5:49 p.m. | #1
On Mon, Nov 27, 2017 at 06:45:35PM +0100, Jorge Ramirez-Ortiz wrote:
> the following commit enables accessing the environment in an ext4

> partition. In order to do that, some definitions need to be added to

> include/configs/board_x.h file.

> 

> For example to store the environment in a file named "/uboot.env" in MMC

> "0", where partition "1" contains the EXT4 filesystem, you should define:

> 

>   EXT4_ENV_DEVICE_AND_PART        "0:1"

>   EXT4_ENV_INTERFACE              "mmc"

>   EXT4_ENV_FILE                   "/uboot.env"


We have examples of these kind of configurations in Kconfig today,
please add them as well so the feature can be fully used, thanks!

-- 
Tom
Jorge Ramirez Nov. 27, 2017, 5:51 p.m. | #2
On 11/27/2017 06:49 PM, Tom Rini wrote:
> On Mon, Nov 27, 2017 at 06:45:35PM +0100, Jorge Ramirez-Ortiz wrote:
>> the following commit enables accessing the environment in an ext4
>> partition. In order to do that, some definitions need to be added to
>> include/configs/board_x.h file.
>>
>> For example to store the environment in a file named "/uboot.env" in MMC
>> "0", where partition "1" contains the EXT4 filesystem, you should define:
>>
>>    EXT4_ENV_DEVICE_AND_PART        "0:1"
>>    EXT4_ENV_INTERFACE              "mmc"
>>    EXT4_ENV_FILE                   "/uboot.env"
> We have examples of these kind of configurations in Kconfig today,
> please add them as well so the feature can be fully used, thanks!
>
oops, yeah, sorry about that. ok doing it now
Jorge Ramirez Nov. 27, 2017, 6:06 p.m. | #3
On 11/27/2017 06:51 PM, Jorge Ramirez wrote:
> On 11/27/2017 06:49 PM, Tom Rini wrote:
>> On Mon, Nov 27, 2017 at 06:45:35PM +0100, Jorge Ramirez-Ortiz wrote:
>>> the following commit enables accessing the environment in an ext4
>>> partition. In order to do that, some definitions need to be added to
>>> include/configs/board_x.h file.
>>>
>>> For example to store the environment in a file named "/uboot.env" in 
>>> MMC
>>> "0", where partition "1" contains the EXT4 filesystem, you should 
>>> define:
>>>
>>>    EXT4_ENV_DEVICE_AND_PART        "0:1"
>>>    EXT4_ENV_INTERFACE              "mmc"
>>>    EXT4_ENV_FILE                   "/uboot.env"
>> We have examples of these kind of configurations in Kconfig today,
>> please add them as well so the feature can be fully used, thanks!
>>
> oops, yeah, sorry about that. ok doing it now

just checking but you realize that I will have to modify env/ext4.c to 
use these new CONFIG_ just like we do for FAT?
for EXT4 we were using include/configs/.h instead as described in the 
commit (so the feature was fully functional, just slightly different to 
FAT when defining the variables).

ok?
Tom Rini Nov. 27, 2017, 6:11 p.m. | #4
On Mon, Nov 27, 2017 at 07:06:02PM +0100, Jorge Ramirez wrote:
> On 11/27/2017 06:51 PM, Jorge Ramirez wrote:

> >On 11/27/2017 06:49 PM, Tom Rini wrote:

> >>On Mon, Nov 27, 2017 at 06:45:35PM +0100, Jorge Ramirez-Ortiz wrote:

> >>>the following commit enables accessing the environment in an ext4

> >>>partition. In order to do that, some definitions need to be added to

> >>>include/configs/board_x.h file.

> >>>

> >>>For example to store the environment in a file named "/uboot.env" in

> >>>MMC

> >>>"0", where partition "1" contains the EXT4 filesystem, you should

> >>>define:

> >>>

> >>>   EXT4_ENV_DEVICE_AND_PART        "0:1"

> >>>   EXT4_ENV_INTERFACE              "mmc"

> >>>   EXT4_ENV_FILE                   "/uboot.env"

> >>We have examples of these kind of configurations in Kconfig today,

> >>please add them as well so the feature can be fully used, thanks!

> >>

> >oops, yeah, sorry about that. ok doing it now

> 

> just checking but you realize that I will have to modify env/ext4.c to use

> these new CONFIG_ just like we do for FAT?

> for EXT4 we were using include/configs/.h instead as described in the commit

> (so the feature was fully functional, just slightly different to FAT when

> defining the variables).

> 

> ok?


Yes, we need to move them to CONFIG_xxx and have them in Kconfig.  And
we should rename them to CONFIG_ENV_EXT4_xxx while at it.  I think I had
to do this when migrating FAT env support and left EXT4 out as there
were no in-tree users at the time so it fell off my TODO list.  Thanks!

-- 
Tom

Patch

diff --git a/env/Kconfig b/env/Kconfig
index 2477bf8..09309ab 100644
--- a/env/Kconfig
+++ b/env/Kconfig
@@ -81,6 +81,13 @@  config ENV_IS_IN_FAT
 	  - CONFIG_FAT_WRITE:
 	  This must be enabled. Otherwise it cannot save the environment file.
 
+config ENV_IS_IN_EXT4
+	bool "Environment is in a EXT4 filesystem"
+	depends on !CHAIN_OF_TRUST
+	select EXT4_WRITE
+	help
+	  Define this if you want to use the EXT4 file system for the environment.
+
 config ENV_IS_IN_FLASH
 	bool "Environment in flash memory"
 	depends on !CHAIN_OF_TRUST
diff --git a/env/env.c b/env/env.c
index 76a5608..7455632 100644
--- a/env/env.c
+++ b/env/env.c
@@ -32,6 +32,8 @@  static enum env_location env_get_default_location(void)
 		return ENVL_EEPROM;
 	else if IS_ENABLED(CONFIG_ENV_IS_IN_FAT)
 		return ENVL_FAT;
+	else if IS_ENABLED(CONFIG_ENV_IS_IN_EXT4)
+		return ENVL_EXT4;
 	else if IS_ENABLED(CONFIG_ENV_IS_IN_FLASH)
 		return ENVL_FLASH;
 	else if IS_ENABLED(CONFIG_ENV_IS_IN_MMC)