All of lore.kernel.org
 help / color / mirror / Atom feed
From: Qu Wenruo <wqu@suse.com>
To: linux-btrfs@vger.kernel.org
Subject: [PATCH 2/2] btrfs-progs: convert-tests: Add test case for multiply overflow
Date: Mon, 20 Jul 2020 20:51:09 +0800	[thread overview]
Message-ID: <20200720125109.93970-2-wqu@suse.com> (raw)
In-Reply-To: <20200720125109.93970-1-wqu@suse.com>

The new test case will test whether btrfs-convert can handle 64G ext*
fs.

This exercise the cctx->total_bytes calculation where multiplying 4K
(unsigned int) and 16777216 (u32) could lead to bit overflow for
unsigned int and got 0, and screw up later free space calculation.

Signed-off-by: Qu Wenruo <wqu@suse.com>
---
 .../018-fs-size-overflow/test.sh              | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100755 tests/convert-tests/018-fs-size-overflow/test.sh

diff --git a/tests/convert-tests/018-fs-size-overflow/test.sh b/tests/convert-tests/018-fs-size-overflow/test.sh
new file mode 100755
index 000000000000..2335225445f8
--- /dev/null
+++ b/tests/convert-tests/018-fs-size-overflow/test.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+# Check if btrfs-convert can handle an ext4 fs whose size is 64G.
+# That fs size could trigger a multiply overflow and screw up free space
+# calculation
+
+source "$TEST_TOP/common"
+source "$TEST_TOP/common.convert"
+
+setup_root_helper
+prepare_test_dev
+check_prereq btrfs-convert
+check_global_prereq mke2fs
+check_global_prereq truncate
+
+truncate -s 64g $TEST_DEV
+
+convert_test_prep_fs ext4 mke2fs -t ext4 -b 4096
+run_check_umount_test_dev
+
+# Unpatched btrfs-convert would fail half way due to corrupted free space
+# cache tree
+convert_test_do_convert
-- 
2.27.0


  reply	other threads:[~2020-07-20 12:51 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-20 12:51 [PATCH 1/2] btrfs-progs: convert: Prevent bit overflow for cctx->total_bytes Qu Wenruo
2020-07-20 12:51 ` Qu Wenruo [this message]
2020-07-20 12:53 ` Nikolay Borisov
2020-07-20 16:09 ` David Sterba
2020-07-20 23:51   ` Qu Wenruo
2020-07-21  9:58     ` David Sterba
2020-07-21 10:29       ` Qu Wenruo
2020-07-21 13:55         ` David Sterba
2020-07-21 22:58           ` Qu Wenruo
2020-07-22 11:32             ` David Sterba
2020-07-23 13:31               ` Neal Gompa
2020-07-24  0:01                 ` Qu Wenruo
2020-07-28 13:14                   ` Neal Gompa
2020-07-28 13:19                     ` Qu Wenruo
2020-07-29  1:56                       ` Neal Gompa
2020-07-29  2:30                         ` Qu Wenruo
2020-07-21 13:57         ` Stefan Traby

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200720125109.93970-2-wqu@suse.com \
    --to=wqu@suse.com \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.