From: "Darrick J. Wong" <djwong@kernel.org>
To: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Cc: Zorro Lang <zlang@redhat.com>,
fstests@vger.kernel.org, fdmanana@suse.com,
ritesh.list@gmail.com, naohiro.aota@wdc.com, wqu@suse.com
Subject: Re: [PATCH 6/6] treewide: Use _sysfs_queue_path helper in all queue access locations
Date: Fri, 10 Apr 2026 09:52:26 -0700 [thread overview]
Message-ID: <20260410165226.GT6212@frogsfrogsfrogs> (raw)
In-Reply-To: <01fdf4d33a80159edbc53fbc57d856f794480c94.1775802601.git.ojaswin@linux.ibm.com>
On Fri, Apr 10, 2026 at 12:06:06PM +0530, Ojaswin Mujoo wrote:
> The sysfs queue dir for partitions is present in their parent device's
> sysfs dir. This requires extra checks when trying to reading queue data
> from sysfs. Currently, fstests open codes this handling or straight up
> ignores it in some places.
>
> Avoid this by converting all remaining direct sysfs queue accesses to
> use the _sysfs_queue_path helper function. This ensures proper handling
> of partitions across the entire codebase and provides a consistent
> interface for accessing queue attributes.
>
> Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Looks reasonable to me,
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
--D
> ---
> common/encrypt | 7 ++-----
> common/rc | 12 ++++++++----
> common/report | 20 +++++++++++---------
> common/zoned | 5 +++--
> tests/btrfs/076 | 11 +++++++----
> tests/btrfs/237 | 5 +++--
> tests/btrfs/273 | 4 +++-
> tests/btrfs/283 | 4 +++-
> 8 files changed, 40 insertions(+), 28 deletions(-)
>
> diff --git a/common/encrypt b/common/encrypt
> index f2687631..c9e0853d 100644
> --- a/common/encrypt
> +++ b/common/encrypt
> @@ -173,11 +173,8 @@ _require_hw_wrapped_key_support()
> local dev=$1
>
> echo "Checking for HW-wrapped key support on $dev" >> $seqres.full
> - local sysfs_dir=$(_sysfs_dev $dev)
> - if [ ! -e $sysfs_dir/queue ]; then
> - sysfs_dir=$sysfs_dir/..
> - fi
> - if [ ! -e $sysfs_dir/queue/crypto/hw_wrapped_keys ]; then
> + local queue_path=$(_sysfs_queue_path $dev)
> + if [ $? -ne 0 ] || [ ! -e $queue_path/crypto/hw_wrapped_keys ]; then
> _notrun "$dev doesn't support hardware-wrapped inline encryption keys"
> fi
>
> diff --git a/common/rc b/common/rc
> index d7db5db1..9632b211 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -2502,7 +2502,11 @@ __scratch_dev_has_dax()
> {
> local sysfs="/sys/block/$(_short_dev $SCRATCH_DEV)"
> test -e "${sysfs}/dax" && return 0
> - test "$(cat "${sysfs}/queue/dax" 2>/dev/null)" = "1" && return 0
> +
> + local queue_path=$(_sysfs_queue_path $SCRATCH_DEV)
> + if [ $? -eq 0 ]; then
> + test "$(cat "${queue_path}/dax" 2>/dev/null)" = "1" && return 0
> + fi
>
> return 1
> }
> @@ -2562,10 +2566,10 @@ _zone_type()
> echo "Usage: _zone_type <device>"
> _exit 1
> fi
> - local sdev=`_short_dev $target`
>
> - if [ -e /sys/block/${sdev}/queue/zoned ]; then
> - cat /sys/block/${sdev}/queue/zoned
> + local queue_path=$(_sysfs_queue_path $target)
> + if [ $? -eq 0 ] && [ -e "$queue_path/zoned" ]; then
> + cat "$queue_path/zoned"
> else
> echo none
> fi
> diff --git a/common/report b/common/report
> index 7128bbeb..0d9ad78c 100644
> --- a/common/report
> +++ b/common/report
> @@ -37,16 +37,18 @@ __generate_blockdev_report_vars() {
>
> test -z "$bdev" && return
> test -b "$bdev" || return
> - local sysfs_bdev="$(_sysfs_dev "$bdev")"
> -
> REPORT_VARS["${bdev_var}_SIZE_KB"]="$(( "$(blockdev --getsz "$bdev")" / 2 ))"
> - REPORT_VARS["${bdev_var}_ROTATIONAL"]="$(cat "$sysfs_bdev/queue/rotational" 2>/dev/null)"
> - REPORT_VARS["${bdev_var}_DAX"]="$(cat "$sysfs_bdev/queue/dax" 2>/dev/null)"
> - REPORT_VARS["${bdev_var}_DISCARD"]="$(sed -e 's/[1-9][0-9]*/1/g' "$sysfs_bdev/queue/discard_max_bytes" 2>/dev/null)"
> - REPORT_VARS["${bdev_var}_WRITE_ZEROES"]="$(sed -e 's/[1-9][0-9]*/1/g' "$sysfs_bdev/queue/write_zeroes_max_bytes" 2>/dev/null)"
> - REPORT_VARS["${bdev_var}_PHYS_BLOCK_BYTES"]="$(cat "$sysfs_bdev/queue/physical_block_size" 2>/dev/null)"
> - REPORT_VARS["${bdev_var}_LBA_BYTES"]="$(cat "$sysfs_bdev/queue/logical_block_size" 2>/dev/null)"
> - REPORT_VARS["${bdev_var}_ZONES"]="$(cat "$sysfs_bdev/queue/nr_zones" 2>/dev/null)"
> +
> + local queue_path="$(_sysfs_queue_path "$bdev")"
> + if [ $? -eq 0 ]; then
> + REPORT_VARS["${bdev_var}_ROTATIONAL"]="$(cat "$queue_path/rotational" 2>/dev/null)"
> + REPORT_VARS["${bdev_var}_DAX"]="$(cat "$queue_path/dax" 2>/dev/null)"
> + REPORT_VARS["${bdev_var}_DISCARD"]="$(sed -e 's/[1-9][0-9]*/1/g' "$queue_path/discard_max_bytes" 2>/dev/null)"
> + REPORT_VARS["${bdev_var}_WRITE_ZEROES"]="$(sed -e 's/[1-9][0-9]*/1/g' "$queue_path/write_zeroes_max_bytes" 2>/dev/null)"
> + REPORT_VARS["${bdev_var}_PHYS_BLOCK_BYTES"]="$(cat "$queue_path/physical_block_size" 2>/dev/null)"
> + REPORT_VARS["${bdev_var}_LBA_BYTES"]="$(cat "$queue_path/logical_block_size" 2>/dev/null)"
> + REPORT_VARS["${bdev_var}_ZONES"]="$(cat "$queue_path/nr_zones" 2>/dev/null)"
> + fi
> }
>
> __import_report_vars() {
> diff --git a/common/zoned b/common/zoned
> index 88b81de5..89d0a061 100644
> --- a/common/zoned
> +++ b/common/zoned
> @@ -17,8 +17,9 @@ _filter_blkzone_report()
>
> _require_limited_active_zones() {
> local dev=$1
> - local sysfs=$(_sysfs_dev ${dev})
> - local attr="${sysfs}/queue/max_active_zones"
> + local queue_path=$(_sysfs_queue_path ${dev})
> + [ $? -ne 0 ] && _notrun "cannot find queue path: $queue_path"
> + local attr="${queue_path}/max_active_zones"
>
> [ -e "${attr}" ] || _notrun "cannot find queue/max_active_zones. Maybe non-zoned device?"
> if [ $(cat "${attr}") == 0 ]; then
> diff --git a/tests/btrfs/076 b/tests/btrfs/076
> index c148406f..0a1e660d 100755
> --- a/tests/btrfs/076
> +++ b/tests/btrfs/076
> @@ -28,10 +28,13 @@ _fixed_by_kernel_commit 4bcbb3325513 \
> # An extent size can be up to BTRFS_MAX_UNCOMPRESSED
> max_extent_size=$(( 128 * 1024 ))
> if _scratch_btrfs_is_zoned; then
> - zone_append_max=$(cat "/sys/block/$(_short_dev $SCRATCH_DEV)/queue/zone_append_max_bytes")
> - if [[ $zone_append_max -gt 0 && $zone_append_max -lt $max_extent_size ]]; then
> - # Round down to PAGE_SIZE
> - max_extent_size=$(( $zone_append_max / 4096 * 4096 ))
> + queue_path=$(_sysfs_queue_path $SCRATCH_DEV)
> + if [ $? -eq 0 ]; then
> + zone_append_max=$(cat "$queue_path/zone_append_max_bytes")
> + if [[ $zone_append_max -gt 0 && $zone_append_max -lt $max_extent_size ]]; then
> + # Round down to PAGE_SIZE
> + max_extent_size=$(( $zone_append_max / 4096 * 4096 ))
> + fi
> fi
> fi
> file_size=$(( 10 * 1024 * 1024 ))
> diff --git a/tests/btrfs/237 b/tests/btrfs/237
> index 675f4c42..07a56336 100755
> --- a/tests/btrfs/237
> +++ b/tests/btrfs/237
> @@ -44,8 +44,9 @@ get_data_bg_physical()
> $BLKZONE_PROG report $SCRATCH_DEV | grep -q -e "nw" && \
> _notrun "test is unreliable on devices with conventional zones"
>
> -sdev="$(_short_dev $SCRATCH_DEV)"
> -zone_size=$(($(cat /sys/block/${sdev}/queue/chunk_sectors) << 9))
> +queue_path=$(_sysfs_queue_path $SCRATCH_DEV) || \
> + _notrun "Failed to get queue path: $queue_path"
> +zone_size=$(($(cat "$queue_path/chunk_sectors") << 9))
> fssize=$((zone_size * 16))
> devsize=$(($(_get_device_size $SCRATCH_DEV) * 1024))
> # Create a minimal FS to kick the reclaim process
> diff --git a/tests/btrfs/273 b/tests/btrfs/273
> index 06ae5d53..60c3967b 100755
> --- a/tests/btrfs/273
> +++ b/tests/btrfs/273
> @@ -38,7 +38,9 @@ _require_btrfs_command inspect-internal dump-tree
> # enabled.
> _require_no_compress
>
> -max_active=$(cat $(_sysfs_dev ${SCRATCH_DEV})/queue/max_active_zones)
> +queue_path=$(_sysfs_queue_path ${SCRATCH_DEV}) || \
> + _notrun "Failed to get queue path: $queue_path"
> +max_active=$(cat "$queue_path/max_active_zones")
>
> # Fill the zones leaving the last 1MB
> fill_active_zones() {
> diff --git a/tests/btrfs/283 b/tests/btrfs/283
> index f7a8290a..9f89fafb 100755
> --- a/tests/btrfs/283
> +++ b/tests/btrfs/283
> @@ -26,7 +26,9 @@ _wants_kernel_commit c7499a64dcf6 \
>
> extent_size=$(( 128 * 1024 ))
> if _scratch_btrfs_is_zoned; then
> - zone_append_max=$(cat "/sys/block/$(_short_dev $SCRATCH_DEV)/queue/zone_append_max_bytes")
> + queue_path=$(_sysfs_queue_path $SCRATCH_DEV) ||
> + _notrun "Couldn't find queue path for zoned device"
> + zone_append_max=$(cat "$queue_path/zone_append_max_bytes")
> if [[ $zone_append_max -gt 0 && $zone_append_max -lt $extent_size ]]; then
> _notrun "zone append max $zone_append_max is smaller than wanted extent size $extent_size"
> fi
> --
> 2.53.0
>
>
prev parent reply other threads:[~2026-04-10 16:52 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-10 6:36 [PATCH v2 0/6] Atomic write test fixes & refactoring Ojaswin Mujoo
2026-04-10 6:36 ` [PATCH 1/6] ext4/061,062: Minor fixes and refactoring Ojaswin Mujoo
2026-04-10 6:36 ` [PATCH 2/6] common/rc: Add _sysfs_queue_path helper with partition support Ojaswin Mujoo
2026-04-10 16:50 ` Darrick J. Wong
2026-04-10 6:36 ` [PATCH 3/6] generic/765: Fix sysfs queue path for nvme partitions Ojaswin Mujoo
2026-04-10 16:50 ` Darrick J. Wong
2026-04-10 6:36 ` [PATCH 4/6] generic/765: Ignore mkfs warning Ojaswin Mujoo
2026-04-10 16:54 ` Darrick J. Wong
2026-04-10 6:36 ` [PATCH 5/6] generic/775: Fix an infinite loop due to variable name clash Ojaswin Mujoo
2026-04-10 16:51 ` Darrick J. Wong
2026-04-10 6:36 ` [PATCH 6/6] treewide: Use _sysfs_queue_path helper in all queue access locations Ojaswin Mujoo
2026-04-10 16:52 ` Darrick J. Wong [this message]
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=20260410165226.GT6212@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=fdmanana@suse.com \
--cc=fstests@vger.kernel.org \
--cc=naohiro.aota@wdc.com \
--cc=ojaswin@linux.ibm.com \
--cc=ritesh.list@gmail.com \
--cc=wqu@suse.com \
--cc=zlang@redhat.com \
/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