]> www.infradead.org Git - mtd-utils.git/commitdiff
ubi-utils: ubinize: add support for skipping CRC check of a static volume when opening
authorQuentin Schulz <quentin.schulz@bootlin.com>
Thu, 28 Jun 2018 07:43:44 +0000 (09:43 +0200)
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>
Thu, 28 Jun 2018 08:23:23 +0000 (10:23 +0200)
Let's let the user configure static UBI volume with CRC checking at
opening disabled if desired.

Introduce the skip-check setting for vol_flags configuration of a
volume.

There is no point in having both autoresize and skip-check set as
skip-check is reserved for static volumes only and it's useless to have
a static volume's size set to autoresize.

Suggested-by: Boris Brezillon <boris.brezillon@bootlin.com>
Reviewed-by: Boris Brezillon <boris.brezillon@bootlin.com>
Signed-off-by: Quentin Schulz <quentin.schulz@bootlin.com>
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
ubi-utils/ubinize.c

index c85ff9b22c584bdec0a71cff3cf0456f9aca637b..b6036380373e4fd83e24ed45813bf416f888c45a 100644 (file)
@@ -385,9 +385,21 @@ static int read_section(const struct ubigen_info *ui, const char *sname,
        sprintf(buf, "%s:vol_flags", sname);
        p = iniparser_getstring(args.dict, buf, NULL);
        if (p) {
+               /*
+                * For now, the flag can be either autoresize or skip-check, as
+                * skip-check is reserved for static volumes and autoresize for
+                * such a volume makes no sense.
+                * Once we add another flag that isn't incompatible with each
+                * and every existing flag, we'll have to implement a solution
+                * that allows multiple flags to be set at the same time in
+                * vol_flags setting of the section.
+                */
                if (!strcmp(p, "autoresize")) {
                        verbose(args.verbose, "autoresize flags found");
                        vi->flags |= UBI_VTBL_AUTORESIZE_FLG;
+               } else if (!strcmp(p, "skip-check")) {
+                       verbose(args.verbose, "skip-check flag found");
+                       vi->flags |= UBI_VTBL_SKIP_CRC_CHECK_FLG;
                } else {
                        return errmsg("unknown flags \"%s\" in section \"%s\"",
                                      p, sname);
@@ -523,6 +535,10 @@ int main(int argc, char * const argv[])
                        }
                }
 
+               if (vi[i].flags & UBI_VTBL_SKIP_CRC_CHECK_FLG &&
+                   vi[i].type != UBI_VID_STATIC)
+                       return errmsg("skip-check is only valid for static volumes");
+
                if (vi[i].flags & UBI_VTBL_AUTORESIZE_FLG) {
                        if (autoresize_was_already)
                                return errmsg("only one volume is allowed "