libfstools: skip JFFS2 padding when BLOCKSIZE was given master
authorDaniel Golle <daniel@makrotopia.org>
Sun, 14 Jul 2024 18:21:09 +0000 (19:21 +0100)
committerDaniel Golle <daniel@makrotopia.org>
Sun, 14 Jul 2024 18:40:03 +0000 (19:40 +0100)
When BLOCKSIZE is defined we call padjffs2 with the defined alignment
to pad towards. That results in one of more block of all-1s instead of
the expected 0xdeadc0de and ultimaltely breaks restoring configuration
as fstools won't look for a the GZ signature indicating the config
backup in this case.
Change that and also look for config backup when all-1s are used for
padding.

Fixes: ee54c6b ("libfstools: skip JFFS2 padding on block devices")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
libfstools/common.c

index 6c513f0f9225abde555e492b0bd0bd8c38b88221..82362f7b59c115116031de342d3757b9d5a30213 100644 (file)
@@ -122,6 +122,7 @@ int block_volume_format(struct volume *v, uint64_t offset, const char *bdev)
 
        switch (volume_identify(v)) {
        case FS_DEADCODE:
+       case FS_NONE:
                /* skip padding */
                fd = open(v->blk, O_RDONLY);
                if (fd < 0) {
@@ -159,8 +160,6 @@ int block_volume_format(struct volume *v, uint64_t offset, const char *bdev)
                        ULOG_ERR("failed extracting config backup from %s\n", v->blk);
                        break;
                }
-               /* fall-through */
-       case FS_NONE:
 do_format:
                ULOG_INFO("overlay filesystem in %s has not been formatted yet\n", v->blk);
                if (use_f2fs(v, offset, bdev))