public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH] UBI: block: Continue creating ubiblocks after an initialization error
@ 2014-12-17 23:16 Daniel Ehrenberg
  2014-12-18  0:44 ` Richard Weinberger
  2014-12-18 11:25 ` Ezequiel Garcia
  0 siblings, 2 replies; 5+ messages in thread
From: Daniel Ehrenberg @ 2014-12-17 23:16 UTC (permalink / raw)
  To: linux-mtd@lists.infradead.org; +Cc: grundler, Gwendal Grignou

If one ubi volume is corrupted but another is not, it should be
possible to initialize that ubiblock from a kernel commandline which
includes both of them. This patch changes the error handling behavior
in initializing ubiblock to ensure that all parameters are attempted
even if one fails. If there is a failure, it returns one of the
error status codes. It also makes error messages more descriptive
by including the name of the UBI volume that failed.

Tested: Formatted ubi volume /dev/ubi5_0 in a corrupt way and
dev/ubi3_0 properly and included "ubi.block=5,0 ubi.block=3,0" on
the kernel command line. At boot, I see the following in the console:
[   21.082420] UBI error: ubiblock_create_from_param: block: can't
open volume on ubi5_0, err=-19
[   21.084268] UBI: ubiblock3_0 created from ubi3:0(rootfs)

Signed-off-by: Dan Ehrenberg <dehrenberg@chromium.org>
---
 drivers/mtd/ubi/block.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/mtd/ubi/block.c b/drivers/mtd/ubi/block.c
index 8876c7d..32eeeee 100644
--- a/drivers/mtd/ubi/block.c
+++ b/drivers/mtd/ubi/block.c
@@ -596,10 +596,11 @@ static int __init ubiblock_create_from_param(void)

                desc = open_volume_desc(p->name, p->ubi_num, p->vol_id);
                if (IS_ERR(desc)) {
-                       ubi_err("block: can't open volume, err=%ld\n",
-                               PTR_ERR(desc));
+                       ubi_err(
+                               "block: can't open volume on ubi%d_%d, err=%ld",
+                               p->ubi_num, p->vol_id, PTR_ERR(desc));
                        ret = PTR_ERR(desc);
-                       break;
+                       continue;
                }

                ubi_get_volume_info(desc, &vi);
@@ -607,9 +608,10 @@ static int __init ubiblock_create_from_param(void)

                ret = ubiblock_create(&vi);
                if (ret) {
-                       ubi_err("block: can't add '%s' volume, err=%d\n",
-                               vi.name, ret);
-                       break;
+                       ubi_err(
+                               "block: can't add '%s' volume on
ubi%d_%d, err=%d",
+                               vi.name, p->ubi_num, p->vol_id, ret);
+                       continue;
                }
        }
        return ret;


--
2.2.0.rc0.207.ga3a616c

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-12-18 22:46 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-17 23:16 [PATCH] UBI: block: Continue creating ubiblocks after an initialization error Daniel Ehrenberg
2014-12-18  0:44 ` Richard Weinberger
2014-12-18 11:25 ` Ezequiel Garcia
2014-12-18 22:17   ` Daniel Ehrenberg
2014-12-18 22:46   ` Grant Grundler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox