Skip to content

Read scan fails with verify: bad magic header 0, wanted acca at.... when encountering unwritten device locations #1969

@blshep

Description

@blshep

I am looking for a way to efficiently verify written locations after some writes are not verified due to using runtime=. I have been able to minimize the number of unchecked writes by using verify_backlog=xx, but this changes the behavior of a random write or sequential write workload at the device level. Ideally, it would be good for runtime= to stop issuing IO when that time expires, but allow do_verify=1 to completely check written data before ending. Anyway to accomplish that?

The drives are zeroed before starting any IO workloads. When doing writes, I am using verify=md5, verify_interval=4096 or 512 (depending on the device's block size) which puts the fio header in every drive sector. I would like to periodically read scan sections of the drive to verify previously fio written data are in the correct locations and CRCs are correct. However, when a non-written sector is encountered and all zeroes are read, fio stops checking due to a missing acca header. This error happens when using verify_fatal=0 also. I tried using/not using verify_only with the same result. Is there a way to ignore non-fio written locations short of "initializing" the drive with fio writes before starting test?

The error seen is....

job1: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
fio-3.19
Starting 1 process
verify: bad magic header 0, wanted acca at file /dev/sdaf offset 52428800, length 4096 (requested block: offset=52428800, length=4096)
       hdr_fail data dumped as sdaf.52428800.hdr_fail
fio: pid=58492, err=84/file:io_u.c:2086, func=io_u_queued_complete, error=Invalid or incomplete multibyte or wide character

job1: (groupid=0, jobs=1): err=84 (file:io_u.c:2086, func=io_u_queued_complete, error=Invalid or incomplete multibyte or wide character): pid=58492: Thu Aug 14 12:09:15 2025
  read: IOPS=12.2k, BW=47.9MiB/s (50.2MB/s)(50.0MiB/1045msec)
    slat (nsec): min=10494, max=69738, avg=11066.25, stdev=911.68
    clat (usec): min=42, max=409, avg=47.18, stdev= 3.39
     lat (usec): min=54, max=421, avg=59.27, stdev= 3.57
    clat percentiles (usec):
     |  1.00th=[   46],  5.00th=[   47], 10.00th=[   47], 20.00th=[   47],
     | 30.00th=[   47], 40.00th=[   47], 50.00th=[   48], 60.00th=[   48],
     | 70.00th=[   48], 80.00th=[   48], 90.00th=[   48], 95.00th=[   48],
     | 99.00th=[   49], 99.50th=[   49], 99.90th=[   65], 99.95th=[   68],
     | 99.99th=[  135]
   bw (  KiB/s): min=49070, max=49070, per=100.00%, avg=49070.00, stdev= 0.00, samples=1
   iops        : min=12267, max=12267, avg=12267.00, stdev= 0.00, samples=1
  lat (usec)   : 50=99.77%, 100=0.21%, 250=0.01%, 500=0.01%
  cpu          : usr=22.80%, sys=28.35%, ctx=12804, majf=0, minf=13
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=12801,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
   READ: bw=47.9MiB/s (50.2MB/s), 47.9MiB/s-47.9MiB/s (50.2MB/s-50.2MB/s), io=50.0MiB (52.4MB), run=1045-1045msec

Disk stats (read/write):
  sdaf: ios=11465/0, merge=0/0, ticks=563/0, in_queue=564, util=61.84%

The last "readscan" invocation of the jobfile was….

[global]
name=timed_write_verify_log
#filename=testfile
#offset=1G
size=60M
iodepth=1
verify_fatal=0
write_iolog=io_sequence3.log
log_avg_msec=1
#status-interval=1
bs=4K
direct=1
rw=read
ioengine=libaio
#runtime=3
#time_based=1
verify=md5
do_verify=1
verify_interval=4096
verify_dump=1
#verify_only
#verify_backlog=50
#norandommap
#random_generator=tausworthe64
nice=19
prio=0
prioclass=1
#size=100%
[job1]
filename=/dev/sdaf
new_group
#[job2]
#filename=/dev/sdk
#new_group

Metadata

Metadata

Assignees

No one assigned

    Labels

    needreporterinfoWaiting on information from the issue reporter

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions