Message ID | 4DDDCB57.6090405@cn.fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Li Zefan wrote (ao): > As the lzo compression feature has been established for quite > a while, we are now ready to replace zlib with lzo as the default > compression scheme. Please be aware that grub2 currently can't load files from a btrfs with lzo compression (on debian sid/experimental at least). Just found out the hard way after a kernel upgrade on a system with no separate /boot partition :-) Found this: https://bugs.archlinux.org/task/23901 Sander
On Fri, May 27, 2011 at 2:32 PM, Sander <sander@humilis.net> wrote: > Li Zefan wrote (ao): >> As the lzo compression feature has been established for quite >> a while, we are now ready to replace zlib with lzo as the default >> compression scheme. > > Please be aware that grub2 currently can't load files from a btrfs with > lzo compression (on debian sid/experimental at least). > > Just found out the hard way after a kernel upgrade on a system with no > separate /boot partition :-) > > Found this: https://bugs.archlinux.org/task/23901 IIRC what matters is compression actually used by the files. If /boot/grub/* and kernel/initrd is not compressed, or compressed with zlib, then grub2 can read it just fine, even when the filesystem is usually mounted with -o compress=lzo (I'm using Ubuntu Natty). I think the move to use lzo compression by default is a good thing, since: - it's superior performance-wise to zlib - btrfs is not really recommended (yet) for production uses, so it's valid enough to assume users brave enough to use btrfs will know the necessary workarounds (like having separate /boot, or temporary remount with -o compress=zlib when upgrading kernel) - even if by accident you ended with unbootable system due to lzo, you can "fix" it using livecd and "btrfs filesystem defragment" to force the needed files to be uncompressed/compressed with zlib.
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 16d335b..17c9e3a 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -1753,7 +1753,7 @@ struct btrfs_root *open_ctree(struct super_block *sb, * In the long term, we'll store the compression type in the super * block, and it'll be used for per file compression control. */ - fs_info->compress_type = BTRFS_COMPRESS_ZLIB; + fs_info->compress_type = BTRFS_COMPRESS_LZO; ret = btrfs_parse_options(tree_root, options); if (ret) { diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index c4f17e4..a86cc2d 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -747,7 +747,7 @@ static int btrfs_defrag_file(struct file *file, u64 defrag_end = 0; unsigned long i; int ret; - int compress_type = BTRFS_COMPRESS_ZLIB; + int compress_type = BTRFS_COMPRESS_LZO; if (range->flags & BTRFS_DEFRAG_RANGE_COMPRESS) { if (range->compress_type > BTRFS_COMPRESS_TYPES) diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index cd0c7cd..ab9fd9c 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -257,12 +257,12 @@ int btrfs_parse_options(struct btrfs_root *root, char *options) case Opt_compress_type: if (token == Opt_compress || token == Opt_compress_force || - strcmp(args[0].from, "zlib") == 0) { - compress_type = "zlib"; - info->compress_type = BTRFS_COMPRESS_ZLIB; - } else if (strcmp(args[0].from, "lzo") == 0) { + strcmp(args[0].from, "lzo") == 0) { compress_type = "lzo"; info->compress_type = BTRFS_COMPRESS_LZO; + } else if (strcmp(args[0].from, "zlib") == 0) { + compress_type = "zlib"; + info->compress_type = BTRFS_COMPRESS_ZLIB; } else { ret = -EINVAL; goto out;
As the lzo compression feature has been established for quite a while, we are now ready to replace zlib with lzo as the default compression scheme. Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> --- fs/btrfs/disk-io.c | 2 +- fs/btrfs/ioctl.c | 2 +- fs/btrfs/super.c | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-)