From patchwork Wed Aug 26 14:38:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Foster X-Patchwork-Id: 11738537 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A90FD138A for ; Wed, 26 Aug 2020 14:38:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8768C22B43 for ; Wed, 26 Aug 2020 14:38:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="VJ7H2DxL" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726803AbgHZOi3 (ORCPT ); Wed, 26 Aug 2020 10:38:29 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:27656 "EHLO us-smtp-delivery-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726809AbgHZOiY (ORCPT ); Wed, 26 Aug 2020 10:38:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598452699; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CIqwHJ211+vRH1XPmTEpHVyEmFiSIEvhvJz/54Lnb90=; b=VJ7H2DxLHwJ3EuCKAiP5FCvsbGhdApHKHtUvZgVVZwOp2bEd0dQiC8jlvi9BwjarFnUB5K viR5Iat3aYyEMC4mPL3nQkQJdbUYAZJLJeEknANkSxSjZhNwbz4Z2PkPZPpatQTuU9yeIp RsJU6g43jKBwVFuN8XGnNE6btkecKbA= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-451-ooMZ84iRMhGcS6_zyrivhQ-1; Wed, 26 Aug 2020 10:38:17 -0400 X-MC-Unique: ooMZ84iRMhGcS6_zyrivhQ-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 338AE189E60C; Wed, 26 Aug 2020 14:38:16 +0000 (UTC) Received: from bfoster.redhat.com (ovpn-112-11.rdu2.redhat.com [10.10.112.11]) by smtp.corp.redhat.com (Postfix) with ESMTP id DA4EA50EB6; Wed, 26 Aug 2020 14:38:15 +0000 (UTC) From: Brian Foster To: fstests@vger.kernel.org Cc: linux-xfs@vger.kernel.org Subject: [PATCH 1/4] generic: require discard zero behavior for dmlogwrites on XFS Date: Wed, 26 Aug 2020 10:38:12 -0400 Message-Id: <20200826143815.360002-2-bfoster@redhat.com> In-Reply-To: <20200826143815.360002-1-bfoster@redhat.com> References: <20200826143815.360002-1-bfoster@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Sender: fstests-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org Several generic fstests use dm-log-writes to test the filesystem for consistency at various crash recovery points. dm-log-writes and the associated replay mechanism rely on zeroing via discard to clear stale blocks when moving to various points in time of the fs. If the storage doesn't provide zeroing or the discard requests exceed the hardcoded maximum (128MB) of the fallback solution to physically write zeroes, stale blocks are left around in the target fs. This scheme is known to cause issues on XFS v5 superblocks if recovery observes metadata from a future variant of an fs that has been replayed to an older point in time. This corrupts the filesystem and leads to false test failures. generic/482 already works around this problem by using a thin volume as the target device, which provides consistent and efficient discard zeroing behavior, but other tests have seen similar issues on XFS. Add an XFS specific check to the dmlogwrites init time code that requires discard zeroing support and otherwise skips the test to avoid false positive failures. Signed-off-by: Brian Foster --- common/dmlogwrites | 10 ++++++++-- common/rc | 14 ++++++++++++++ tests/generic/470 | 2 +- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/common/dmlogwrites b/common/dmlogwrites index 573f4b8a..92cc6ce2 100644 --- a/common/dmlogwrites +++ b/common/dmlogwrites @@ -43,9 +43,10 @@ _require_log_writes_dax_mountopt() _require_test_program "log-writes/replay-log" local ret=0 - local mountopt=$1 + local dev=$1 + local mountopt=$2 - _log_writes_init $SCRATCH_DEV + _log_writes_init $dev _log_writes_mkfs > /dev/null 2>&1 _log_writes_mount "-o $mountopt" > /dev/null 2>&1 # Check options to be sure. @@ -66,6 +67,11 @@ _log_writes_init() [ -z "$blkdev" ] && _fail \ "block dev must be specified for _log_writes_init" + # XFS requires discard zeroing support on the target device to work + # reliably with dm-log-writes. Use dm-thin devices in tests that want + # to provide reliable discard zeroing support. + [ $FSTYP == "xfs" ] && _require_discard_zeroes $blkdev + local BLK_DEV_SIZE=`blockdev --getsz $blkdev` LOGWRITES_NAME=logwrites-test LOGWRITES_DMDEV=/dev/mapper/$LOGWRITES_NAME diff --git a/common/rc b/common/rc index aa5a7409..fedb5221 100644 --- a/common/rc +++ b/common/rc @@ -4313,6 +4313,20 @@ _require_mknod() rm -f $TEST_DIR/$seq.null } +# check that discard is supported and subsequent reads return zeroes +_require_discard_zeroes() +{ + local dev=$1 + + _require_command "$BLKDISCARD_PROG" blkdiscard + + $XFS_IO_PROG -c "pwrite -S 0xcd 0 4k" $dev > /dev/null 2>&1 || + _fail "write error" + $BLKDISCARD_PROG -o 0 -l 1m $dev || _notrun "no discard support" + hexdump -n 4096 $dev | head -n 1 | grep cdcd && + _notrun "no discard zeroing support" +} + init_rc ################################################################################ diff --git a/tests/generic/470 b/tests/generic/470 index fd6da563..707b6237 100755 --- a/tests/generic/470 +++ b/tests/generic/470 @@ -35,7 +35,7 @@ rm -f $seqres.full _supported_fs generic _supported_os Linux _require_scratch -_require_log_writes_dax_mountopt "dax" +_require_log_writes_dax_mountopt $SCRATCH_DEV "dax" _require_xfs_io_command "mmap" "-S" _require_xfs_io_command "log_writes" From patchwork Wed Aug 26 14:38:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Foster X-Patchwork-Id: 11738533 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5DD4F13A4 for ; Wed, 26 Aug 2020 14:38:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 427A4221E2 for ; Wed, 26 Aug 2020 14:38:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="OORTDeT2" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726971AbgHZOi0 (ORCPT ); Wed, 26 Aug 2020 10:38:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:52440 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726834AbgHZOiW (ORCPT ); Wed, 26 Aug 2020 10:38:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598452700; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BAjoWMEzpDcrIGtK3T9GxKod+8xS53mLbcVkLV2jYWg=; b=OORTDeT22ykWiiNVN8H3tywzXORgA374p19ISLHC1uchSuwieYW6HCGNzFJVqifrIx4a5T t9WdCRiylN15sLRv84xTv2R8tw1hjHAo1ApHk2qqk6ImxS79P5oQ2CNlPViuga9rpRLy90 xAduYZh7jSFdtWsuDojm5KXiitrO/Ds= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-352-EhX-zQ3ZOkuG_GCbG5XXHg-1; Wed, 26 Aug 2020 10:38:17 -0400 X-MC-Unique: EhX-zQ3ZOkuG_GCbG5XXHg-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A307385C731; Wed, 26 Aug 2020 14:38:16 +0000 (UTC) Received: from bfoster.redhat.com (ovpn-112-11.rdu2.redhat.com [10.10.112.11]) by smtp.corp.redhat.com (Postfix) with ESMTP id 557877049D; Wed, 26 Aug 2020 14:38:16 +0000 (UTC) From: Brian Foster To: fstests@vger.kernel.org Cc: linux-xfs@vger.kernel.org Subject: [PATCH 2/4] generic/455: use thin volume for dmlogwrites target device Date: Wed, 26 Aug 2020 10:38:13 -0400 Message-Id: <20200826143815.360002-3-bfoster@redhat.com> In-Reply-To: <20200826143815.360002-1-bfoster@redhat.com> References: <20200826143815.360002-1-bfoster@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Sender: fstests-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org dmlogwrites support for XFS depends on discard zeroing support of the intended target device. Update the test to use a thin volume and allow it to run consistently and reliably on XFS. Signed-off-by: Brian Foster --- tests/generic/455 | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/tests/generic/455 b/tests/generic/455 index 05621220..72a44fda 100755 --- a/tests/generic/455 +++ b/tests/generic/455 @@ -16,12 +16,14 @@ status=1 # failure is the default! _cleanup() { _log_writes_cleanup + _dmthin_cleanup } trap "_cleanup; exit \$status" 0 1 2 3 15 # get standard environment, filters and checks . ./common/rc . ./common/filter +. ./common/dmthin . ./common/dmlogwrites # real QA test starts here @@ -30,6 +32,7 @@ _supported_os Linux _require_test _require_scratch_nocheck _require_log_writes +_require_dm_target thin-pool rm -f $seqres.full @@ -42,13 +45,12 @@ check_files() local filename=$(basename $i) local mark="${filename##*.}" echo "checking $filename" >> $seqres.full - _log_writes_replay_log $filename $SCRATCH_DEV - _scratch_mount + _log_writes_replay_log $filename $DMTHIN_VOL_DEV + _dmthin_mount local expected_md5=$(_md5_checksum $i) local md5=$(_md5_checksum $SCRATCH_MNT/$name) [ "${md5}" != "${expected_md5}" ] && _fail "$filename md5sum mismatched" - _scratch_unmount - _check_scratch_fs + _dmthin_check_fs done } @@ -56,8 +58,16 @@ SANITY_DIR=$TEST_DIR/fsxtests rm -rf $SANITY_DIR mkdir $SANITY_DIR +devsize=$((1024*1024*200 / 512)) # 200m phys/virt size +csize=$((1024*64 / 512)) # 64k cluster size +lowspace=$((1024*1024 / 512)) # 1m low space threshold + +# Use a thin device to provide deterministic discard behavior. Discards are used +# by the log replay tool for fast zeroing to prevent out-of-order replay issues. +_dmthin_init $devsize $devsize $csize $lowspace + # Create the log -_log_writes_init $SCRATCH_DEV +_log_writes_init $DMTHIN_VOL_DEV _log_writes_mkfs >> $seqres.full 2>&1 @@ -88,14 +98,13 @@ _log_writes_mark last _log_writes_unmount _log_writes_mark end _log_writes_remove -_check_scratch_fs +_dmthin_check_fs # check pre umount echo "checking pre umount" >> $seqres.full -_log_writes_replay_log last $SCRATCH_DEV -_scratch_mount -_scratch_unmount -_check_scratch_fs +_log_writes_replay_log last $DMTHIN_VOL_DEV +_dmthin_mount +_dmthin_check_fs for j in `seq 0 $((NUM_FILES-1))`; do check_files testfile$j @@ -103,14 +112,13 @@ done # Check the end echo "checking post umount" >> $seqres.full -_log_writes_replay_log end $SCRATCH_DEV -_scratch_mount +_log_writes_replay_log end $DMTHIN_VOL_DEV +_dmthin_mount for j in `seq 0 $((NUM_FILES-1))`; do md5=$(_md5_checksum $SCRATCH_MNT/testfile$j) [ "${md5}" != "${test_md5[$j]}" ] && _fail "testfile$j end md5sum mismatched" done -_scratch_unmount -_check_scratch_fs +_dmthin_check_fs echo "Silence is golden" status=0 From patchwork Wed Aug 26 14:38:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Foster X-Patchwork-Id: 11738545 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7460B138A for ; Wed, 26 Aug 2020 14:39:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5D60022B47 for ; Wed, 26 Aug 2020 14:39:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="hBjglibc" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726514AbgHZOi4 (ORCPT ); Wed, 26 Aug 2020 10:38:56 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:20853 "EHLO us-smtp-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726874AbgHZOiW (ORCPT ); Wed, 26 Aug 2020 10:38:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598452700; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NHE/nZbwiOoblJJMtTZR2g1xUXRlA7Vnz3roC9Mkkck=; b=hBjglibcxKwUh2wQFuwf3gb6kqvJdCfBL3Qp0JdwaPmkEF6OYodHvcwl2VMSzo/IEpCF/l JGUrApNBrYmHZAEJP7CjC68ZGyndjI/8gOIERjoQkH7X6QTffnK/sDuQQqQimsdpJyG0Yx dM07JnN2/lbMdX/Q/JqefK2hRHfnS2A= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-29-TNWqgDd0MJ6JOm2Ac0bUdA-1; Wed, 26 Aug 2020 10:38:18 -0400 X-MC-Unique: TNWqgDd0MJ6JOm2Ac0bUdA-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1E70B85C734; Wed, 26 Aug 2020 14:38:17 +0000 (UTC) Received: from bfoster.redhat.com (ovpn-112-11.rdu2.redhat.com [10.10.112.11]) by smtp.corp.redhat.com (Postfix) with ESMTP id C484650EB6; Wed, 26 Aug 2020 14:38:16 +0000 (UTC) From: Brian Foster To: fstests@vger.kernel.org Cc: linux-xfs@vger.kernel.org Subject: [PATCH 3/4] generic/457: use thin volume for dmlogwrites target device Date: Wed, 26 Aug 2020 10:38:14 -0400 Message-Id: <20200826143815.360002-4-bfoster@redhat.com> In-Reply-To: <20200826143815.360002-1-bfoster@redhat.com> References: <20200826143815.360002-1-bfoster@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Sender: fstests-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org dmlogwrites support for XFS depends on discard zeroing support of the intended target device. Update the test to use a thin volume and allow it to run consistently and reliably on XFS. Signed-off-by: Brian Foster --- tests/generic/457 | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/tests/generic/457 b/tests/generic/457 index 82367304..42a064d8 100755 --- a/tests/generic/457 +++ b/tests/generic/457 @@ -16,6 +16,7 @@ status=1 # failure is the default! _cleanup() { _log_writes_cleanup + _dmthin_cleanup } trap "_cleanup; exit \$status" 0 1 2 3 15 @@ -23,6 +24,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15 . ./common/rc . ./common/filter . ./common/reflink +. ./common/dmthin . ./common/dmlogwrites # real QA test starts here @@ -32,6 +34,7 @@ _require_test _require_scratch_reflink _require_cp_reflink _require_log_writes +_require_dm_target thin-pool rm -f $seqres.full @@ -44,13 +47,12 @@ check_files() local filename=$(basename $i) local mark="${filename##*.}" echo "checking $filename" >> $seqres.full - _log_writes_replay_log $filename $SCRATCH_DEV - _scratch_mount + _log_writes_replay_log $filename $DMTHIN_VOL_DEV + _dmthin_mount local expected_md5=$(_md5_checksum $i) local md5=$(_md5_checksum $SCRATCH_MNT/$name) [ "${md5}" != "${expected_md5}" ] && _fail "$filename md5sum mismatched" - _scratch_unmount - _check_scratch_fs + _dmthin_check_fs done } @@ -58,8 +60,16 @@ SANITY_DIR=$TEST_DIR/fsxtests rm -rf $SANITY_DIR mkdir $SANITY_DIR +devsize=$((1024*1024*200 / 512)) # 200m phys/virt size +csize=$((1024*64 / 512)) # 64k cluster size +lowspace=$((1024*1024 / 512)) # 1m low space threshold + +# Use a thin device to provide deterministic discard behavior. Discards are used +# by the log replay tool for fast zeroing to prevent out-of-order replay issues. +_dmthin_init $devsize $devsize $csize $lowspace + # Create the log -_log_writes_init $SCRATCH_DEV +_log_writes_init $DMTHIN_VOL_DEV _log_writes_mkfs >> $seqres.full 2>&1 @@ -92,14 +102,13 @@ _log_writes_mark last _log_writes_unmount _log_writes_mark end _log_writes_remove -_check_scratch_fs +_dmthin_check_fs # check pre umount echo "checking pre umount" >> $seqres.full -_log_writes_replay_log last $SCRATCH_DEV -_scratch_mount -_scratch_unmount -_check_scratch_fs +_log_writes_replay_log last $DMTHIN_VOL_DEV +_dmthin_mount +_dmthin_check_fs for j in `seq 0 $((NUM_FILES-1))`; do check_files testfile$j @@ -107,8 +116,8 @@ done # Check the end echo "checking post umount" >> $seqres.full -_log_writes_replay_log end $SCRATCH_DEV -_scratch_mount +_log_writes_replay_log end $DMTHIN_VOL_DEV +_dmthin_mount for j in `seq 0 $((NUM_FILES-1))`; do md5=$(_md5_checksum $SCRATCH_MNT/testfile$j) [ "${md5}" != "${test_md5[$j]}" ] && _fail "testfile$j end md5sum mismatched" From patchwork Wed Aug 26 14:38:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Foster X-Patchwork-Id: 11738549 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A1FA613A4 for ; Wed, 26 Aug 2020 14:39:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 89436214F1 for ; Wed, 26 Aug 2020 14:39:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="PEh7ygZk" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726690AbgHZOi5 (ORCPT ); Wed, 26 Aug 2020 10:38:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:38016 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726876AbgHZOiW (ORCPT ); Wed, 26 Aug 2020 10:38:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598452700; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uwdT6pP1ARAoldejuDU7IXe458pacNeduh1UlLpGpgA=; b=PEh7ygZkT+E09Ia34tyDLtJVzAKBzeJr7NS37KMJnXGX76lKXw86JDwIkyYovGQ6+rqLPz LH3fhi7Z/bfDjZzetz8xNw0dYzCKmi/x2m+OpelWTSPTNudzyqFnFwsd8jYOMzuEq1WJmY RFX9xEz6Cryo+2HW1ItM7ar9OQY67Ls= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-99-R0V3_sMiMayfK_ZqWHjSsQ-1; Wed, 26 Aug 2020 10:38:18 -0400 X-MC-Unique: R0V3_sMiMayfK_ZqWHjSsQ-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 8F69D81F02A; Wed, 26 Aug 2020 14:38:17 +0000 (UTC) Received: from bfoster.redhat.com (ovpn-112-11.rdu2.redhat.com [10.10.112.11]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4019150EB6; Wed, 26 Aug 2020 14:38:17 +0000 (UTC) From: Brian Foster To: fstests@vger.kernel.org Cc: linux-xfs@vger.kernel.org Subject: [PATCH 4/4] generic/470: use thin volume for dmlogwrites target device Date: Wed, 26 Aug 2020 10:38:15 -0400 Message-Id: <20200826143815.360002-5-bfoster@redhat.com> In-Reply-To: <20200826143815.360002-1-bfoster@redhat.com> References: <20200826143815.360002-1-bfoster@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Sender: fstests-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org dmlogwrites support for XFS depends on discard zeroing support of the intended target device. Update the test to use a thin volume and allow it to run consistently and reliably on XFS. Signed-off-by: Brian Foster --- tests/generic/470 | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/tests/generic/470 b/tests/generic/470 index 707b6237..cb7ab484 100755 --- a/tests/generic/470 +++ b/tests/generic/470 @@ -20,12 +20,14 @@ _cleanup() { cd / _log_writes_cleanup + _dmthin_cleanup rm -f $tmp.* } # get standard environment, filters and checks . ./common/rc . ./common/filter +. ./common/dmthin . ./common/dmlogwrites # remove previous $seqres.full before test @@ -35,11 +37,21 @@ rm -f $seqres.full _supported_fs generic _supported_os Linux _require_scratch -_require_log_writes_dax_mountopt $SCRATCH_DEV "dax" +_require_dm_target thin-pool _require_xfs_io_command "mmap" "-S" _require_xfs_io_command "log_writes" -_log_writes_init $SCRATCH_DEV +devsize=$((1024*1024*200 / 512)) # 200m phys/virt size +csize=$((1024*64 / 512)) # 64k cluster size +lowspace=$((1024*1024 / 512)) # 1m low space threshold + +# Use a thin device to provide deterministic discard behavior. Discards are used +# by the log replay tool for fast zeroing to prevent out-of-order replay issues. +_dmthin_init $devsize $devsize $csize $lowspace + +_require_log_writes_dax_mountopt $DMTHIN_VOL_DEV "dax" + +_log_writes_init $DMTHIN_VOL_DEV _log_writes_mkfs >> $seqres.full 2>&1 _log_writes_mount -o dax @@ -52,14 +64,14 @@ $XFS_IO_PROG -t -c "truncate $LEN" -c "mmap -S 0 $LEN" -c "mwrite 0 $LEN" \ # Unmount the scratch dir and tear down the log writes target _log_writes_unmount _log_writes_remove -_check_scratch_fs +_dmthin_check_fs # destroy previous filesystem so we can be sure our rebuild works -_scratch_mkfs >> $seqres.full 2>&1 +_mkfs_dev $DMTHIN_VOL_DEV >> $seqres.full 2>&1 # check pre-unmap state -_log_writes_replay_log preunmap $SCRATCH_DEV -_scratch_mount +_log_writes_replay_log preunmap $DMTHIN_VOL_DEV +_dmthin_mount # We should see $SCRATCH_MNT/test as having 1 MiB in block allocations du -sh $SCRATCH_MNT/test | _filter_scratch | _filter_spaces