From patchwork Wed Feb 19 00:56:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13981311 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7B90446B8; Wed, 19 Feb 2025 00:56:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739926611; cv=none; b=CuJsFEBiOAo85OeQhuKBXagD9R0CQBrEyVoWQ13+6BB4D4SQyjyyBTgaIEqRQ/Z3KGSrYLnTrt3A7atPlnBTgV9BaikQiqiKsiDo6zkI7/qJK4+jHAe/91SdrC6hUF9eTEZ+QujjLdyv+iCnD0HCuntynUlfbKyK5pkplf1rxPc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739926611; c=relaxed/simple; bh=Fn6m47+4MBP2UqZ0b3J7lvUdMU3TbV3RFpkStVslaMo=; h=Date:Subject:From:To:Cc:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=hMkOvDUPvhpbBlkKyIEdt1RxKzz/btofysaIik/P3+rGS3EcMXJtOoemUjWlWnL9QOaXKMxDqO3brP4eksAOAP58KpVgiEA15DzyP74QdmEeDWdI7WvMixZuKDsvIgRxkhv1hwIM+PC8o4KVok/MwlthRWtYhpfVjrUDDeblVOM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=agUNJ/6/; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="agUNJ/6/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C4A4DC4CEE2; Wed, 19 Feb 2025 00:56:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739926611; bh=Fn6m47+4MBP2UqZ0b3J7lvUdMU3TbV3RFpkStVslaMo=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=agUNJ/6/JzDIlUQPyCRj10vKuPp1qrNwmDqq7WbSKha7Ryl5oP8qCO9YhyQvZYDuE 6PIOViBe1q5AHhHuS4gO6qX9OWGbgzOreGYGQ+nKUbmTMH4lWe08+UR5XzFkibJ3HV pxrhe36EThqZ+mFsEuOT+Bxk3/CJCFGZg8me0foIohAzFBR5Dfo0gu2I2sz2/J078w tHYear41Hp2bDmWEmn4eJ5aSxwNFm7SmR2UqtCTZRXfbUILviVwBXvKm78eq9D/Y8y HusFTms/cecuqViwin/+qxbYEAAVTft7Mpv60Zmcy6fe4mP+IRm7WXbvBc/zJsdBiI yPUPzmVrlSMfQ== Date: Tue, 18 Feb 2025 16:56:50 -0800 Subject: [PATCH 1/4] xfs/019: reduce _fail calls in test From: "Darrick J. Wong" To: zlang@redhat.com, djwong@kernel.org Cc: hch@lst.de, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <173992588668.4079248.2147316255223418497.stgit@frogsfrogsfrogs> In-Reply-To: <173992588634.4079248.2264341183528984054.stgit@frogsfrogsfrogs> References: <173992588634.4079248.2264341183528984054.stgit@frogsfrogsfrogs> Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Replace some _fail calls in this test with softer variants: First, _scratch_mount does _try_scratch_mount || _fail so it can go away. Replace the rest of them with echoes because that's sufficient to fail the test without omitting further check. Signed-off-by: "Darrick J. Wong" Reviewed-by: Christoph Hellwig --- tests/xfs/019 | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/xfs/019 b/tests/xfs/019 index fdd965aa908f2b..b30116560c7c40 100755 --- a/tests/xfs/019 +++ b/tests/xfs/019 @@ -106,22 +106,21 @@ _verify_fs() echo "*** mount FS" _full " mount" - _try_scratch_mount >>$seqfull 2>&1 \ - || _fail "mount failed" + _scratch_mount >>$seqfull 2>&1 echo "*** verify FS" (cd $SCRATCH_MNT ; find . | LC_COLLATE=POSIX sort \ | grep -v ".use_space" \ | xargs $here/src/lstat64 | _filter_stat) diff -q $SCRATCH_MNT/bigfile $tempfile.2 \ - || _fail "bigfile corrupted" + || echo "bigfile corrupted" diff -q $SCRATCH_MNT/symlink $tempfile.2 \ - || _fail "symlink broken" + || echo "symlink broken" echo "*** unmount FS" _full "umount" _scratch_unmount >>$seqfull 2>&1 \ - || _fail "umount failed" + || echo "umount failed" } #_verify_fs 1 From patchwork Wed Feb 19 00:57:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13981312 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 55CF51A314B; Wed, 19 Feb 2025 00:57:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739926627; cv=none; b=P9xAhz6f8Ps3+fUBznpdpYhrwIEz3VUft5IMuv96iHuxYZVlXvW4jfzgecUt+9w6aeNz3wn7GbB1H2hpwps3tr26s0bs4zXrKvmI6Lb198F5/mXZhiPwEClF5rG+BVKFKuAS8G5CjGDSVCWiuZiY/DorxtY/Bk4eJJoyIU0S9QU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739926627; c=relaxed/simple; bh=LHquGFAFQUJ8oBvRHWUMN6CBdR16IwHK2ynGgKjOhHQ=; h=Date:Subject:From:To:Cc:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=mB3JUmlpb6T/AFcGkfw6xbfVUKnDW100Y80gjx0pPkWue+J4DTiLs4xDdPhkGMEZfwrRD5403At0OGATIANr1RMtDMxXqzzijp2w5mzz3uPq8EFh0+Efk0xMlYLKViySVL+cKBY7iCrBtF7jXC+4us7f0u3M68z7Ys5lXSdxToA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gobAUoe1; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gobAUoe1" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C18EFC4CEE2; Wed, 19 Feb 2025 00:57:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739926626; bh=LHquGFAFQUJ8oBvRHWUMN6CBdR16IwHK2ynGgKjOhHQ=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=gobAUoe10TrphumdVjE6mZFl2tt75GCcFLx3JsD5lLCyBnSF0+QrMdRA7Cln44C+T RSBN0neJ0Rkmi5cDffZbkqGodpNVys2nHvF4VQCVO53kIVaJteoTsZm2f3Uwzj+CIM rVkqgU83u3ZbGJ3LxhU2ZI9C1UrIWacLCv8JnGjD1kUFp/Y/s1Kl0fdpHgCTqysmOh yAg8Fnr0Jv5BNoDFXf0qQLYLpXxg+Qn2QxL0fnudvGggO7KfgKXEV/m1Kg3/writMA hFmCtZZyN2BysjpL5rfI0pjIWzo6stmUOrlFkPobqHBoUqeRs80kjIDZJ0weoq9thM ORbF70gO7jk7A== Date: Tue, 18 Feb 2025 16:57:06 -0800 Subject: [PATCH 2/4] xfs/019: test reserved file support From: "Darrick J. Wong" To: zlang@redhat.com, djwong@kernel.org Cc: hch@lst.de, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <173992588687.4079248.1375034459997008677.stgit@frogsfrogsfrogs> In-Reply-To: <173992588634.4079248.2264341183528984054.stgit@frogsfrogsfrogs> References: <173992588634.4079248.2264341183528984054.stgit@frogsfrogsfrogs> Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Test creating files with preallocated blocks but a file size of zero, since mkfs' protofile parser supports creating such things. Signed-off-by: "Darrick J. Wong" Reviewed-by: Christoph Hellwig --- tests/xfs/019 | 5 +++++ tests/xfs/019.out | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/tests/xfs/019 b/tests/xfs/019 index b30116560c7c40..5804ef228bd9d2 100755 --- a/tests/xfs/019 +++ b/tests/xfs/019 @@ -82,6 +82,7 @@ pipe p--670 0 0 symlink l--123 0 0 bigfile : a file we actually read bigfile ---666 3 0 $tempfile.2 +rsvfile r--666 3 0 1234567 : done $ EOF @@ -117,6 +118,10 @@ _verify_fs() diff -q $SCRATCH_MNT/symlink $tempfile.2 \ || echo "symlink broken" + rsvblocks=$(stat -c '%b' $SCRATCH_MNT/rsvfile) + test $rsvblocks -gt 0 \ + || echo "rsvfile broken" + echo "*** unmount FS" _full "umount" _scratch_unmount >>$seqfull 2>&1 \ diff --git a/tests/xfs/019.out b/tests/xfs/019.out index 9db157f9b413b9..9fd3b577e1ab94 100644 --- a/tests/xfs/019.out +++ b/tests/xfs/019.out @@ -69,6 +69,11 @@ Device: Inode: Links: 1 Mode: (0670/frw-rwx---) Uid: (0) Gid: (0) Device: Inode: Links: 1 + File: "./rsvfile" + Size: 0 Filetype: Regular File + Mode: (0666/-rw-rw-rw-) Uid: (3) Gid: (0) +Device: Inode: Links: 1 + File: "./setgid" Size: 5 Filetype: Regular File Mode: (2666/-rw-rwsrw-) Uid: (0) Gid: (0) From patchwork Wed Feb 19 00:57:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13981313 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 93C6C1BC094; Wed, 19 Feb 2025 00:57:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739926642; cv=none; b=b8CEXs19AJedmS7JZA7YOSv+u+JSZNgmaebFujZwVmmCDg7QuG8Auld0tDEb7EQECrtrI3b5UJRmfCJR2dZhWGhAWQ+kjfLZ/ZY68ueVSF8cUg8S3erNIe7XhL6vdHjndAEzetfM/a8mOfC+jeKgOtd3lcJ+qDwQHj8pkFfu+Ps= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739926642; c=relaxed/simple; bh=nS/b5UpQ2XQSEk4en6oAUikBAu7RzUS1iB1OGcXPbrs=; h=Date:Subject:From:To:Cc:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=QnpmVVIL+TumCKgzyOW7aIBZGkHwSqbRzkysCiAhy+tJSL7DmNSNHP2tKrVqeIePdpEImd2H4qxapFKhes1RZE7GbeKfhBKxv5QfrRbusW9vsieZ3Mq/zz7MTrTHYBQTQLQDv32LE59cz95JUqZruLfYk139jQgvYnlTA38W5Pg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HEnKk2kK; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="HEnKk2kK" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 63CD7C4CEE2; Wed, 19 Feb 2025 00:57:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739926642; bh=nS/b5UpQ2XQSEk4en6oAUikBAu7RzUS1iB1OGcXPbrs=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=HEnKk2kKwVotZJ9ErtFqAwfATCwYB9sTYrnep0v4RfLEmmOQfNDlTEgEp0JWAmFgG st78QoHK6FpCsiiDwmdMRiKoL++4zf3JtvXyPFUnMo0f0bWv3uh5q1AUdM5aQWw3fT 6R4VgS4iwAdNWMyksdiLci54icNnj9QqQrWgN/P2IJ3z0QJS68NtUe3xLf3Mq0IJwC EW77qoVZMyNb9tVDO2519FdJI1vti2KneO1g+bHa6Izh/PF3AAFkVQDN3GfQvD75oZ Kk/6ioI0pOMdRgyIXrpkAw5iQt+Wxrin++Wv2KzusSK4x0P3WQX2DzyaYv9PKLCTY8 OCrwhPb+NvyDg== Date: Tue, 18 Feb 2025 16:57:21 -0800 Subject: [PATCH 3/4] xfs: test filesystem creation with xfs_protofile From: "Darrick J. Wong" To: zlang@redhat.com, djwong@kernel.org Cc: hch@lst.de, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <173992588705.4079248.17487544777085276923.stgit@frogsfrogsfrogs> In-Reply-To: <173992588634.4079248.2264341183528984054.stgit@frogsfrogsfrogs> References: <173992588634.4079248.2264341183528984054.stgit@frogsfrogsfrogs> Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Test how well we can format a fully populated filesystem with a protofile that was generated with xfs_protofile. Signed-off-by: "Darrick J. Wong" Reviewed-by: Christoph Hellwig --- common/config | 1 tests/xfs/1894 | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/1894.out | 4 ++ 3 files changed, 114 insertions(+) create mode 100755 tests/xfs/1894 create mode 100644 tests/xfs/1894.out diff --git a/common/config b/common/config index 193b7af432dc2b..da12399da421c7 100644 --- a/common/config +++ b/common/config @@ -161,6 +161,7 @@ export MKSWAP_PROG="$(type -P mkswap)" MKSWAP_PROG="$MKSWAP_PROG -f" export XFS_LOGPRINT_PROG="$(type -P xfs_logprint)" +export XFS_PROTOFILE_PROG="$(type -P xfs_protofile)" export XFS_REPAIR_PROG="$(type -P xfs_repair)" export XFS_DB_PROG="$(type -P xfs_db)" export XFS_METADUMP_PROG="$(type -P xfs_metadump)" diff --git a/tests/xfs/1894 b/tests/xfs/1894 new file mode 100755 index 00000000000000..2f6beea2c433bf --- /dev/null +++ b/tests/xfs/1894 @@ -0,0 +1,109 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2025 Oracle, Inc. All Rights Reserved. +# +# FS QA Test No. 1894 +# +# Populate a XFS filesystem, use xfs_protofile to recreate the filesystem, and +# compare the contents. +# +. ./common/preamble +_begin_fstest auto scrub + +_cleanup() +{ + command -v _kill_fsstress &>/dev/null && _kill_fsstress + cd / + test -e "$testfiles" && _unmount $testfiles/mount &>/dev/null + test -e "$testfiles" && rm -r -f $testfiles +} + +_register_cleanup "_cleanup" BUS + +# Import common functions. +. ./common/filter +. ./common/populate +. ./common/fuzzy + +_require_command "$XFS_PROTOFILE_PROG" xfs_protofile +_require_test +_require_scratch +_require_scrub +_require_populate_commands + +make_md5() +{ + (cd $1 ; find . -type f -print0 | xargs -0 md5sum) > $tmp.md5.$2 +} + +cmp_md5() +{ + (cd $1 ; md5sum --quiet -c $tmp.md5.$2) +} + +make_stat() +{ + # columns: raw mode in hex, + # major rdev for special + # minor rdev for special + # uid of owner + # gid of owner + # file type + # total size + # name + # We can't directly control directory sizes so filter them. + (cd $1 ; find . -print0 | + xargs -0 stat -c '%f %t:%T %u %g %F %s %n' | + sed -e 's/ directory [1-9][0-9]* / directory SIZE /g' | + sort) > $tmp.stat.$2 +} + +cmp_stat() +{ + diff -u $tmp.stat.$1 $tmp.stat.$2 +} + +testfiles=$TEST_DIR/$seq +mkdir -p $testfiles/mount + +echo "Format and populate" +_scratch_populate_cached nofill >> $seqres.full 2>&1 +_scratch_mount + +_run_fsstress -n 1000 -d $SCRATCH_MNT/newfiles + +make_stat $SCRATCH_MNT before +make_md5 $SCRATCH_MNT before + +kb_needed=$(du -k -s $SCRATCH_MNT | awk '{print $1}') +img_size=$((kb_needed * 2)) +test "$img_size" -lt $((300 * 1024)) && img_size=$((300 * 1024)) + +echo "Clone image with protofile" +$XFS_PROTOFILE_PROG $SCRATCH_MNT > $testfiles/protofile + +truncate -s "${img_size}k" $testfiles/image +if ! _try_mkfs_dev -p $testfiles/protofile $testfiles/image &> $tmp.mkfs; then + cat $tmp.mkfs >> $seqres.full + + # mkfs.xfs' protofile parser has some limitations in what it can copy + # in from the prototype files. If a source file has more than 64k + # worth of xattr names then formatting will fail because listxattr + # cannot return that much information. + if grep -q 'Argument list too long' $tmp.mkfs; then + _notrun "source filesystem was too large" + fi + cat $tmp.mkfs +fi + +_mount $testfiles/image $testfiles/mount + +echo "Check file contents" +make_stat $testfiles/mount after +cmp_stat before after +cmp_md5 $testfiles/mount before +_unmount $testfiles/mount + +# success, all done +status=0 +exit diff --git a/tests/xfs/1894.out b/tests/xfs/1894.out new file mode 100644 index 00000000000000..5dd46993549187 --- /dev/null +++ b/tests/xfs/1894.out @@ -0,0 +1,4 @@ +QA output created by 1894 +Format and populate +Clone image with protofile +Check file contents From patchwork Wed Feb 19 00:57:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 13981314 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 85C582B9AA; Wed, 19 Feb 2025 00:57:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739926658; cv=none; b=IeyKZrgfV43fnaGjNn22hVFjfNopfK6koIIxQqltX5yRqpfqidpU7PNCr9wwpLUF2CRHfYFP9WsKx6Oo+nM/zcBkJ/FOfUBMw13AQ7F87EzVPRkqqU1AdI47Zp745eHn914Ym2Cep7ywIxMOWAPTu6sZVUAZkLvct5aUPo+jX18= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739926658; c=relaxed/simple; bh=E8Bx7fHqW68jOvRqUhWU/y3y1ScL0GlfO67R68My53Q=; h=Date:Subject:From:To:Cc:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=aYR9UAE9APcQf1D7sjw7mFvEoYlqUcv5pqIupVkZzZQv+GZZa9ejzOPCIuTgazLKG0nD3JFS9FlWafLcVmzHzG4LBlJEKK6/NHhHSBEAT0B4Voa89bW1T8CwIGdrfaQCUQ7ukYuAxgY2o9EVOr17v7m5S+yiK6E2S23yrv6XiuI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=pmaP/g70; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="pmaP/g70" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 064E7C4CEE2; Wed, 19 Feb 2025 00:57:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739926658; bh=E8Bx7fHqW68jOvRqUhWU/y3y1ScL0GlfO67R68My53Q=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=pmaP/g700frSXbtyDDbXVd7zFENm9CPdELa4vHv30ls9lesbz8Y8oGO7HtrVCEOIH XsgaJ4ecNX6Bu8wSEZ14Tk1e8JY4TWOnR8PRPW7dMiu4oyBuzyrfxT9ZSFVLcv2pBw A7LrKp9YHaBIayHsyyB956SXO8ESaaYs7bUA2ZR1lrKfgsbEcXlGQe/GscAoN2t7zr TyQoZco1F1k7/6JCMuxhjpTQQkYrTHY/IGs2oJs4J4QHem+YUeiSWD4Np6DYud0rY6 a0hwpPvFGasZKZC2GyHmLUvQpoyyX6JVZ+0abSeX+tEcZl93JnfZSKwFsOVuXd+BVz 7/k50jx9i+aZg== Date: Tue, 18 Feb 2025 16:57:37 -0800 Subject: [PATCH 4/4] fstests: test mkfs.xfs protofiles with xattr support From: "Darrick J. Wong" To: zlang@redhat.com, djwong@kernel.org Cc: hch@lst.de, linux-xfs@vger.kernel.org, fstests@vger.kernel.org Message-ID: <173992588723.4079248.16411570550903471187.stgit@frogsfrogsfrogs> In-Reply-To: <173992588634.4079248.2264341183528984054.stgit@frogsfrogsfrogs> References: <173992588634.4079248.2264341183528984054.stgit@frogsfrogsfrogs> Precedence: bulk X-Mailing-List: fstests@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Darrick J. Wong Make sure we can do protofiles with xattr support. Signed-off-by: "Darrick J. Wong" Reviewed-by: Christoph Hellwig --- tests/xfs/1937 | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/1937.out | 102 +++++++++++++++++++++++++++++++++++++ 2 files changed, 246 insertions(+) create mode 100755 tests/xfs/1937 create mode 100644 tests/xfs/1937.out diff --git a/tests/xfs/1937 b/tests/xfs/1937 new file mode 100755 index 00000000000000..aa4143a75ef643 --- /dev/null +++ b/tests/xfs/1937 @@ -0,0 +1,144 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2024-2025 Oracle. All Rights Reserved. +# Copyright (c) 2000-2004 Silicon Graphics, Inc. All Rights Reserved. +# +# FS QA Test No. 1937 +# +# mkfs protofile with xattrs test +# +. ./common/preamble +_begin_fstest mkfs auto quick + +seqfull="$seqres.full" +rm -f $seqfull + +. ./common/filter + +_cleanup() +{ + echo "*** unmount" + _scratch_unmount 2>/dev/null + rm -f $tmp.* + rm -f $TEST_DIR/$seq.file +} + +_full() +{ + echo "" >>$seqfull + echo "*** $* ***" >>$seqfull + echo "" >>$seqfull +} + +_filter_stat() +{ + sed ' + /^Access:/d; + /^Modify:/d; + /^Change:/d; + s/Device: *[0-9][0-9]*,[0-9][0-9]*/Device: /; + s/Inode: *[0-9][0-9]*/Inode: /; + s/Size: *[0-9][0-9]* *Filetype: Dir/Size: Filetype: Dir/; + ' | tr -s ' ' +} + +_require_command $ATTR_PROG "attr" +_require_scratch + +# mkfs cannot create a filesystem with protofiles if realtime is enabled, so +# don't run this test if the rtinherit is anywhere in the mkfs options. +echo "$MKFS_OPTIONS" | grep -q "rtinherit" && \ + _notrun "Cannot mkfs with a protofile and -d rtinherit." + +protofile=$tmp.proto +tempfile=$TEST_DIR/$seq.file + +$XFS_IO_PROG -f -c 'pwrite 64k 28k' -c 'pwrite 1280k 37960' $tempfile >> $seqres.full +$here/src/devzero -b 2048 -n 2 -c -v 44 $tempfile.2 + +$ATTR_PROG -R -s rootdata -V 0test $tempfile &>> $seqres.full +$ATTR_PROG -S -s acldata -V 1test $tempfile &>> $seqres.full +$ATTR_PROG -s userdata -V 2test $tempfile &>> $seqres.full +perl -e 'print "x" x 37960;' | $ATTR_PROG -s bigdata $tempfile &>> $seqres.full + +cat >$protofile </dev/null 2>&1 + + _full "mkfs" + _scratch_mkfs_xfs $VERSION -p $protofile >>$seqfull 2>&1 + + echo "*** check FS" + _check_scratch_fs + + echo "*** mount FS" + _full " mount" + _try_scratch_mount >>$seqfull 2>&1 \ + || _fail "mount failed" + + $ATTR_PROG -l $SCRATCH_MNT/directory/test | \ + grep -q 'Attribute.*has a ' || \ + _notrun "mkfs.xfs protofile does not support xattrs" + + echo "*** verify FS" + (cd $SCRATCH_MNT ; find . | LC_COLLATE=POSIX sort \ + | grep -v ".use_space" \ + | xargs $here/src/lstat64 | _filter_stat) + diff -q $SCRATCH_MNT/bigfile $tempfile.2 \ + || _fail "bigfile corrupted" + diff -q $SCRATCH_MNT/symlink $tempfile.2 \ + || _fail "symlink broken" + + $ATTR_PROG -l $SCRATCH_MNT/directory/test | _filter_scratch + + echo "*** unmount FS" + _full "umount" + _scratch_unmount >>$seqfull 2>&1 \ + || _fail "umount failed" +} + +_verify_fs 2 + +echo "*** done" +status=0 +exit diff --git a/tests/xfs/1937.out b/tests/xfs/1937.out new file mode 100644 index 00000000000000..050c8318b1abca --- /dev/null +++ b/tests/xfs/1937.out @@ -0,0 +1,102 @@ +QA output created by 1937 +Wrote 2048.00Kb (value 0x2c) +*** create FS version 2 +*** check FS +*** mount FS +*** verify FS + File: "." + Size: Filetype: Directory + Mode: (0777/drwxrwxrwx) Uid: (3) Gid: (1) +Device: Inode: Links: 4 + + File: "./bigfile" + Size: 2097152 Filetype: Regular File + Mode: (0666/-rw-rw-rw-) Uid: (3) Gid: (0) +Device: Inode: Links: 1 + + File: "./block_device" + Size: 0 Filetype: Block Device + Mode: (0012/b-----x-w-) Uid: (3) Gid: (1) +Device: Inode: Links: 1 Device type: 161,162 + + File: "./char_device" + Size: 0 Filetype: Character Device + Mode: (0345/c-wxr--r-x) Uid: (3) Gid: (1) +Device: Inode: Links: 1 Device type: 177,178 + + File: "./directory" + Size: Filetype: Directory + Mode: (0755/drwxr-xr-x) Uid: (3) Gid: (1) +Device: Inode: Links: 2 + + File: "./directory/file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_0" + Size: 1348680 Filetype: Regular File + Mode: (0755/-rwxr-xr-x) Uid: (3) Gid: (1) +Device: Inode: Links: 1 + + File: "./directory/file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_1" + Size: 1348680 Filetype: Regular File + Mode: (0755/-rwxr-xr-x) Uid: (3) Gid: (1) +Device: Inode: Links: 1 + + File: "./directory/file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_2" + Size: 1348680 Filetype: Regular File + Mode: (0755/-rwxr-xr-x) Uid: (3) Gid: (1) +Device: Inode: Links: 1 + + File: "./directory/file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_3" + Size: 1348680 Filetype: Regular File + Mode: (0755/-rwxr-xr-x) Uid: (3) Gid: (1) +Device: Inode: Links: 1 + + File: "./directory/file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_4" + Size: 1348680 Filetype: Regular File + Mode: (0755/-rwxr-xr-x) Uid: (3) Gid: (1) +Device: Inode: Links: 1 + + File: "./directory/test" + Size: 1348680 Filetype: Regular File + Mode: (0755/-rwxr-xr-x) Uid: (3) Gid: (1) +Device: Inode: Links: 1 + + File: "./directory_setgid" + Size: Filetype: Directory + Mode: (2755/drwxr-sr-x) Uid: (3) Gid: (2) +Device: Inode: Links: 2 + + File: "./directory_setgid/file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_5" + Size: 1348680 Filetype: Regular File + Mode: (0755/-rwxr-xr-x) Uid: (3) Gid: (1) +Device: Inode: Links: 1 + + File: "./pipe" + Size: 0 Filetype: Fifo File + Mode: (0670/frw-rwx---) Uid: (0) Gid: (0) +Device: Inode: Links: 1 + + File: "./setgid" + Size: 1348680 Filetype: Regular File + Mode: (2666/-rw-rwsrw-) Uid: (0) Gid: (0) +Device: Inode: Links: 1 + + File: "./setugid" + Size: 1348680 Filetype: Regular File + Mode: (6666/-rwsrwsrw-) Uid: (0) Gid: (0) +Device: Inode: Links: 1 + + File: "./setuid" + Size: 1348680 Filetype: Regular File + Mode: (4666/-rwsrw-rw-) Uid: (0) Gid: (0) +Device: Inode: Links: 1 + + File: "./symlink" + Size: 7 Filetype: Symbolic Link + Mode: (0123/l--x-w--wx) Uid: (0) Gid: (0) +Device: Inode: Links: 1 +Attribute "userdata" has a 5 byte value for SCRATCH_MNT/directory/test +Attribute "rootdata" has a 5 byte value for SCRATCH_MNT/directory/test +Attribute "bigdata" has a 37960 byte value for SCRATCH_MNT/directory/test +Attribute "acldata" has a 5 byte value for SCRATCH_MNT/directory/test +*** unmount FS +*** done +*** unmount