All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.