On Wed, Sep 5, 2018 at 8:23 PM Rasmus Villemoes <rasmus.villem...@prevas.dk> wrote: > > In the case where one deletes an already-non-existing variable, or sets > a variable to the value it already has, there is no point in writing the > environment back, thus reducing wear on the underlying storage > device. > > Signed-off-by: Rasmus Villemoes <rasmus.villem...@prevas.dk>
If you were running with a redundant env, and you were trying to sync both copies, wouldn't you want a non-changing write to happen? > --- > tools/env/fw_env.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c > index a5d75958e1..87aaa15198 100644 > --- a/tools/env/fw_env.c > +++ b/tools/env/fw_env.c > @@ -110,6 +110,7 @@ struct environment { > unsigned char *flags; > char *data; > enum flag_scheme flag_scheme; > + int dirty; > }; > > static struct environment environment = { > @@ -508,6 +509,9 @@ int fw_env_flush(struct env_opts *opts) > if (!opts) > opts = &default_opts; > > + if (!environment.dirty) > + return 0; > + > /* > * Update CRC > */ > @@ -553,7 +557,8 @@ int fw_env_write(char *name, char *value) > > deleting = (oldval && !(value && strlen(value))); > creating = (!oldval && (value && strlen(value))); > - overwriting = (oldval && (value && strlen(value))); > + overwriting = (oldval && (value && strlen(value) && > + strcmp(oldval, value))); > > /* check for permission */ > if (deleting) { > @@ -593,6 +598,7 @@ int fw_env_write(char *name, char *value) > /* Nothing to do */ > return 0; > > + environment.dirty = 1; > if (deleting || overwriting) { > if (*++nxt == '\0') { > *env = '\0'; > @@ -1441,6 +1447,7 @@ int fw_env_open(struct env_opts *opts) > "Warning: Bad CRC, using default > environment\n"); > memcpy(environment.data, default_environment, > sizeof(default_environment)); > + environment.dirty = 1; > } > } else { > flag0 = *environment.flags; > @@ -1503,6 +1510,7 @@ int fw_env_open(struct env_opts *opts) > "Warning: Bad CRC, using default > environment\n"); > memcpy(environment.data, default_environment, > sizeof(default_environment)); > + environment.dirty = 1; > dev_current = 0; > } else { > switch (environment.flag_scheme) { > -- > 2.16.4 > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > https://lists.denx.de/listinfo/u-boot -- Alex Kiernan _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot