on zfs, read errors are considered write errors?
John-Mark Gurney
jmg at funkthat.com
Wed Feb 20 00:42:52 UTC 2013
So, I've been trying to track down how ZFS handles errors and stuff
to make sure it's sane before I try to fix geli, but I've been getting
some wierd results... Apparently, zfs thinks that read errors are
WRITE errors, or even CKSUM errors (this is understandable, as invalid
data would cause a cksum error)... I don't know where in the zfs code
that error accounting is happening, but here is my test:
touch /root/disk{1,2}
mdconfig -a -t vnode -f /root/disk1 -s 96m
mdconfig -a -t vnode -f /root/disk2 -s 96m
gnop create md0
gnop create md1
zpool create ztest mirror md0.nop md1.nop
cd /ztest
for i in `jot 1000 1`; do echo $i > $i; done
cd /
zpool export ztest
gnop configure -r 0 md0.nop
zpool import ztest
zpool status
gnop configure -r 30 md0.nop
cat /ztest/*
zpool status
zpool scrub
zpool status
And I get results like:
[root at carbon /]# zpool status
pool: ztest
state: ONLINE
status: One or more devices has experienced an unrecoverable error. An
attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or replace the device with 'zpool replace'.
see: http://illumos.org/msg/ZFS-8000-9P
scan: scrub repaired 239K in 0h0m with 0 errors on Tue Feb 19 16:36:37 2013
config:
NAME STATE READ WRITE CKSUM
ztest ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
md0.nop ONLINE 5 277 422
md1.nop ONLINE 0 0 0
errors: No known data errors
I'm patches that changes gnop to log the errors on debug of 1 instead
of 2 (which also logs all requests), and the logs verify that only errors
to READ requests are returned...
Any clues why read errors would cause write errors?
--
John-Mark Gurney Voice: +1 415 225 5579
"All that I will do, has been done, All that I have, has not."
More information about the freebsd-fs
mailing list