env: ext4: add support of command env erase
authorPatrick Delaunay <patrick.delaunay@st.com>
Tue, 28 Jul 2020 09:51:26 +0000 (11:51 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 31 Jul 2020 14:13:00 +0000 (10:13 -0400)
Add support of opts erase for env in ext4,
this opts is used by command 'env erase'.

This command only fill the env file (CONFIG_ENV_EXT4_FILE)
with 0, the CRC and the saved environment becomes invalid.

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
env/ext4.c

index 0a10a5e..cc36504 100644 (file)
@@ -99,6 +99,23 @@ static int env_ext4_save(void)
        return 0;
 }
 
+static int env_ext4_erase(void)
+{
+       env_t env_new;
+       int err;
+
+       memset(&env_new, 0, sizeof(env_t));
+
+       err = env_ext4_save_buffer(&env_new);
+       if (err)
+               return err;
+
+       gd->env_valid = ENV_INVALID;
+       puts("done\n");
+
+       return 0;
+}
+
 static int env_ext4_load(void)
 {
        ALLOC_CACHE_ALIGN_BUFFER(char, buf, CONFIG_ENV_SIZE);
@@ -156,4 +173,6 @@ U_BOOT_ENV_LOCATION(ext4) = {
        ENV_NAME("EXT4")
        .load           = env_ext4_load,
        .save           = ENV_SAVE_PTR(env_ext4_save),
+       .erase          = CONFIG_IS_ENABLED(CMD_ERASEENV) ? env_ext4_erase :
+                                                           NULL,
 };