doc: clarify that I/O errors may go unnoticed without direct=1
authorKonstantin Kharlamov <Hi-Angel@yandex.ru>
Tue, 16 Aug 2022 16:10:38 +0000 (19:10 +0300)
committerKonstantin Kharlamov <Hi-Angel@yandex.ru>
Tue, 16 Aug 2022 22:50:44 +0000 (01:50 +0300)
Fixes: https://github.com/axboe/fio/issues/1443

Reported-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
HOWTO.rst
fio.1

index c94238ed5b84733945cd441a70526d5b9b1c778c..08be687c903db776baa7e75adcab6dc841febca2 100644 (file)
--- a/HOWTO.rst
+++ b/HOWTO.rst
@@ -3927,6 +3927,13 @@ Error handling
        appended, the total error count and the first error. The error field given
        in the stats is the first error that was hit during the run.
 
+       Note: a write error from the device may go unnoticed by fio when using
+       buffered IO, as the write() (or similar) system call merely dirties the
+       kernel pages, unless :option:`sync` or :option:`direct` is used. Device IO
+       errors occur when the dirty data is actually written out to disk. If fully
+       sync writes aren't desirable, :option:`fsync` or :option:`fdatasync` can be
+       used as well. This is specific to writes, as reads are always synchronous.
+
        The allowed values are:
 
                **none**
diff --git a/fio.1 b/fio.1
index d40b42479adfe811ba3deee7ae601eb22c56d11f..27454b0b89db830afc65124808325a88c61846f7 100644 (file)
--- a/fio.1
+++ b/fio.1
@@ -3606,6 +3606,16 @@ EILSEQ) until the runtime is exceeded or the I/O size specified is
 completed. If this option is used, there are two more stats that are
 appended, the total error count and the first error. The error field given
 in the stats is the first error that was hit during the run.
+.RS
+.P
+Note: a write error from the device may go unnoticed by fio when using buffered
+IO, as the write() (or similar) system call merely dirties the kernel pages,
+unless `sync' or `direct' is used. Device IO errors occur when the dirty data is
+actually written out to disk. If fully sync writes aren't desirable, `fsync' or
+`fdatasync' can be used as well. This is specific to writes, as reads are always
+synchronous.
+.RS
+.P
 The allowed values are:
 .RS
 .RS