File: atomic-verify.fio

package info (click to toggle)
fio 3.41-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 13,012 kB
  • sloc: ansic: 82,290; python: 9,862; sh: 6,067; makefile: 813; yacc: 204; lex: 184
file content (36 lines) | stat: -rw-r--r-- 1,295 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Data verification with atomic writes
#
# Some background on atomic writes:
#
# The main selling point of atomic writes is that it is guaranteed writes
# to storage will not be torn for a power failure or kernel crash.

# Another aspect of atomic writes is that they handle racing writes and
# reads, such that a read racing with a write will see all the data from
# the write or none. Well, SCSI and NVMe guarantee this if using
# RWF_ATOMIC, but it is not formally stated as a feature of RWF_ATOMIC.
#
# Fio verify mode can be used to prove that atomic writes can make "safe"
# racing reads and writes. This done by having many jobs in a xsum verify
# mode. In this way, xsums should be correct, although a job may be
# reading a data block written by another job; however
# verify_write_sequence must be disabled, as it cannot be helped that data
# blocks will be out of sequence between with many jobs.
#
# Atomic write limits:
# For a block device, the max block size for atomic=1 is in
# /sys/block/sdXXX/queue/atomic_write_unit_max_bytes
# or this value can also be read with a statx syscall on the bdev file.

[write-and-verify]
rw=randwrite
bs=4k
direct=1
ioengine=libaio
iodepth=16
verify=crc64
atomic=1
verify_write_sequence=0
numjobs=10
# Use /dev/XXX or filename
filename=/dev/XXX