From: Scott Wood <scottwood@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 2/2] env_nand.c: support falling back to redundant env when writing
Date: Wed, 17 Jul 2013 17:25:31 -0500 [thread overview]
Message-ID: <1374099931.8183.370@snotra> (raw)
In-Reply-To: <1372271126-2642-3-git-send-email-phil.sutter@viprinet.com> (from phil.sutter@viprinet.com on Wed Jun 26 13:25:26 2013)
On 06/26/2013 01:25:26 PM, Phil Sutter wrote:
> Without this patch, when the currently chosen environment to be
> written
> has bad blocks, saveenv fails completely. Instead, when there is
> redundant environment fall back to the other copy. Environment reading
> needs no adjustment, as the fallback logic for incomplete writes
> applies
> to this case as well.
>
> Signed-off-by: Phil Sutter <phil.sutter@viprinet.com>
> ---
> common/env_nand.c | 105
> ++++++++++++++++++++++++------------------------------
> 1 file changed, 46 insertions(+), 59 deletions(-)
Missing description of changes since v2
> -#else /* ! CONFIG_ENV_OFFSET_REDUND */
> +
> +static unsigned char env_flags;
env_nand.c:193:22: warning: 'env_flags' defined but not used
[-Wunused-variable]
(when CONFIG_ENV_OFFSET_REDUND is not defined)
> int saveenv(void)
> {
> int ret = 0;
> ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
> ssize_t len;
> char *res;
> + int env_idx;
> nand_erase_options_t nand_erase_options;
> + static const struct env_location location[] = {
> + {
> + .name = "NAND",
> + .erase_opts = &nand_erase_options,
> + .offset = CONFIG_ENV_OFFSET,
> + },
> +#ifdef CONFIG_ENV_OFFSET_REDUND
> + {
> + .name = "redundant NAND",
> + .erase_opts = &nand_erase_options,
> + .offset = CONFIG_ENV_OFFSET_REDUND,
> + },
> +#endif
> + };
> +
env_nand.c:206:4: error: initializer element is not constant
env_nand.c:206:4: error: (near initialization for
'location[0].erase_opts')
You could make nand_erase_options static, or you could use code to
assign
that field.
Is this code untested, or did you accidentally send an old version?
> - puts("Writing to Nand... ");
> - if (writeenv(CONFIG_ENV_OFFSET, (u_char *)env_new)) {
> - puts("FAILED!\n");
> - return 1;
> + ret = erase_and_write_env(&location[env_idx], (u_char
> *)env_new);
env_nand.c:237:2: warning: passing argument 1 of 'erase_and_write_env'
discards 'const' qualifier from pointer target type [enabled by default]
env_nand.c:177:12: note: expected 'struct env_location *' but argument
is
of type 'const struct env_location *'
> +#ifdef CONFIG_ENV_OFFSET_REDUND
> + if (ret) {
> + env_idx = (env_idx + 1) & 1;
> + ret = erase_and_write_env(&location[env_idx],
> + (u_char *)env_new);
Can you print a message here specifically saying that redundancy has
been
lost? I realize that the previous erase_and_write_env will have printed
"FAILED", but it'd be nice to be explicit about the consequences.
-Scott
next prev parent reply other threads:[~2013-07-17 22:25 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-21 12:59 [U-Boot] [PATCH 1/4] Optimized nand_read_buf for kirkwood Phil Sutter
2012-11-21 12:59 ` [U-Boot] [PATCH 2/4] env_nand.c: support falling back to redundant env when writing Phil Sutter
2012-11-27 22:04 ` Scott Wood
2012-11-28 21:06 ` Phil Sutter
2012-12-06 18:18 ` Scott Wood
2012-12-07 11:53 ` Phil Sutter
2012-12-07 16:58 ` Phil Sutter
2012-12-07 17:38 ` Scott Wood
2012-12-10 13:41 ` Phil Sutter
2012-12-11 23:12 ` Scott Wood
2012-12-20 21:28 ` Phil Sutter
2012-12-20 21:41 ` Scott Wood
2012-12-21 10:34 ` Phil Sutter
2012-12-22 2:29 ` Scott Wood
2012-11-21 12:59 ` [U-Boot] [PATCH 3/4] env_nand.c: do warn only if really no valid environment could be loaded Phil Sutter
2012-11-27 22:06 ` Scott Wood
2012-11-27 22:07 ` Scott Wood
2013-02-20 0:33 ` Scott Wood
2012-11-21 12:59 ` [U-Boot] [PATCH 4/4] common/env_nand.c: calculate crc only when readenv was OK Phil Sutter
2012-11-26 3:46 ` [U-Boot] [PATCH 1/4] Optimized nand_read_buf for kirkwood Prafulla Wadaskar
2012-11-26 10:29 ` Phil Sutter
2012-11-26 10:33 ` Phil Sutter
2012-11-26 23:39 ` Scott Wood
2012-12-20 6:44 ` Prafulla Wadaskar
2012-12-20 10:55 ` Phil Sutter
2013-02-21 17:21 ` [U-Boot] Version 2 of Kirkwood and env_nand improvements Phil Sutter
2013-02-21 17:21 ` [U-Boot] [PATCHv2 1/4] Optimized nand_read_buf for kirkwood (V3) Phil Sutter
2013-02-23 1:26 ` Scott Wood
2013-02-21 17:21 ` [U-Boot] [PATCHv2 2/4] env_nand.c: support falling back to redundant env when writing Phil Sutter
2013-02-23 1:32 ` Scott Wood
2013-02-21 17:21 ` [U-Boot] [PATCHv2 3/4] env_nand.c: clarify log messages when env reading fails Phil Sutter
2013-02-23 1:59 ` Scott Wood
2013-02-25 9:39 ` Phil Sutter
2013-02-25 22:40 ` Scott Wood
2013-02-21 17:21 ` [U-Boot] [PATCHv2 4/4] common/env_nand.c: calculate crc only when readenv was OK Phil Sutter
2013-02-23 2:00 ` Scott Wood
2013-06-26 18:25 ` [U-Boot] Version 3 of Kirkwood and env_nand improvements Phil Sutter
2013-06-26 18:25 ` [U-Boot] [PATCH v3 1/2] Optimized nand_read_buf for kirkwood Phil Sutter
2013-06-27 10:02 ` Albert ARIBAUD
2013-08-19 23:29 ` [U-Boot] [U-Boot,v3,1/2] " Scott Wood
2013-06-26 18:25 ` [U-Boot] [PATCH v3 2/2] env_nand.c: support falling back to redundant env when writing Phil Sutter
2013-07-17 22:25 ` Scott Wood [this message]
2013-07-19 10:09 ` Phil Sutter
2013-07-19 10:20 ` [U-Boot] [PATCH] " Phil Sutter
2013-07-19 10:30 ` Phil Sutter
2013-08-22 22:50 ` [U-Boot] " Scott Wood
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1374099931.8183.370@snotra \
--to=scottwood@freescale.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox