From 8ab4fda66a136f5b0f1e5dff9d3649961ffc9158 Mon Sep 17 00:00:00 2001 From: Robert Young Date: Mon, 31 Jul 2017 18:49:59 +0200 Subject: [PATCH] fstools: add btrfs support Signed-off-by: Robert Young --- block.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/block.c b/block.c index 3e4cfb5..d7a9c5f 100644 --- a/block.c +++ b/block.c @@ -709,6 +709,7 @@ static void check_filesystem(struct probe_info *pr) const char *e2fsck = "/usr/sbin/e2fsck"; const char *f2fsck = "/usr/sbin/fsck.f2fs"; const char *dosfsck = "/usr/sbin/dosfsck"; + const char *btrfsck = "/usr/bin/btrfsck"; const char *ckfs; /* UBIFS does not need stuff like fsck */ @@ -721,6 +722,8 @@ static void check_filesystem(struct probe_info *pr) ckfs = f2fsck; } else if (!strncmp(pr->type, "ext", 3)) { ckfs = e2fsck; + } else if (!strncmp(pr->type, "btrfs", 5)) { + ckfs = btrfsck; } else { ULOG_ERR("check_filesystem: %s is not supported\n", pr->type); return; @@ -736,6 +739,9 @@ static void check_filesystem(struct probe_info *pr) if(!strncmp(pr->type, "f2fs", 4)) { execl(ckfs, ckfs, "-f", pr->dev, NULL); exit(-1); + } else if(!strncmp(pr->type, "btrfs", 5)) { + execl(ckfs, ckfs, "--repair", pr->dev, NULL); + exit(-1); } else { execl(ckfs, ckfs, "-p", pr->dev, NULL); exit(-1); @@ -1429,8 +1435,9 @@ static int mount_extroot(char *cfg) if (pr) { if (strncmp(pr->type, "ext", 3) && strncmp(pr->type, "f2fs", 4) && + strncmp(pr->type, "btrfs", 5) && strncmp(pr->type, "ubifs", 5)) { - ULOG_ERR("extroot: unsupported filesystem %s, try ext4, f2fs or ubifs\n", pr->type); + ULOG_ERR("extroot: unsupported filesystem %s, try ext4, f2fs, btrfs or ubifs\n", pr->type); return -1; } -- 2.25.1