public inbox for linux-bcache@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH blktests v5 0/3] bcache: add initial test cases
@ 2026-03-05 15:01 Daniel Wagner
  2026-03-05 15:01 ` [PATCH blktests v5 1/3] bcache: add bcache/001 Daniel Wagner
                   ` (3 more replies)
  0 siblings, 4 replies; 16+ messages in thread
From: Daniel Wagner @ 2026-03-05 15:01 UTC (permalink / raw)
  To: Christoph Hellwig, Stephen Zhang, Kent Overstreet, Coly Li,
	Shin'ichiro Kawasaki, Johannes Thumshirn, linux-block,
	linux-bcache, Daniel Wagner

I've addressed all comments from Shinichiro. 

bcache/002 is not using iostat anymore, instead it reads directly from sysfs.
Also updated this tests according Stephen's feedback. I didn't test yet with an
older version.

Unfortunatly, I was not able to reproduce the "nvme?n1" file in my setup with:

  TEST_CASE_DEV_ARRAY[bcache/*]="/dev/nvme0n1 /dev/vdb /dev/vdc"
  TEST_CASE_DEV_ARRAY[bcache/*]="/dev/nvme0n1 /dev/vdb /dev/vdc /dev/nvme1n1"

Not sure where this is coming from.

Cheers,
Daniel
 
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Stephen Zhang <starzhangzsd@gmail.com>
Cc: Kent Overstreet <kent.overstreet@linux.dev>
Cc: Coly Li <colyli@fnnas.com>
Cc: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Cc: Johannes Thumshirn <Johannes.Thumshirn@wdc.com>
Cc: linux-block@vger.kernel.org
Cc: linux-bcache@vger.kernel.org
Signed-off-by: Daniel Wagner <dwagner@suse.de>

--- Changes in v5:
- Addressed all comments from Shinichiro
- Updated bcache/002 according Stepen's feedback, though reduced
  fio's runtime to 10s
- Link to v4: https://patch.msgid.link/20260212-bcache-v4-0-215f3fde1c84@suse.de

Changes in v4:
- changed file mode to 755 for 001 and 002
- changed license to GPL-3.0+
- use group_requires
- fixed whitespace damage
- dropped unnecessary '|| true'
- added 'local' for local variables
- added wait loop for register interface to show up
- updated documentation
- Link to v3: https://patch.msgid.link/20260122-bcache-v3-0-2c02d15a4503@suse.de

Changes in v3:
- add bcache/002
- return created bcache devices to tests case
- made cleanup more robust (handling detached cache)
- track all resources correctly
- operatoe only in final cleanup on known devices
- Link to v2: https://patch.msgid.link/20260121-bcache-v2-0-b26af185e63a@suse.de

Changes in v2:
- fixed whitespace damage
- added documentation on how to configure for bcache tests
- do registering explicitly
- made disk wiping more robust
- Link to v1: https://patch.msgid.link/20260120-bcache-v1-1-59bf0b2d4140@suse.de

---
Daniel Wagner (3):
      bcache: add bcache/001
      bcache: add bcache/002
      doc: document how to configure bcache tests

 Documentation/running-tests.md |  10 ++
 tests/bcache/001               |  44 +++++
 tests/bcache/001.out           |   3 +
 tests/bcache/002               |  78 +++++++++
 tests/bcache/002.out           |   2 +
 tests/bcache/rc                | 377 +++++++++++++++++++++++++++++++++++++++++
 6 files changed, 514 insertions(+)
---
base-commit: e387a7e0169cc012eb6a7140a0561d2901c92a76
change-id: 20260120-bcache-35ec7368c8f4

Best regards,
-- 
Daniel Wagner <dwagner@suse.de>


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

* [PATCH blktests v5 1/3] bcache: add bcache/001
  2026-03-05 15:01 [PATCH blktests v5 0/3] bcache: add initial test cases Daniel Wagner
@ 2026-03-05 15:01 ` Daniel Wagner
  2026-03-06  9:49   ` Johannes Thumshirn
  2026-03-06 12:15   ` Shinichiro Kawasaki
  2026-03-05 15:01 ` [PATCH blktests v5 2/3] bcache: add bcache/002 Daniel Wagner
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 16+ messages in thread
From: Daniel Wagner @ 2026-03-05 15:01 UTC (permalink / raw)
  To: Christoph Hellwig, Stephen Zhang, Kent Overstreet, Coly Li,
	Shin'ichiro Kawasaki, Johannes Thumshirn, linux-block,
	linux-bcache, Daniel Wagner

So far we are missing tests for bcache. Besides a relative simple
setup/teardown tests add also the corresponding infrastructure. More
tests are to be expected to depend on this.

_create_bcache/_remove_bcache are tracking the resources and if anything
is missing it will complain.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
---
 tests/bcache/001     |  44 ++++++
 tests/bcache/001.out |   3 +
 tests/bcache/rc      | 377 +++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 424 insertions(+)

diff --git a/tests/bcache/001 b/tests/bcache/001
new file mode 100755
index 000000000000..64d5d45d9e6e
--- /dev/null
+++ b/tests/bcache/001
@@ -0,0 +1,44 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-3.0+
+# Copyright (C) 2026 Daniel Wagner, SUSE Labs
+#
+# Test bcache setup and teardown
+
+. tests/bcache/rc
+
+DESCRIPTION="test bcache setup and teardown"
+
+test_device_array() {
+	echo "Running ${TEST_NAME}"
+
+	if [[ ${#TEST_DEV_ARRAY[@]} -lt 3 ]]; then
+		SKIP_REASONS+=("requires at least 3 devices")
+		return 1
+	fi
+
+	_setup_bcache "${TEST_DEV_ARRAY[@]}"
+
+	local -a bcache_nodes
+
+	mapfile -t bcache_nodes < <(_create_bcache \
+				--cache "${TEST_DEV_ARRAY[0]##*/}" \
+				--bdev "${TEST_DEV_ARRAY[1]##*/}" \
+				--writeback)
+
+	echo "number of bcaches: ${#bcache_nodes[*]}"
+
+	_remove_bcache --bcache "${bcache_nodes[@]}" \
+			--cache "${TEST_DEV_ARRAY[0]##*/}" \
+			--bdev "${TEST_DEV_ARRAY[1]##*/}" \
+
+	mapfile -t bcache_nodes < <(_create_bcache \
+				--cache "${TEST_DEV_ARRAY[0]##*/}" \
+				--bdev "${TEST_DEV_ARRAY[1]##*/}" "${TEST_DEV_ARRAY[2]##*/}" \
+				--writeback)
+
+	echo "number of bcaches: ${#bcache_nodes[*]}"
+
+	_remove_bcache --bcache "${bcache_nodes[@]}" \
+			--cache "${TEST_DEV_ARRAY[0]##*/}" \
+			--bdev "${TEST_DEV_ARRAY[1]##*/}" "${TEST_DEV_ARRAY[2]##*/}"
+}
diff --git a/tests/bcache/001.out b/tests/bcache/001.out
new file mode 100644
index 000000000000..844154e13822
--- /dev/null
+++ b/tests/bcache/001.out
@@ -0,0 +1,3 @@
+Running bcache/001
+number of bcaches: 1
+number of bcaches: 2
diff --git a/tests/bcache/rc b/tests/bcache/rc
new file mode 100644
index 000000000000..2c6532879908
--- /dev/null
+++ b/tests/bcache/rc
@@ -0,0 +1,377 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-3.0+
+# Copyright (C) 2026 Daniel Wagner, SUSE Labs
+
+. common/rc
+
+declare BCACHE_DEVS_LIST
+
+BCACHE_MAX_RETRIES=5
+
+group_requires() {
+	_have_kernel_options MD BCACHE BCACHE_DEBUG AUTOFS_FS
+	_have_program make-bcache
+	_have_crypto_algorithm crc32c
+}
+
+_bcache_wipe_devs() {
+	local devs=("$@")
+	local dev
+
+	for dev in "${devs[@]}"; do
+		# Attempt a clean wipe first
+		if wipefs --all --quiet "${dev}" 2>/dev/null; then
+			continue
+		fi
+
+		# Overwrite the first 10MB to clear stubborn partition tables or metadata
+		if ! dd if=/dev/zero of="${dev}" bs=1M count=10 conv=notrunc status=none; then
+			echo "Error: dd failed on ${dev}" >&2
+		fi
+
+		# Wipe the Tail (Last 5MB)
+		# bcache often places backup superblocks at the end of the device.
+		local dev_size_mb
+		dev_size_mb=$(blockdev --getsize64 "$dev" | awk '{print int($1 / 1024 / 1024)}')
+
+		if [ "$dev_size_mb" -gt 10 ]; then
+			local seek_pos=$((dev_size_mb - 5))
+			dd if=/dev/zero of="${dev}" bs=1M count=5 seek=$seek_pos conv=fsync status=none
+		fi
+
+		# Refresh kernel partition table & wait for udev
+		blockdev --rereadpt "$dev" 2>/dev/null
+		udevadm settle
+
+		# Try wiping again after clearing the headers
+		if ! wipefs --all --quiet --force "${dev}"; then
+			echo "Warning: Failed to wipe ${dev} even after dd." >&2
+		fi
+	done
+}
+
+_bcache_register() {
+	local devs=("$@")
+	local dev timeout=0
+
+	while [[ ! -w /sys/fs/bcache/register ]] && (( timeout < 10 )); do
+		sleep 1
+		(( timeout ++ ))
+	done
+
+	if [[ ! -w /sys/fs/bcache/register ]]; then
+		echo "ERROR: bcache registration interface not found." >&2
+		return 1
+	fi
+
+	for dev in "${devs[@]}"; do
+		local tmp_err
+
+		tmp_err="/tmp/bcache_reg_$$.err"
+		if ! echo "${dev}" > /sys/fs/bcache/register 2> "${tmp_err}"; then
+			local err_msg
+
+			err_msg=$(< "${tmp_err}")
+			if [[ "${err_msg}" != *"Device or resource busy"* ]]; then
+				echo "ERROR: Failed to register ${dev}: ${err_msg:-"Unknown error"}" >&2
+			fi
+		fi
+		rm -f "${tmp_err}"
+	done
+}
+
+_create_bcache() {
+	local -a cdevs=()
+	local -a bdevs=()
+	local -a ARGS=()
+	local -a created_devs=()
+	local bucket_size="64k"
+	local block_size="4k"
+	local dev
+
+	while [[ $# -gt 0 ]]; do
+		case $1 in
+			--cache)
+				shift
+				# Collect arguments until the next flag or end of input
+				while [[ $# -gt 0 && ! $1 =~ ^-- ]]; do
+					cdevs+=("$1")
+					shift
+				done
+				;;
+			--bdev)
+				shift
+				# Collect arguments until the next flag or end of input
+				while [[ $# -gt 0 && ! $1 =~ ^-- ]]; do
+					bdevs+=("$1")
+					shift
+				done
+				;;
+			--bucket-size)
+				bucket_size="$2"
+				shift 2
+				;;
+			--block-size)
+				block_size="$2"
+				shift 2
+				;;
+			--writeback)
+				ARGS+=(--writeback)
+				shift 1
+				;;
+			--discard)
+				ARGS+=(--discard)
+				shift 1
+				;;
+			*)
+				echo "WARNING: unknown argument: $1"
+				shift
+				;;
+		esac
+	done
+
+	# add /dev prefix to device names
+	cdevs=( "${cdevs[@]/#/\/dev\/}" )
+	bdevs=( "${bdevs[@]/#/\/dev\/}" )
+
+	# make-bcache expects empty/cleared devices
+	_bcache_wipe_devs "${cdevs[@]}" "${bdevs[@]}"
+
+	local -a cmd
+	cmd=(make-bcache --wipe-bcache \
+			--bucket "${bucket_size}" \
+			--block "${block_size}")
+	for dev in "${cdevs[@]}"; do cmd+=("--cache" "${dev}"); done
+	for dev in "${bdevs[@]}"; do cmd+=("--bdev" "${dev}"); done
+	cmd+=("${ARGS[@]}")
+
+	local output rc
+	output=$("${cmd[@]}" 2>&1)
+	rc="$?"
+	if [[ "${rc}" -ne 0 ]]; then
+		echo "ERROR: make-bcache failed:" >&2
+		echo "$output" >&2
+		return 1
+	fi
+
+	local cset_uuid
+	cset_uuid=$(echo "$output" | awk '/Set UUID:/ {print $3}' | head -n 1)
+	if [[ -z "${cset_uuid}" ]]; then
+		echo "ERROR: Could not extract cset UUID from make-bcache output" >&2
+		return 1
+	fi
+
+	local -a bdev_uuids
+	mapfile -t bdev_uuids < <(echo "$output" | awk '
+	  $1 == "UUID:" { last_uuid = $2 }
+	  $1 == "version:" && $2 == "1" { print last_uuid}
+	')
+
+	_bcache_register "${cdevs[@]}" "${bdevs[@]}"
+	udevadm settle
+
+	for uuid in "${bdev_uuids[@]}"; do
+		local link found
+
+		link=/dev/bcache/by-uuid/"${uuid}"
+		found=false
+
+		for ((i=0; i<BCACHE_MAX_RETRIES; i++)); do
+			if [[ -L "${link}" ]]; then
+				created_devs+=("$(readlink -f "${link}")")
+				found=true
+				break
+			fi
+
+			# poke udev to create the links
+			udevadm trigger "block/$(basename "$(readlink -f "${link}" 2>/dev/null || echo "notfound")")" 2>/dev/null
+			sleep 1
+		done
+
+		if [[ "${found}" == "false" ]]; then
+			echo "WARNING: Could not find device node for UUID ${uuid} after ${BCACHE_MAX_RETRIES}s" >&2
+		fi
+	done
+
+	printf "%s\n" "${created_devs[@]}"
+}
+
+_remove_bcache() {
+	local -a cdevs=()
+	local -a bdevs=()
+	local -a csets=()
+	local -a bcache_devs=()
+	local uuid
+
+	while [[ $# -gt 0 ]]; do
+		case $1 in
+			--cache)
+				shift
+				# Collect arguments until the next flag or end of input
+				while [[ $# -gt 0 && ! $1 =~ ^-- ]]; do
+					cdevs+=("$1")
+					shift
+				done
+				;;
+			--bdev)
+				shift
+				# Collect arguments until the next flag or end of input
+				while [[ $# -gt 0 && ! $1 =~ ^-- ]]; do
+					bdevs+=("$1")
+					shift
+				done
+				;;
+			--bcache)
+				shift
+				# Collect arguments until the next flag or end of input
+				while [[ $# -gt 0 && ! $1 =~ ^-- ]]; do
+					bcache_devs+=("$1")
+					shift
+				done
+				;;
+			*)
+				echo "WARNING: unknown argument: $1"
+				shift
+				;;
+		esac
+	done
+
+	for dev in "${bcache_devs[@]}"; do
+		local bcache bcache_dir
+
+		if mountpoint --quiet "${dev}" 2>/dev/null; then
+			umount --lazy "${dev}"
+		fi
+
+		bcache="${dev##*/}"
+		bcache_dir=/sys/block/"${bcache}"/bcache
+		if [ -f "${bcache_dir}"/stop ]; then
+			echo 1 > "${bcache_dir}"/stop
+		fi
+	done
+
+	# The cache could be detached, thus go through all caches and
+	# look for the cdev in there.
+	local cset_path
+	for cset_path in /sys/fs/bcache/*-*-*-*-*; do
+		local cache_link match_found
+
+		match_found=false
+		for cache_link in "${cset_path}"/cache[0-9]*; do
+			local full_sys_path _cdev cdev
+
+			full_sys_path="$(readlink -f "$cache_link")"
+			_cdev="$(basename "${full_sys_path%/bcache}")"
+
+			for cdev in "${cdevs[@]}"; do
+				if [ "${_cdev}" == "$(basename "${cdev}")"  ]; then
+					match_found=true
+					break 2
+				fi
+			done
+		done
+
+		if [ "${match_found}" = false ]; then
+			continue
+		fi
+
+		cset="$(basename "${cset_path}")"
+		if [ -d /sys/fs/bcache/"${cset}" ]; then
+			echo 1 > /sys/fs/bcache/"${cset}"/unregister
+			csets+=("${cset}")
+		fi
+	done
+
+	udevadm settle
+
+	local timeout
+	for cset in "${csets[@]}"; do
+		timeout=0
+		while [[ -d /sys/fs/bcache/"${cset}" ]] && (( timeout < 10 )); do
+			sleep 0.5
+			(( timeout++ ))
+		done
+	done
+
+	_bcache_wipe_devs "${cdevs[@]}" "${bdevs[@]}"
+}
+
+_cleanup_bcache() {
+	local cset dev bcache bcache_devs cset_path
+	local -a csets=()
+	local bdev
+
+	read -r -a bcache_devs <<< "${BCACHE_DEVS_LIST:-}"
+
+	# Don't let successive Ctrl-Cs interrupt the cleanup processes
+	trap '' SIGINT
+
+	shopt -s nullglob
+	for bcache  in /sys/block/bcache* ; do
+		[ -e "${bcache}" ] || continue
+
+		if [[ -f "${bcache}/bcache/backing_dev_name" ]]; then
+			bdev=$(basename "$(cat "${bcache}/bcache/backing_dev_name")")
+
+			for dev in "${bcache_devs[@]}"; do
+				if [[ "${bdev}" == "$(basename "${dev}")" ]]; then
+					echo "WARNING: Stopping bcache device ${bdev}"
+					echo 1 > /sys/block/"${bdev}"/bcache/stop 2>/dev/null
+					break
+				fi
+			done
+		fi
+	done
+
+	for cset_path in /sys/fs/bcache/*-*-*-*-*; do
+		local cache_link match_found
+
+		match_found=false
+		for cache_link in "${cset_path}"/cache[0-9]*; do
+			local full_sys_path cdev
+
+			full_sys_path="$(readlink -f "$cache_link")"
+			cdev="$(basename "${full_sys_path%/bcache}")"
+
+			for dev in "${bcache_devs[@]}"; do
+				if [ "${cdev}" == "$(basename "${dev}")" ]; then
+					match_found=true
+					break 2
+				fi
+			done
+		done
+
+		if [ "${match_found}" = false ]; then
+			continue
+		fi
+
+		cset="$(basename "${cset_path}")"
+		if [ -d /sys/fs/bcache/"${cset}" ]; then
+			echo "WARNING: Unregistering cset $(basename "${cset}")"
+			echo 1 > /sys/fs/bcache/"${cset}"/unregister
+			csets+=("${cset}")
+		fi
+	done
+	shopt -u nullglob
+
+	udevadm settle
+
+	local timeout
+	for cset in "${csets[@]}"; do
+		timeout=0
+		while [[ -d /sys/fs/bcache/"${cset}" ]] && (( timeout < 10 )); do
+			sleep 0.5
+			(( timeout++ ))
+		done
+	done
+
+	_bcache_wipe_devs "${bcache_devs[@]}"
+
+	trap SIGINT
+}
+
+_setup_bcache() {
+	BCACHE_DEVS_LIST="$*"
+
+	_register_test_cleanup _cleanup_bcache
+}

-- 
2.53.0


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

* [PATCH blktests v5 2/3] bcache: add bcache/002
  2026-03-05 15:01 [PATCH blktests v5 0/3] bcache: add initial test cases Daniel Wagner
  2026-03-05 15:01 ` [PATCH blktests v5 1/3] bcache: add bcache/001 Daniel Wagner
@ 2026-03-05 15:01 ` Daniel Wagner
  2026-03-06  9:59   ` Johannes Thumshirn
  2026-03-06 12:27   ` Shinichiro Kawasaki
  2026-03-05 15:01 ` [PATCH blktests v5 3/3] doc: document how to configure bcache tests Daniel Wagner
  2026-03-07 10:27 ` [PATCH blktests v5 0/3] bcache: add initial test cases Shinichiro Kawasaki
  3 siblings, 2 replies; 16+ messages in thread
From: Daniel Wagner @ 2026-03-05 15:01 UTC (permalink / raw)
  To: Christoph Hellwig, Stephen Zhang, Kent Overstreet, Coly Li,
	Shin'ichiro Kawasaki, Johannes Thumshirn, linux-block,
	linux-bcache, Daniel Wagner

Add test case from Stephen Zhang [1][2], which is

1. Wait for fio to complete (wait $fio_pid)
2. Wait a few seconds for I/O to drain
3. Then check the utilization

If utilization is still > 0% after I/O completes, then there's a real
accounting leak.

[1] https://lore.kernel.org/linux-bcache/CANubcdX7eNbH_bo4-f94DUbdiEbt04Vxy1MPyhm+CZyXB01FuQ@mail.gmail.com/
[2] https://lore.kernel.org/all/CANubcdU92Uv7wNdZH357LLTnfwPouekXNTPSjHnzYzK99-eZ9w@mail.gmail.com

Signed-off-by: Daniel Wagner <dwagner@suse.de>
---
 tests/bcache/002     | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/bcache/002.out |  2 ++
 2 files changed, 80 insertions(+)

diff --git a/tests/bcache/002 b/tests/bcache/002
new file mode 100755
index 000000000000..a50722ff9e0e
--- /dev/null
+++ b/tests/bcache/002
@@ -0,0 +1,78 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-3.0+
+# Copyright (C) 2026 Daniel Wagner, SUSE Labs
+#
+# Test based on Stephen Zhang <starzhangzsd@gmail.com> test case
+# https://lore.kernel.org/linux-bcache/CANubcdX7eNbH_bo4-f94DUbdiEbt04Vxy1MPyhm+CZyXB01FuQ@mail.gmail.com/#t
+#
+# Test bcache for bio leaks in clone
+
+. tests/bcache/rc
+
+DESCRIPTION="test bcache for bio leaks in clone"
+
+requires() {
+	_have_fio
+}
+
+read_ticks() {
+	local bdev_name="$1"
+	local stat_file
+
+	stat_file="/sys/block/${bdev_name}/stat"
+	awk '{print $10}' "$stat_file"
+}
+
+get_utilization() {
+	local bdev_name="$1"
+	local t1 t2
+
+	t1="$(read_ticks ${bdev_name})"
+	sleep 1
+	t2="$(read_ticks ${bdev_name})"
+
+	# (t2 - t1) is the ms busy. Over 1000ms, (delta/10) gives percentage.
+	echo "scale=2; ($t2 - $t1) / 10" | bc
+}
+
+test_device_array() {
+	echo "Running ${TEST_NAME}"
+
+	if [[ ${#TEST_DEV_ARRAY[@]} -lt 2 ]]; then
+		SKIP_REASONS+=("requires at least 2 devices")
+		return 1
+	fi
+
+	_setup_bcache "${TEST_DEV_ARRAY[@]}"
+
+	local -a bcache_nodes
+	local bcache_dev bdev_name fio_pid state
+
+	mapfile -t bcache_nodes < <(_create_bcache \
+				--cache "${TEST_DEV_ARRAY[0]##*/}" \
+				--bdev "${TEST_DEV_ARRAY[1]##*/}" \
+				--writeback)
+
+	bcache_dev="${bcache_nodes[0]}"
+	bdev_name="$(basename "${bcache_dev}")"
+	echo 1 > /sys/block/"${bdev_name}"/bcache/detach
+
+	state="$(cat /sys/block/"${bdev_name}"/bcache/state)"
+	echo "Device state: ${state}"
+
+	_run_fio_rand_io --filename="${bcache_dev}" --time_base \
+			--runtime=10 >> "$FULL" 2>&1 
+	
+	sleep 5
+
+	local util
+	util="$(get_utilization "${bdev_name}")"
+
+	if (( $(echo "${util} > 1.0" | bc --mathlib) )); then
+		echo "ERROR: Accounting leak detected! Current utilization: ${util}%"
+	fi
+
+	_remove_bcache --bcache "${bcache_nodes[@]}" \
+			--cache "${TEST_DEV_ARRAY[0]##*/}" \
+			--bdev "${TEST_DEV_ARRAY[1]##*/}"
+}
diff --git a/tests/bcache/002.out b/tests/bcache/002.out
new file mode 100644
index 000000000000..529c1a90b135
--- /dev/null
+++ b/tests/bcache/002.out
@@ -0,0 +1,2 @@
+Running bcache/002
+Device state: no cache

-- 
2.53.0


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

* [PATCH blktests v5 3/3] doc: document how to configure bcache tests
  2026-03-05 15:01 [PATCH blktests v5 0/3] bcache: add initial test cases Daniel Wagner
  2026-03-05 15:01 ` [PATCH blktests v5 1/3] bcache: add bcache/001 Daniel Wagner
  2026-03-05 15:01 ` [PATCH blktests v5 2/3] bcache: add bcache/002 Daniel Wagner
@ 2026-03-05 15:01 ` Daniel Wagner
  2026-03-06 10:00   ` Johannes Thumshirn
  2026-03-07 10:27 ` [PATCH blktests v5 0/3] bcache: add initial test cases Shinichiro Kawasaki
  3 siblings, 1 reply; 16+ messages in thread
From: Daniel Wagner @ 2026-03-05 15:01 UTC (permalink / raw)
  To: Christoph Hellwig, Stephen Zhang, Kent Overstreet, Coly Li,
	Shin'ichiro Kawasaki, Johannes Thumshirn, linux-block,
	linux-bcache, Daniel Wagner

Add a bcache entry in running-tests which explains how to configure
blktests for the bcache tests.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
---
 Documentation/running-tests.md | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/Documentation/running-tests.md b/Documentation/running-tests.md
index f9da042bb3a0..7d935aad3331 100644
--- a/Documentation/running-tests.md
+++ b/Documentation/running-tests.md
@@ -189,6 +189,16 @@ THROTL_BLKDEV_TYPES="sdebug" ./check throtl/
 THROTL_BLKDEV_TYPES="nullb sdebug" ./check throtl/
 ```
 
+### Bcache test configuration
+
+The bcache tests require multiple devices to run simultaneously. By default,
+blktests run each test case for each device in TEST_DEVS. This behavior
+prevents testing with multiple devices. The TEST_CASE_DEV_ARRAY resolves this by
+enabling multiple device configurations per test. Bcache tests need at
+least three devices, which can be specified in your configuration as follows:
+
+TEST_CASE_DEV_ARRAY[bcache/*]="/dev/nvme0n1 /dev/vdb /dev/vdc"
+
 ### Normal user
 
 To run test cases which require normal user privilege, prepare a user and

-- 
2.53.0


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

* Re: [PATCH blktests v5 1/3] bcache: add bcache/001
  2026-03-05 15:01 ` [PATCH blktests v5 1/3] bcache: add bcache/001 Daniel Wagner
@ 2026-03-06  9:49   ` Johannes Thumshirn
  2026-03-06 12:15   ` Shinichiro Kawasaki
  1 sibling, 0 replies; 16+ messages in thread
From: Johannes Thumshirn @ 2026-03-06  9:49 UTC (permalink / raw)
  To: Daniel Wagner, hch@infradead.org, Stephen Zhang, Kent Overstreet,
	Coly Li, Shinichiro Kawasaki, linux-block@vger.kernel.org,
	linux-bcache@vger.kernel.org

Looks good,

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>


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

* Re: [PATCH blktests v5 2/3] bcache: add bcache/002
  2026-03-05 15:01 ` [PATCH blktests v5 2/3] bcache: add bcache/002 Daniel Wagner
@ 2026-03-06  9:59   ` Johannes Thumshirn
  2026-03-06 12:27   ` Shinichiro Kawasaki
  1 sibling, 0 replies; 16+ messages in thread
From: Johannes Thumshirn @ 2026-03-06  9:59 UTC (permalink / raw)
  To: Daniel Wagner, hch@infradead.org, Stephen Zhang, Kent Overstreet,
	Coly Li, Shinichiro Kawasaki, linux-block@vger.kernel.org,
	linux-bcache@vger.kernel.org

Looks good,

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>


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

* Re: [PATCH blktests v5 3/3] doc: document how to configure bcache tests
  2026-03-05 15:01 ` [PATCH blktests v5 3/3] doc: document how to configure bcache tests Daniel Wagner
@ 2026-03-06 10:00   ` Johannes Thumshirn
  0 siblings, 0 replies; 16+ messages in thread
From: Johannes Thumshirn @ 2026-03-06 10:00 UTC (permalink / raw)
  To: Daniel Wagner, hch@infradead.org, Stephen Zhang, Kent Overstreet,
	Coly Li, Shinichiro Kawasaki, linux-block@vger.kernel.org,
	linux-bcache@vger.kernel.org

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>

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

* Re: [PATCH blktests v5 1/3] bcache: add bcache/001
  2026-03-05 15:01 ` [PATCH blktests v5 1/3] bcache: add bcache/001 Daniel Wagner
  2026-03-06  9:49   ` Johannes Thumshirn
@ 2026-03-06 12:15   ` Shinichiro Kawasaki
  2026-03-06 12:45     ` Daniel Wagner
  1 sibling, 1 reply; 16+ messages in thread
From: Shinichiro Kawasaki @ 2026-03-06 12:15 UTC (permalink / raw)
  To: Daniel Wagner
  Cc: hch@infradead.org, Stephen Zhang, Kent Overstreet, Coly Li,
	Johannes Thumshirn, linux-block@vger.kernel.org,
	linux-bcache@vger.kernel.org

On Mar 05, 2026 / 16:01, Daniel Wagner wrote:
> So far we are missing tests for bcache. Besides a relative simple
> setup/teardown tests add also the corresponding infrastructure. More
> tests are to be expected to depend on this.
> 
> _create_bcache/_remove_bcache are tracking the resources and if anything
> is missing it will complain.
> 
> Signed-off-by: Daniel Wagner <dwagner@suse.de>
> ---
>  tests/bcache/001     |  44 ++++++
>  tests/bcache/001.out |   3 +
>  tests/bcache/rc      | 377 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 424 insertions(+)
> 
> diff --git a/tests/bcache/001 b/tests/bcache/001
> new file mode 100755
> index 000000000000..64d5d45d9e6e
> --- /dev/null
> +++ b/tests/bcache/001
[...]
> +_create_bcache() {
> +	local -a cdevs=()
> +	local -a bdevs=()
> +	local -a ARGS=()
> +	local -a created_devs=()
> +	local bucket_size="64k"
> +	local block_size="4k"

[...]

> +	# add /dev prefix to device names
> +	cdevs=( "${cdevs[@]/#/\/dev\/}" )
> +	bdevs=( "${bdevs[@]/#/\/dev\/}" )

Here, /dev/ prefix is added to arguments of _bcache_wipe_devs() call below.

> +
> +	# make-bcache expects empty/cleared devices
> +	_bcache_wipe_devs "${cdevs[@]}" "${bdevs[@]}"

[...]

> +_remove_bcache() {
> +	local -a cdevs=()
> +	local -a bdevs=()
> +	local -a csets=()
> +	local -a bcache_devs=()
> +	local uuid

[...]

> +	local timeout
> +	for cset in "${csets[@]}"; do
> +		timeout=0
> +		while [[ -d /sys/fs/bcache/"${cset}" ]] && (( timeout < 10 )); do
> +			sleep 0.5
> +			(( timeout++ ))
> +		done
> +	done

However, /dev prefix is not added here for the _bcache_wipe_devs() call below. I
added the hunk below, then observed the nvme?n1 files are no longer created in
my environment.

       # add /dev prefix to device names
       cdevs=( "${cdevs[@]/#/\/dev\/}" )
       bdevs=( "${bdevs[@]/#/\/dev\/}" )

Other than this, this patch looks good to me. If you are okay with it, I can
fold-in the change above when I apply this patch.

> +
> +	_bcache_wipe_devs "${cdevs[@]}" "${bdevs[@]}"
> +}

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

* Re: [PATCH blktests v5 2/3] bcache: add bcache/002
  2026-03-05 15:01 ` [PATCH blktests v5 2/3] bcache: add bcache/002 Daniel Wagner
  2026-03-06  9:59   ` Johannes Thumshirn
@ 2026-03-06 12:27   ` Shinichiro Kawasaki
  2026-03-06 13:14     ` Daniel Wagner
  1 sibling, 1 reply; 16+ messages in thread
From: Shinichiro Kawasaki @ 2026-03-06 12:27 UTC (permalink / raw)
  To: Daniel Wagner
  Cc: hch@infradead.org, Stephen Zhang, Kent Overstreet, Coly Li,
	Johannes Thumshirn, linux-block@vger.kernel.org,
	linux-bcache@vger.kernel.org

On Mar 05, 2026 / 16:01, Daniel Wagner wrote:
> Add test case from Stephen Zhang [1][2], which is
> 
> 1. Wait for fio to complete (wait $fio_pid)
> 2. Wait a few seconds for I/O to drain
> 3. Then check the utilization
> 
> If utilization is still > 0% after I/O completes, then there's a real
> accounting leak.
> 
> [1] https://lore.kernel.org/linux-bcache/CANubcdX7eNbH_bo4-f94DUbdiEbt04Vxy1MPyhm+CZyXB01FuQ@mail.gmail.com/
> [2] https://lore.kernel.org/all/CANubcdU92Uv7wNdZH357LLTnfwPouekXNTPSjHnzYzK99-eZ9w@mail.gmail.com

Thanks for the updates. It's good that we do not need iostat :)

I ran this test case with v7.0-rc2 kernel, and it passes. Good.

I also ran this test case with older kernel without the kernel fix [1]. I
expected failure, but it passed. I ran the Stephen's original test script and it
did not fail either. So I guess my test environment does not fulfill the
conditions to recreate the failure. Daniel, did you observe this test case
failed with any older kernel?

Let me leave nit comments in line. If this patch does not respin, I can fold in
the changes for the nit comments.

> 
> Signed-off-by: Daniel Wagner <dwagner@suse.de>
> ---
>  tests/bcache/002     | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  tests/bcache/002.out |  2 ++
>  2 files changed, 80 insertions(+)
> 
> diff --git a/tests/bcache/002 b/tests/bcache/002
> new file mode 100755
> index 000000000000..a50722ff9e0e
> --- /dev/null
> +++ b/tests/bcache/002
> @@ -0,0 +1,78 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: GPL-3.0+
> +# Copyright (C) 2026 Daniel Wagner, SUSE Labs
> +#
> +# Test based on Stephen Zhang <starzhangzsd@gmail.com> test case
> +# https://lore.kernel.org/linux-bcache/CANubcdX7eNbH_bo4-f94DUbdiEbt04Vxy1MPyhm+CZyXB01FuQ@mail.gmail.com/#t
> +#
> +# Test bcache for bio leaks in clone
> +
> +. tests/bcache/rc
> +
> +DESCRIPTION="test bcache for bio leaks in clone"
> +
> +requires() {
> +	_have_fio

I forgot to mention that we need,

       _have_program bc

here. Let me fold-in this change.

> +}
> +
> +read_ticks() {
> +	local bdev_name="$1"
> +	local stat_file
> +
> +	stat_file="/sys/block/${bdev_name}/stat"
> +	awk '{print $10}' "$stat_file"
> +}
> +
> +get_utilization() {
> +	local bdev_name="$1"
> +	local t1 t2
> +
> +	t1="$(read_ticks ${bdev_name})"

Nit: for shellcheck, the line above should be,

	t1="$(read_ticks "${bdev_name}")"

> +	sleep 1
> +	t2="$(read_ticks ${bdev_name})"

Same here:

	t2="$(read_ticks "${bdev_name}")"

> +
> +	# (t2 - t1) is the ms busy. Over 1000ms, (delta/10) gives percentage.
> +	echo "scale=2; ($t2 - $t1) / 10" | bc
> +}
> +
> +test_device_array() {
> +	echo "Running ${TEST_NAME}"
> +
> +	if [[ ${#TEST_DEV_ARRAY[@]} -lt 2 ]]; then
> +		SKIP_REASONS+=("requires at least 2 devices")
> +		return 1
> +	fi
> +
> +	_setup_bcache "${TEST_DEV_ARRAY[@]}"
> +
> +	local -a bcache_nodes
> +	local bcache_dev bdev_name fio_pid state

Nit: for shellcheck, unused 'fio_pid' should be dropped.

	local bcache_dev bdev_name state

> +
> +	mapfile -t bcache_nodes < <(_create_bcache \
> +				--cache "${TEST_DEV_ARRAY[0]##*/}" \
> +				--bdev "${TEST_DEV_ARRAY[1]##*/}" \
> +				--writeback)
> +
> +	bcache_dev="${bcache_nodes[0]}"
> +	bdev_name="$(basename "${bcache_dev}")"
> +	echo 1 > /sys/block/"${bdev_name}"/bcache/detach
> +
> +	state="$(cat /sys/block/"${bdev_name}"/bcache/state)"
> +	echo "Device state: ${state}"
> +
> +	_run_fio_rand_io --filename="${bcache_dev}" --time_base \
> +			--runtime=10 >> "$FULL" 2>&1 
> +	

Nit: a stray tab and a space in the above two lines.

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

* Re: [PATCH blktests v5 1/3] bcache: add bcache/001
  2026-03-06 12:15   ` Shinichiro Kawasaki
@ 2026-03-06 12:45     ` Daniel Wagner
  0 siblings, 0 replies; 16+ messages in thread
From: Daniel Wagner @ 2026-03-06 12:45 UTC (permalink / raw)
  To: Shinichiro Kawasaki
  Cc: hch@infradead.org, Stephen Zhang, Kent Overstreet, Coly Li,
	Johannes Thumshirn, linux-block@vger.kernel.org,
	linux-bcache@vger.kernel.org

> > +	# add /dev prefix to device names
> > +	cdevs=( "${cdevs[@]/#/\/dev\/}" )
> > +	bdevs=( "${bdevs[@]/#/\/dev\/}" )
> 
> Here, /dev/ prefix is added to arguments of _bcache_wipe_devs() call below.
> 
> > +
> > +	# make-bcache expects empty/cleared devices
> > +	_bcache_wipe_devs "${cdevs[@]}" "${bdevs[@]}"
> 
> [...]
> 
> > +_remove_bcache() {
> > +	local -a cdevs=()
> > +	local -a bdevs=()
> > +	local -a csets=()
> > +	local -a bcache_devs=()
> > +	local uuid
> 
> [...]
> 
> > +	local timeout
> > +	for cset in "${csets[@]}"; do
> > +		timeout=0
> > +		while [[ -d /sys/fs/bcache/"${cset}" ]] && (( timeout < 10 )); do
> > +			sleep 0.5
> > +			(( timeout++ ))
> > +		done
> > +	done
> 
> However, /dev prefix is not added here for the _bcache_wipe_devs() call below. I
> added the hunk below, then observed the nvme?n1 files are no longer created in
> my environment.
> 
>        # add /dev prefix to device names
>        cdevs=( "${cdevs[@]/#/\/dev\/}" )
>        bdevs=( "${bdevs[@]/#/\/dev\/}" )
> 
> Other than this, this patch looks good to me. If you are okay with it, I can
> fold-in the change above when I apply this patch.

No objection from me, please go ahead!

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

* Re: [PATCH blktests v5 2/3] bcache: add bcache/002
  2026-03-06 12:27   ` Shinichiro Kawasaki
@ 2026-03-06 13:14     ` Daniel Wagner
  2026-03-07 10:24       ` Shinichiro Kawasaki
  0 siblings, 1 reply; 16+ messages in thread
From: Daniel Wagner @ 2026-03-06 13:14 UTC (permalink / raw)
  To: Shinichiro Kawasaki
  Cc: hch@infradead.org, Stephen Zhang, Kent Overstreet, Coly Li,
	Johannes Thumshirn, linux-block@vger.kernel.org,
	linux-bcache@vger.kernel.org

On Fri, Mar 06, 2026 at 12:27:51PM +0000, Shinichiro Kawasaki wrote:
> On Mar 05, 2026 / 16:01, Daniel Wagner wrote:
> > Add test case from Stephen Zhang [1][2], which is
> > 
> > 1. Wait for fio to complete (wait $fio_pid)
> > 2. Wait a few seconds for I/O to drain
> > 3. Then check the utilization
> > 
> > If utilization is still > 0% after I/O completes, then there's a real
> > accounting leak.
> > 
> > [1] https://lore.kernel.org/linux-bcache/CANubcdX7eNbH_bo4-f94DUbdiEbt04Vxy1MPyhm+CZyXB01FuQ@mail.gmail.com/
> > [2] https://lore.kernel.org/all/CANubcdU92Uv7wNdZH357LLTnfwPouekXNTPSjHnzYzK99-eZ9w@mail.gmail.com
> 
> Thanks for the updates. It's good that we do not need iostat :)
> 
> I ran this test case with v7.0-rc2 kernel, and it passes. Good.
> 
> I also ran this test case with older kernel without the kernel fix [1]. I
> expected failure, but it passed. I ran the Stephen's original test script and it
> did not fail either. So I guess my test environment does not fulfill the
> conditions to recreate the failure. Daniel, did you observe this test case
> failed with any older kernel?

Same here, it doesn't fail on older kernels either. Maybe we should just
not merge this test then? Maybe Stephen can have a look and figure out
what needs to be done to trigger the condition more reliable.

> Let me leave nit comments in line. If this patch does not respin, I can fold in
> the changes for the nit comments.

Sure, just fix it up if you decide to apply it.

Thanks!
Daniel

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

* Re: [PATCH blktests v5 2/3] bcache: add bcache/002
  2026-03-06 13:14     ` Daniel Wagner
@ 2026-03-07 10:24       ` Shinichiro Kawasaki
  2026-03-10  9:29         ` Stephen Zhang
  0 siblings, 1 reply; 16+ messages in thread
From: Shinichiro Kawasaki @ 2026-03-07 10:24 UTC (permalink / raw)
  To: Daniel Wagner
  Cc: hch@infradead.org, Stephen Zhang, Kent Overstreet, Coly Li,
	Johannes Thumshirn, linux-block@vger.kernel.org,
	linux-bcache@vger.kernel.org

On Mar 06, 2026 / 14:14, Daniel Wagner wrote:
> On Fri, Mar 06, 2026 at 12:27:51PM +0000, Shinichiro Kawasaki wrote:
> > On Mar 05, 2026 / 16:01, Daniel Wagner wrote:
> > > Add test case from Stephen Zhang [1][2], which is
> > > 
> > > 1. Wait for fio to complete (wait $fio_pid)
> > > 2. Wait a few seconds for I/O to drain
> > > 3. Then check the utilization
> > > 
> > > If utilization is still > 0% after I/O completes, then there's a real
> > > accounting leak.
> > > 
> > > [1] https://lore.kernel.org/linux-bcache/CANubcdX7eNbH_bo4-f94DUbdiEbt04Vxy1MPyhm+CZyXB01FuQ@mail.gmail.com/
> > > [2] https://lore.kernel.org/all/CANubcdU92Uv7wNdZH357LLTnfwPouekXNTPSjHnzYzK99-eZ9w@mail.gmail.com
> > 
> > Thanks for the updates. It's good that we do not need iostat :)
> > 
> > I ran this test case with v7.0-rc2 kernel, and it passes. Good.
> > 
> > I also ran this test case with older kernel without the kernel fix [1]. I
> > expected failure, but it passed. I ran the Stephen's original test script and it
> > did not fail either. So I guess my test environment does not fulfill the
> > conditions to recreate the failure. Daniel, did you observe this test case
> > failed with any older kernel?
> 
> Same here, it doesn't fail on older kernels either. Maybe we should just
> not merge this test then? Maybe Stephen can have a look and figure out
> what needs to be done to trigger the condition more reliable.

I see. Before merging this patch, I would like to make sure that this test case
is valuable, and it does not just waste time and power of CI systems.

Stephen,

May I ask you to share what kind of devices you used to recreate the failure?
Also, could you share the kernel .config to recreate the failure? I would like
use them to recreate the failure on my test system.

> 
> > Let me leave nit comments in line. If this patch does not respin, I can fold in
> > the changes for the nit comments.
> 
> Sure, just fix it up if you decide to apply it.

Got it, thanks.

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

* Re: [PATCH blktests v5 0/3] bcache: add initial test cases
  2026-03-05 15:01 [PATCH blktests v5 0/3] bcache: add initial test cases Daniel Wagner
                   ` (2 preceding siblings ...)
  2026-03-05 15:01 ` [PATCH blktests v5 3/3] doc: document how to configure bcache tests Daniel Wagner
@ 2026-03-07 10:27 ` Shinichiro Kawasaki
  2026-03-09  9:40   ` Daniel Wagner
  3 siblings, 1 reply; 16+ messages in thread
From: Shinichiro Kawasaki @ 2026-03-07 10:27 UTC (permalink / raw)
  To: Daniel Wagner
  Cc: hch@infradead.org, Stephen Zhang, Kent Overstreet, Coly Li,
	Johannes Thumshirn, linux-block@vger.kernel.org,
	linux-bcache@vger.kernel.org

On Mar 05, 2026 / 16:01, Daniel Wagner wrote:
> I've addressed all comments from Shinichiro. 
> 
> bcache/002 is not using iostat anymore, instead it reads directly from sysfs.
> Also updated this tests according Stephen's feedback. I didn't test yet with an
> older version.
> 
> Unfortunatly, I was not able to reproduce the "nvme?n1" file in my setup with:
> 
>   TEST_CASE_DEV_ARRAY[bcache/*]="/dev/nvme0n1 /dev/vdb /dev/vdc"
>   TEST_CASE_DEV_ARRAY[bcache/*]="/dev/nvme0n1 /dev/vdb /dev/vdc /dev/nvme1n1"
> 
> Not sure where this is coming from.
> 
> Cheers,
> Daniel
>  
> Cc: Christoph Hellwig <hch@infradead.org>
> Cc: Stephen Zhang <starzhangzsd@gmail.com>
> Cc: Kent Overstreet <kent.overstreet@linux.dev>
> Cc: Coly Li <colyli@fnnas.com>
> Cc: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
> Cc: Johannes Thumshirn <Johannes.Thumshirn@wdc.com>
> Cc: linux-block@vger.kernel.org
> Cc: linux-bcache@vger.kernel.org
> Signed-off-by: Daniel Wagner <dwagner@suse.de>

Daniel, thank you for this effot. FYI, I applied the 1st (with my fix) and the
3rd patch. Let's do some more effort to confirm the value of the 2nd patch.

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

* Re: [PATCH blktests v5 0/3] bcache: add initial test cases
  2026-03-07 10:27 ` [PATCH blktests v5 0/3] bcache: add initial test cases Shinichiro Kawasaki
@ 2026-03-09  9:40   ` Daniel Wagner
  0 siblings, 0 replies; 16+ messages in thread
From: Daniel Wagner @ 2026-03-09  9:40 UTC (permalink / raw)
  To: Shinichiro Kawasaki
  Cc: hch@infradead.org, Stephen Zhang, Kent Overstreet, Coly Li,
	Johannes Thumshirn, linux-block@vger.kernel.org,
	linux-bcache@vger.kernel.org

On Sat, Mar 07, 2026 at 10:27:08AM +0000, Shinichiro Kawasaki wrote:
> Daniel, thank you for this effot. FYI, I applied the 1st (with my fix) and the
> 3rd patch. Let's do some more effort to confirm the value of the 2nd
> patch.

Thanks! FWIW, it should be hopefully fairly simple to add some more
tests based on:

  https://evilpiepirate.org/git/ktest.git/tree/tests/bcache

This should cover some more ground.

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

* Re: [PATCH blktests v5 2/3] bcache: add bcache/002
  2026-03-07 10:24       ` Shinichiro Kawasaki
@ 2026-03-10  9:29         ` Stephen Zhang
  2026-03-12  1:44           ` Shinichiro Kawasaki
  0 siblings, 1 reply; 16+ messages in thread
From: Stephen Zhang @ 2026-03-10  9:29 UTC (permalink / raw)
  To: Shinichiro Kawasaki
  Cc: Daniel Wagner, hch@infradead.org, Kent Overstreet, Coly Li,
	Johannes Thumshirn, linux-block@vger.kernel.org,
	linux-bcache@vger.kernel.org

Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com> 于2026年3月7日周六 18:24写道:
>
...
>
> May I ask you to share what kind of devices you used to recreate the failure?
> Also, could you share the kernel .config to recreate the failure? I would like
> use them to recreate the failure on my test system.
>

Hmm, I tried to reproduce the issue again but couldn't.

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

* Re: [PATCH blktests v5 2/3] bcache: add bcache/002
  2026-03-10  9:29         ` Stephen Zhang
@ 2026-03-12  1:44           ` Shinichiro Kawasaki
  0 siblings, 0 replies; 16+ messages in thread
From: Shinichiro Kawasaki @ 2026-03-12  1:44 UTC (permalink / raw)
  To: Stephen Zhang
  Cc: Daniel Wagner, hch@infradead.org, Kent Overstreet, Coly Li,
	Johannes Thumshirn, linux-block@vger.kernel.org,
	linux-bcache@vger.kernel.org

On Mar 10, 2026 / 17:29, Stephen Zhang wrote:
> Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com> 于2026年3月7日周六 18:24写道:
> >
> ...
> >
> > May I ask you to share what kind of devices you used to recreate the failure?
> > Also, could you share the kernel .config to recreate the failure? I would like
> > use them to recreate the failure on my test system.
> >
> 
> Hmm, I tried to reproduce the issue again but couldn't.

Stephen, thanks. Then I think the left key difference between bcache/001 and
this new bcache/002 is 10 seconds fio random read. IMO, it's the better to drop
this patch, and create another test case that intend to exercise bcache driver
using fio workloads. To add more value to the test case, I think verify workload
is the better, that will check write, read, as well as no data corruption.

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

end of thread, other threads:[~2026-03-12  1:44 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-05 15:01 [PATCH blktests v5 0/3] bcache: add initial test cases Daniel Wagner
2026-03-05 15:01 ` [PATCH blktests v5 1/3] bcache: add bcache/001 Daniel Wagner
2026-03-06  9:49   ` Johannes Thumshirn
2026-03-06 12:15   ` Shinichiro Kawasaki
2026-03-06 12:45     ` Daniel Wagner
2026-03-05 15:01 ` [PATCH blktests v5 2/3] bcache: add bcache/002 Daniel Wagner
2026-03-06  9:59   ` Johannes Thumshirn
2026-03-06 12:27   ` Shinichiro Kawasaki
2026-03-06 13:14     ` Daniel Wagner
2026-03-07 10:24       ` Shinichiro Kawasaki
2026-03-10  9:29         ` Stephen Zhang
2026-03-12  1:44           ` Shinichiro Kawasaki
2026-03-05 15:01 ` [PATCH blktests v5 3/3] doc: document how to configure bcache tests Daniel Wagner
2026-03-06 10:00   ` Johannes Thumshirn
2026-03-07 10:27 ` [PATCH blktests v5 0/3] bcache: add initial test cases Shinichiro Kawasaki
2026-03-09  9:40   ` Daniel Wagner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox