* [PATCH] generic/740: set env for mkfs.exfat and mkfs.ntfs
@ 2026-06-16 16:57 David Timber
2026-06-17 6:08 ` Christoph Hellwig
0 siblings, 1 reply; 2+ messages in thread
From: David Timber @ 2026-06-16 16:57 UTC (permalink / raw)
To: Zorro Lang, Darrick J. Wong, Christoph Hellwig
Cc: fstests, Namjae Jeon, Sungjong Seo, Yuezhang Mo, Hyunchul Lee,
Konstantin Komarov, David Timber
Foreign filesystem detection is added in exfatprogs version 1.4.1. To
maintain backward compatibility, mkfs.exfat refuses to format the device
only when it's run from terminal with a tty associated to it.
This is similar to how e2fsprogs work around the issue. However,
with exfatprogs, this behaviour can be overridden with the special
environment variable EXFAT_TTY_OVERRIDE to simulate shell invocation by
user.
mkfs.ntfs from NTFS-3G userland package refuses to format the target
if it's backed by a "real" device but not a partition to maintain
compatibility with Windows. When formatting the scratch device in NTFS
for testing, this behaviour has to be overridden so that any type of
blockdev can be used as a scratch device.
Signed-off-by: David Timber <dxdt@dev.snart.me>
---
tests/generic/740 | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
diff --git a/tests/generic/740 b/tests/generic/740
index ce55200f..89822480 100755
--- a/tests/generic/740
+++ b/tests/generic/740
@@ -28,6 +28,20 @@ _require_block_device "${SCRATCH_DEV}"
# not all the FS support zoned block device
_require_non_zoned_device "${SCRATCH_DEV}"
+mkfs_preop=""
+mkfs_preargs=""
+mkfs_postargs=""
+
+case "$FSTYP" in
+ exfat)
+ # Some fsprogs were slow to implement foreign fs detection.
+ # For backward compatibility, mkfs.exfat refuses to format only
+ # when run from a tty. This env var should override the
+ # behaviour if supported.
+ mkfs_preop="EXFAT_TTY_OVERRIDE=1"
+ ;;
+esac
+
echo "Silence is golden."
for fs in `echo ${MKFS_PROG}.* | sed -e "s:${MKFS_PROG}.::g"`
do
@@ -60,8 +74,10 @@ do
postargs=2000
;;
ntfs)
- # "quick" format that doesn't zero the entire device
- postargs="--quick"
+ # "quick" format that doesn't zero the entire device. Use -F so
+ # that NTFS-3G mkfs formats the volume even if the scratch
+ # blockdev is not a partition.
+ postargs="-QF"
;;
reiser4)
preop="echo y |"
@@ -83,7 +99,7 @@ do
# next, ensure we don't overwrite it
echo "=== Attempting $FSTYP overwrite of $fs..." >>$seqres.full
- ${MKFS_PROG} -t $FSTYP $SCRATCH_DEV >>$seqres.full 2>&1
+ eval $mkfs_preop ${MKFS_PROG} -t $FSTYP $mkfs_preargs $SCRATCH_DEV $mkfs_postargs >>$seqres.full 2>&1
[ $? -eq 0 ] && echo "Failed - overwrote fs type ${fs}!"
else
--
2.54.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] generic/740: set env for mkfs.exfat and mkfs.ntfs
2026-06-16 16:57 [PATCH] generic/740: set env for mkfs.exfat and mkfs.ntfs David Timber
@ 2026-06-17 6:08 ` Christoph Hellwig
0 siblings, 0 replies; 2+ messages in thread
From: Christoph Hellwig @ 2026-06-17 6:08 UTC (permalink / raw)
To: David Timber
Cc: Zorro Lang, Darrick J. Wong, Christoph Hellwig, fstests,
Namjae Jeon, Sungjong Seo, Yuezhang Mo, Hyunchul Lee,
Konstantin Komarov
On Wed, Jun 17, 2026 at 01:57:31AM +0900, David Timber wrote:
> +case "$FSTYP" in
> + exfat)
Please don't indent the matches in case statements (yes, we probably
have a few legacy cases that do it, but copy the right ones :))
> + # Some fsprogs were slow to implement foreign fs detection.
> + # For backward compatibility, mkfs.exfat refuses to format only
> + # when run from a tty. This env var should override the
> + # behaviour if supported.
I don't get the 'Some fsprogs' part here. Maybe just drop that line?
> ntfs)
> - # "quick" format that doesn't zero the entire device
> - postargs="--quick"
> + # "quick" format that doesn't zero the entire device. Use -F so
> + # that NTFS-3G mkfs formats the volume even if the scratch
> + # blockdev is not a partition.
> + postargs="-QF"
Why does this switch from the long to the short form quick argument?
> echo "=== Attempting $FSTYP overwrite of $fs..." >>$seqres.full
> - ${MKFS_PROG} -t $FSTYP $SCRATCH_DEV >>$seqres.full 2>&1
> + eval $mkfs_preop ${MKFS_PROG} -t $FSTYP $mkfs_preargs $SCRATCH_DEV $mkfs_postargs >>$seqres.full 2>&1
Maybe add a line break to keep the line at a reasonable length.
Also in doubt split the exfat and ntfs changes as they seem entirely
unrelated.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-17 6:08 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-16 16:57 [PATCH] generic/740: set env for mkfs.exfat and mkfs.ntfs David Timber
2026-06-17 6:08 ` Christoph Hellwig
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox