From 0c10be57b72901464d4bb9ea7b5383c42b08bcae Mon Sep 17 00:00:00 2001 From: Nitin A Kamble Date: Thu, 9 Jun 2011 18:12:12 -0700 Subject: btrfs-tools: new recipe for tools to operate on btrfs images Added these patches to the recipe to get it to work as desired: Upstream patches from tmp & for-dragonn branches of repository http://git.kernel.org/?p=linux/kernel/git/mason/btrfs-progs-unstable.git Also included the debian patches. Nitin's patch to make the makefile cross friendly And Xin Zhong's patch to improve mkfs.btrfs (From OE-Core rev: 57a2140dc9673c65fea088fbd024fbd002e6937b) Signed-off-by: Nitin A Kamble Signed-off-by: Richard Purdie --- .../upstream-tmp/0008-Update-for-lzo-support.patch | 203 +++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 meta/recipes-devtools/btrfs-tools/btrfs-tools/upstream-tmp/0008-Update-for-lzo-support.patch (limited to 'meta/recipes-devtools/btrfs-tools/btrfs-tools/upstream-tmp/0008-Update-for-lzo-support.patch') diff --git a/meta/recipes-devtools/btrfs-tools/btrfs-tools/upstream-tmp/0008-Update-for-lzo-support.patch b/meta/recipes-devtools/btrfs-tools/btrfs-tools/upstream-tmp/0008-Update-for-lzo-support.patch new file mode 100644 index 0000000000..a1bd4152fb --- /dev/null +++ b/meta/recipes-devtools/btrfs-tools/btrfs-tools/upstream-tmp/0008-Update-for-lzo-support.patch @@ -0,0 +1,203 @@ +Upstream-Status: Inappropriate [Backport] +From 97e64f8cb21685b7359169f3047c0d082b0ff7e8 Mon Sep 17 00:00:00 2001 +From: Li Zefan +Date: Thu, 18 Nov 2010 03:49:56 +0000 +Subject: [PATCH 08/15] Update for lzo support + +[Btrfs-Progs][V2] Update for lzo support + +- Add incompat flag, otherwise btrfs-progs will report error + when operating on btrfs filesystems mounted with lzo option. + +- Update man page. + +- Allow to turn on lzo compression for defrag operation: + + # btrfs filesystem defragment -c[zlib, lzo] + + Note: "-c zlib" will fail, because that's how getopt() works + for optional arguments. + +Signed-off-by: Li Zefan +Signed-off-by: Chris Mason +--- + btrfs.c | 2 +- + btrfs_cmds.c | 24 ++++++++++++++++++++---- + ctree.h | 10 +++++++--- + ioctl.h | 9 ++++++++- + man/btrfs.8.in | 10 ++++++---- + 5 files changed, 42 insertions(+), 13 deletions(-) + +diff --git a/btrfs.c b/btrfs.c +index 46314cf..1b4f403 100644 +--- a/btrfs.c ++++ b/btrfs.c +@@ -65,7 +65,7 @@ static struct Command commands[] = { + "List the recently modified files in a filesystem." + }, + { do_defrag, -1, +- "filesystem defragment", "[-vcf] [-s start] [-l len] [-t size] | [|...]\n" ++ "filesystem defragment", "[-vf] [-c[zlib,lzo]] [-s start] [-l len] [-t size] | [|...]\n" + "Defragment a file or a directory." + }, + { do_set_default_subvol, 2, +diff --git a/btrfs_cmds.c b/btrfs_cmds.c +index c21a007..26d4fcc 100644 +--- a/btrfs_cmds.c ++++ b/btrfs_cmds.c +@@ -142,10 +142,21 @@ static u64 parse_size(char *s) + return atoll(s) * mult; + } + ++static int parse_compress_type(char *s) ++{ ++ if (strcmp(optarg, "zlib") == 0) ++ return BTRFS_COMPRESS_ZLIB; ++ else if (strcmp(optarg, "lzo") == 0) ++ return BTRFS_COMPRESS_LZO; ++ else { ++ fprintf(stderr, "Unknown compress type %s\n", s); ++ exit(1); ++ }; ++} ++ + int do_defrag(int ac, char **av) + { + int fd; +- int compress = 0; + int flush = 0; + u64 start = 0; + u64 len = (u64)-1; +@@ -157,15 +168,18 @@ int do_defrag(int ac, char **av) + int fancy_ioctl = 0; + struct btrfs_ioctl_defrag_range_args range; + int e=0; ++ int compress_type = BTRFS_COMPRESS_NONE; + + optind = 1; + while(1) { +- int c = getopt(ac, av, "vcfs:l:t:"); ++ int c = getopt(ac, av, "vc::fs:l:t:"); + if (c < 0) + break; + switch(c) { + case 'c': +- compress = 1; ++ compress_type = BTRFS_COMPRESS_ZLIB; ++ if (optarg) ++ compress_type = parse_compress_type(optarg); + fancy_ioctl = 1; + break; + case 'f': +@@ -203,8 +217,10 @@ int do_defrag(int ac, char **av) + range.start = start; + range.len = len; + range.extent_thresh = thresh; +- if (compress) ++ if (compress_type) { + range.flags |= BTRFS_DEFRAG_RANGE_COMPRESS; ++ range.compress_type = compress_type; ++ } + if (flush) + range.flags |= BTRFS_DEFRAG_RANGE_START_IO; + +diff --git a/ctree.h b/ctree.h +index ed83d02..61eb639 100644 +--- a/ctree.h ++++ b/ctree.h +@@ -354,12 +354,14 @@ struct btrfs_super_block { + #define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF (1ULL << 0) + #define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1) + #define BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS (1ULL << 2) ++#define BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO (1ULL << 3) + + #define BTRFS_FEATURE_COMPAT_SUPP 0ULL + #define BTRFS_FEATURE_COMPAT_RO_SUPP 0ULL + #define BTRFS_FEATURE_INCOMPAT_SUPP \ + (BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF | \ + BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL | \ ++ BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO | \ + BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS) + + /* +@@ -505,9 +507,11 @@ struct btrfs_timespec { + } __attribute__ ((__packed__)); + + typedef enum { +- BTRFS_COMPRESS_NONE = 0, +- BTRFS_COMPRESS_ZLIB = 1, +- BTRFS_COMPRESS_LAST = 2, ++ BTRFS_COMPRESS_NONE = 0, ++ BTRFS_COMPRESS_ZLIB = 1, ++ BTRFS_COMPRESS_LZO = 2, ++ BTRFS_COMPRESS_TYPES = 2, ++ BTRFS_COMPRESS_LAST = 3, + } btrfs_compression_type; + + /* we don't understand any encryption methods right now */ +diff --git a/ioctl.h b/ioctl.h +index 776d7a9..bb7b9e0 100644 +--- a/ioctl.h ++++ b/ioctl.h +@@ -116,8 +116,15 @@ struct btrfs_ioctl_defrag_range_args { + */ + __u32 extent_thresh; + ++ /* ++ * which compression method to use if turning on compression ++ * for this defrag operation. If unspecified, zlib will ++ * be used ++ */ ++ __u32 compress_type; ++ + /* spare for later */ +- __u32 unused[5]; ++ __u32 unused[4]; + }; + + struct btrfs_ioctl_space_info { +diff --git a/man/btrfs.8.in b/man/btrfs.8.in +index cba2de1..1ffed13 100644 +--- a/man/btrfs.8.in ++++ b/man/btrfs.8.in +@@ -15,12 +15,12 @@ btrfs \- control a btrfs filesystem + .PP + \fBbtrfs\fP \fBsubvolume set-default\fP\fI \fP + .PP +-\fBbtrfs\fP \fBfilesystem defragment\fP\fI [-vcf] [-s start] [-l len] [-t size] | [|...]\fP +-.PP + \fBbtrfs\fP \fBfilesystem sync\fP\fI \fP + .PP + \fBbtrfs\fP \fBfilesystem resize\fP\fI [+/\-][gkm]|max \fP + .PP ++\fBbtrfs\fP \fBfilesystem defrag\fP\fI [options] | [|...]\fP ++.PP + \fBbtrfs\fP \fBdevice scan\fP\fI [ [..]]\fP + .PP + \fBbtrfs\fP \fBdevice show\fP\fI |