public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
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

  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