Add BTRFS

Signed-off-by: liberodark <liberodark@gmail.com>
[Fiona: rebased on v18, dropped conflicting change in README.rst]
Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
This commit is contained in:
liberodark 2024-01-18 10:40:40 +01:00 committed by Fiona Klute
parent 00009af6e2
commit 4b6551016b
7 changed files with 83 additions and 0 deletions

View File

@ -23,6 +23,7 @@ genimage_SOURCES = \
image-cramfs.c \
image-ext2.c \
image-f2fs.c \
image-btrfs.c \
image-file.c \
image-fip.c \
image-fit.c \
@ -74,6 +75,7 @@ EXTRA_DIST += \
test/ext4test.1.dump \
test/ext4test.2.dump \
test/f2fs.config \
test/btrfs.config \
test/fip.config \
test/fit.its \
test/fit.config \

View File

@ -408,6 +408,11 @@ static struct config opts[] = {
.opt = CFG_STR("mkfsf2fs", NULL, CFGF_NONE),
.env = "GENIMAGE_MKFSF2FS",
.def = "mkfs.f2fs",
}, {
.name = "mkfsbtrfs",
.opt = CFG_STR("mkfsfbtrfs", NULL, CFGF_NONE),
.env = "GENIMAGE_MKFSBTRFS",
.def = "mkfs.btrfs",
}, {
.name = "sloadf2fs",
.opt = CFG_STR("sloadf2fs", NULL, CFGF_NONE),

View File

@ -45,6 +45,7 @@ static struct image_handler *handlers[] = {
&ext3_handler,
&ext4_handler,
&f2fs_handler,
&btrfs_handler,
&file_handler,
&fit_handler,
&fip_handler,

View File

@ -112,6 +112,7 @@ extern struct image_handler ext2_handler;
extern struct image_handler ext3_handler;
extern struct image_handler ext4_handler;
extern struct image_handler f2fs_handler;
extern struct image_handler btrfs_handler;
extern struct image_handler file_handler;
extern struct image_handler flash_handler;
extern struct image_handler hdimage_handler;

60
image-btrfs.c Normal file
View File

@ -0,0 +1,60 @@
/*
* Copyright (c) 2022 Tomas Mudrunka <harviecz@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <confuse.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include "genimage.h"
static int btrfs_generate(struct image *image)
{
int ret;
char *label = cfg_getstr(image->imagesec, "label");
ret = prepare_image(image, image->size);
if(ret)
return ret;
ret = systemp(image, "%s %s %s %s '%s' '%s'",
get_opt("mkfsbtrfs"),
label ? "-L" : "",
label ? label : "",
label ? "-r" : "",
mountpath(image), /* source dir */
imageoutfile(image)); /* destination file */
if(ret || image->empty)
return ret;
return ret;
}
static cfg_opt_t btrfs_opts[] = {
CFG_STR("label", NULL, CFGF_NONE),
CFG_END()
};
struct image_handler btrfs_handler = {
.type = "btrfs",
.generate = btrfs_generate,
.opts = btrfs_opts,
};

6
test/btrfs.config Normal file
View File

@ -0,0 +1,6 @@
image test.btrfs {
btrfs {
label = "btrfstest"
}
size = 64M
}

View File

@ -35,6 +35,14 @@ test_expect_success mkfs_f2fs,sload_f2fs,fsck_f2fs "f2fs" "
fsck.f2fs images/test.f2fs
"
exec_test_set_prereq mkfs.btrfs
exec_test_set_prereq sload.btrfs
exec_test_set_prereq fsck.btrfs
test_expect_success mkfs_btrfs,fsck_btrfs "btrfs" "
run_genimage_root btrfs.config test.btrfs
btrfsck images/test.btrfs
"
exec_test_set_prereq mksquashfs
test_expect_success mksquashfs "squashfs" "
run_genimage_root squashfs.config test.squashfs &&