blob: 3196afa2b1d489e9455942f7f8cbf38bb94aaa82 [file] [log] [blame]
From 331023be2b20d177d533e5fa18f5d8834570613f Mon Sep 17 00:00:00 2001
From: Konstantin Kharlamov <Hi-Angel@yandex.ru>
Date: Tue, 16 Aug 2022 19:10:38 +0300
Subject: [PATCH] doc: clarify that I/O errors may go unnoticed without
direct=1
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 | 7 +++++++
fio.1 | 10 ++++++++++
2 files changed, 17 insertions(+)
diff --git a/HOWTO.rst b/HOWTO.rst
index c94238ed..08be687c 100644
--- 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 d40b4247..27454b0b 100644
--- 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