FSTests Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH] common/rc: teach _require_scratch_swapfile() that swap does not work with DAX
@ 2021-04-18 16:19 Theodore Ts'o
  2021-04-20  6:25 ` Christoph Hellwig
  0 siblings, 1 reply; 2+ messages in thread
From: Theodore Ts'o @ 2021-04-18 16:19 UTC (permalink / raw)
  To: fstests; +Cc: guaneryu, Theodore Ts'o

The statement, "ext* and xfs have supported all variants of swap files
since their introduction, so swapon should not fail," is not quite
completely true.  In particular, swapon does not work if the DAX is
active on a swapfile, and that would be true if the file system is
mounted with -o dax.

So if swapon fails, check to see if the swapfile has the
STATX_ATTR_DAX attribute set, and if so, issue a _notrun instead of a
_fail.

Fixes: 725feeff94cc ("common/rc: swapon should not fail for given FS in _require_scratch_swapfile()")
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
---
 common/rc | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/common/rc b/common/rc
index 0f91340f..d2fd5c5c 100644
--- a/common/rc
+++ b/common/rc
@@ -2495,8 +2495,17 @@ _require_scratch_swapfile()
 	case "$FSTYP" in
 	ext2|ext3|ext4|xfs)
 		if ! swapon "$SCRATCH_MNT/swap" >/dev/null 2>&1; then
+			local attributes=$($XFS_IO_PROG -c 'statx -r' \
+					"$SCRATCH_MNT/swap" 2>/dev/null | \
+					awk '/stat.attributes / { print $3 }')
 			_scratch_unmount
-			_fail "swapon failed for $FSTYP"
+			if test -n "$attributes" -a \
+				$((attributes & 0x00200000)) -eq $((0x00200000)) ;
+			then
+			    _notrun "DAX swapfiles are not supported"
+			else
+			    _fail "swapon failed for $FSTYP"
+			fi
 		fi
 		;;
 	*)
-- 
2.31.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] common/rc: teach _require_scratch_swapfile() that swap does not work with DAX
  2021-04-18 16:19 [PATCH] common/rc: teach _require_scratch_swapfile() that swap does not work with DAX Theodore Ts'o
@ 2021-04-20  6:25 ` Christoph Hellwig
  0 siblings, 0 replies; 2+ messages in thread
From: Christoph Hellwig @ 2021-04-20  6:25 UTC (permalink / raw)
  To: Theodore Ts'o; +Cc: fstests, guaneryu

On Sun, Apr 18, 2021 at 12:19:25PM -0400, Theodore Ts'o wrote:
> The statement, "ext* and xfs have supported all variants of swap files
> since their introduction, so swapon should not fail," is not quite
> completely true.  In particular, swapon does not work if the DAX is
> active on a swapfile, and that would be true if the file system is
> mounted with -o dax.
> 
> So if swapon fails, check to see if the swapfile has the
> STATX_ATTR_DAX attribute set, and if so, issue a _notrun instead of a
> _fail.

Isn't the fact that swapon doesn't work on DAX files a back?  The
swap I/O path couldn't care less if the file is marked as DAX or not.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, back to index

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-18 16:19 [PATCH] common/rc: teach _require_scratch_swapfile() that swap does not work with DAX Theodore Ts'o
2021-04-20  6:25 ` Christoph Hellwig

FSTests Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/fstests/0 fstests/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 fstests fstests/ https://lore.kernel.org/fstests \
		fstests@vger.kernel.org
	public-inbox-index fstests

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.fstests


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git