public inbox for linux-btrfs@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox