tools/testing/selftests/ublk/test_generic_02.sh
Source file repositories/reference/linux-study-clean/tools/testing/selftests/ublk/test_generic_02.sh
File Facts
- System
- Linux kernel
- Corpus path
tools/testing/selftests/ublk/test_generic_02.sh- Extension
.sh- Size
- 1236 bytes
- Lines
- 56
- Domain
- Support Tooling And Documentation
- Bucket
- tools
- Inferred role
- Support Tooling And Documentation: tools
- Status
- atlas-only
Why This File Exists
Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
Dependency Surface
- No C-style include directives detected by the generator.
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
Annotated Snippet
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh
ERR_CODE=0
if ! _have_program bpftrace; then
exit "$UBLK_SKIP_CODE"
fi
if ! _have_program fio; then
exit "$UBLK_SKIP_CODE"
fi
_prep_test "null" "ublk dispatch won't reorder IO for MQ"
dev_id=$(_add_ublk_dev -t null -q 2)
_check_add_dev $TID $?
dev_t=$(_get_disk_dev_t "$dev_id")
bpftrace trace/seq_io.bt "$dev_t" "W" 1 > "$UBLK_TMP" 2>&1 &
btrace_pid=$!
# Wait for bpftrace probes to be attached (BEGIN block prints BPFTRACE_READY)
for _ in $(seq 100); do
grep -q "BPFTRACE_READY" "$UBLK_TMP" 2>/dev/null && break
sleep 0.1
done
if ! kill -0 "$btrace_pid" 2>/dev/null; then
_cleanup_test
exit "$UBLK_SKIP_CODE"
fi
# run fio over this ublk disk (pinned to CPU 0)
taskset -c 0 fio --name=write_seq \
--filename=/dev/ublkb"${dev_id}" \
--ioengine=libaio --iodepth=16 \
--rw=write \
--size=512M \
--direct=1 \
--bs=4k > /dev/null 2>&1
ERR_CODE=$?
kill "$btrace_pid"
wait
# Check for out-of-order completions detected by bpftrace
if grep -q "^out_of_order:" "$UBLK_TMP"; then
echo "I/O reordering detected:"
grep "^out_of_order:" "$UBLK_TMP"
ERR_CODE=255
fi
_cleanup_test
_show_result $TID $ERR_CODE
Annotation
- Atlas domain: Support Tooling And Documentation / tools.
- Implementation status: atlas-only.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.