diff --git a/0001-btrfs-progs-convert-prevent-32bit-overflow-for-cctx-.patch b/0001-btrfs-progs-convert-prevent-32bit-overflow-for-cctx-.patch deleted file mode 100644 index 9f4b6141f74d91d1a822bef6ef5acac305f454ce..0000000000000000000000000000000000000000 --- a/0001-btrfs-progs-convert-prevent-32bit-overflow-for-cctx-.patch +++ /dev/null @@ -1,107 +0,0 @@ -From c9c4eb1f3fd343512d50b075b40bba656cbd02cb Mon Sep 17 00:00:00 2001 -From: Qu Wenruo -Date: Mon, 20 Jul 2020 20:51:08 +0800 -Subject: [PATCH 10/74] btrfs-progs: convert: prevent 32bit overflow for - cctx->total_bytes - -[BUG] -When convert is called on a 64GiB ext4 fs, it fails like this: - - $ btrfs-convert /dev/loop0p1 - create btrfs filesystem: - blocksize: 4096 - nodesize: 16384 - features: extref, skinny-metadata (default) - checksum: crc32c - creating ext2 image file - ERROR: missing data block for bytenr 1048576 - ERROR: failed to create ext2_saved/image: -2 - WARNING: an error occurred during conversion, filesystem is partially created but not finalized and not mountable - -Btrfs-convert also corrupts the source fs: - - $ LANG=C e2fsck /dev/loop0p1 -f - e2fsck 1.45.6 (20-Mar-2020) - Resize inode not valid. Recreate? yes - Pass 1: Checking inodes, blocks, and sizes - Deleted inode 3681 has zero dtime. Fix? yes - Inodes that were part of a corrupted orphan linked list found. Fix? yes - Inode 3744 was part of the orphaned inode list. FIXED. - Deleted inode 3745 has zero dtime. Fix? yes - Inode 3747 has INLINE_DATA_FL flag on filesystem without inline data support. - Clear? yes - ... - -[CAUSE] -After some debugging, the first strange behavior is, the value of -cctx->total_bytes is 0 in ext2_open_fs(). - -It turns out that, the value assign for cctx->total_bytes could lead to -bit overflow for the unsigned int value. - -And that 0 cctx->total_bytes leads to various problems for later free -space calculation. -For example, in calculate_available_space(), we use cctx->total_bytes to -ensure we won't create a data chunk beyond device end: - - cue_len = min(cctx->total_bytes - cur_off, cur_len); - -If that cur_offset is also 0, we will create a cache_extent with 0 size, -which could cause a lot of problems for cache tree search. - -[FIX] -Do manual casting for the multiply operation, so we could got a real u64 -result. The fix will be applied to all supported fses (ext* and -reiserfs). - -Reported-by: Christian Zangl -Reviewed-by: Nikolay Borisov -Signed-off-by: Qu Wenruo -Signed-off-by: David Sterba ---- - convert/main.c | 1 + - convert/source-ext2.c | 2 +- - convert/source-reiserfs.c | 2 +- - 3 files changed, 3 insertions(+), 2 deletions(-) - -diff --git a/convert/main.c b/convert/main.c -index 7709e9a..df6a2ae 100644 ---- a/convert/main.c -+++ b/convert/main.c -@@ -1136,6 +1136,7 @@ static int do_convert(const char *devname, u32 convert_flags, u32 nodesize, - if (ret) - goto fail; - -+ ASSERT(cctx.total_bytes); - blocksize = cctx.blocksize; - total_bytes = (u64)blocksize * (u64)cctx.block_count; - if (blocksize < 4096) { -diff --git a/convert/source-ext2.c b/convert/source-ext2.c -index f11ef65..d73684e 100644 ---- a/convert/source-ext2.c -+++ b/convert/source-ext2.c -@@ -87,7 +87,7 @@ static int ext2_open_fs(struct btrfs_convert_context *cctx, const char *name) - cctx->fs_data = ext2_fs; - cctx->blocksize = ext2_fs->blocksize; - cctx->block_count = ext2_fs->super->s_blocks_count; -- cctx->total_bytes = ext2_fs->blocksize * ext2_fs->super->s_blocks_count; -+ cctx->total_bytes = (u64)ext2_fs->super->s_blocks_count * ext2_fs->blocksize; - cctx->volume_name = strndup((char *)ext2_fs->super->s_volume_name, 16); - cctx->first_data_block = ext2_fs->super->s_first_data_block; - cctx->inodes_count = ext2_fs->super->s_inodes_count; -diff --git a/convert/source-reiserfs.c b/convert/source-reiserfs.c -index 9fd6b9a..3b4cb5a 100644 ---- a/convert/source-reiserfs.c -+++ b/convert/source-reiserfs.c -@@ -82,7 +82,7 @@ static int reiserfs_open_fs(struct btrfs_convert_context *cxt, const char *name) - cxt->fs_data = fs; - cxt->blocksize = fs->fs_blocksize; - cxt->block_count = get_sb_block_count(fs->fs_ondisk_sb); -- cxt->total_bytes = cxt->blocksize * cxt->block_count; -+ cxt->total_bytes = (u64)cxt->block_count * cxt->blocksize; - cxt->volume_name = strndup(fs->fs_ondisk_sb->s_label, 16); - cxt->first_data_block = 0; - cxt->inodes_count = reiserfs_count_objectids(fs); --- -1.8.3.1 - diff --git a/btrfs-progs-v5.15.tar.xz b/btrfs-progs-v5.15.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..99ff42602b7c74bf85832728f2c5722dbbf5804e Binary files /dev/null and b/btrfs-progs-v5.15.tar.xz differ diff --git a/btrfs-progs-v5.7.tar.xz b/btrfs-progs-v5.7.tar.xz deleted file mode 100644 index 49e3e66a8639d023c584f9ba2522bc091b702753..0000000000000000000000000000000000000000 Binary files a/btrfs-progs-v5.7.tar.xz and /dev/null differ diff --git a/btrfs-progs.spec b/btrfs-progs.spec index 32f2eb2cdb1e067726dc3965051a3f85836844d9..2dd139866f74e0656681add7a1a77791a62f891e 100644 --- a/btrfs-progs.spec +++ b/btrfs-progs.spec @@ -1,15 +1,14 @@ Name: btrfs-progs -Version: 5.7 -Release: 4 +Version: 5.15 +Release: 1 Summary: btrfs userspace programs License: GPLv2 and GPL+ and LGPL-2.1+ and GPL-3.0+ and LGPL-2.1 and Artistic-1.0-Perl and MIT URL: https://btrfs.wiki.kernel.org/index.php/Main_Page Source0: https://www.kernel.org/pub/linux/kernel/people/kdave/%{name}/%{name}-v%{version}.tar.xz -Patch1: 0001-btrfs-progs-convert-prevent-32bit-overflow-for-cctx-.patch BuildRequires: python3-devel >= 3.4 -BuildRequires: libacl-devel, e2fsprogs-devel, libblkid-devel, libuuid-devel, zlib-devel, libzstd-devel, lzo-devel -BuildRequires: gcc, asciidoc, systemd, xmlto, autoconf, automake +BuildRequires: libacl-devel, e2fsprogs-devel, libblkid-devel, libuuid-devel, zlib-devel, libzstd-devel, lzo-devel, systemd-devel +BuildRequires: gcc, asciidoc, systemd, xmlto, autoconf, automake %define _root_sbindir /sbin @@ -63,12 +62,16 @@ make mandir=%{_mandir} bindir=%{_sbindir} libdir=%{_libdir} incdir=%{_includedir %{_includedir}/* %{_libdir}/libbtrfs.so %{_libdir}/libbtrfsutil.so* +%{_libdir}/pkgconfig/libbtrfsutil.pc %files help %{_mandir}/man5/*.gz %{_mandir}/man8/*.gz %changelog +* Tue Nov 16 2021 Wenchao Hao - 5.15-1 +- Update to btrfs-progs-5.15 + * Fri Jul 30 2021 chenyanpanHW - 5.7-4 - DESC: delete -S git from %autosetup, and delete BuildRequires git