Android: Fix the build of the 'sg' engine
[fio.git] / HOWTO.rst
index b2750b566cf796115ad5022f90f06f3e02bd79c6..e89d05f04791d22d9369aa9466b48d5e86dfc1ab 100644 (file)
--- a/HOWTO.rst
+++ b/HOWTO.rst
@@ -167,9 +167,9 @@ Command line options
        defined by `ioengine`.  If no `ioengine` is given, list all
        available ioengines.
 
-.. option:: --showcmd=jobfile
+.. option:: --showcmd
 
-       Convert `jobfile` to a set of command-line options.
+       Convert given job files to a set of command-line options.
 
 .. option:: --readonly
 
@@ -1129,7 +1129,14 @@ I/O type
                                Random mixed reads and writes.
                **trimwrite**
                                Sequential trim+write sequences. Blocks will be trimmed first,
-                               then the same blocks will be written to.
+                               then the same blocks will be written to. So if ``io_size=64K``
+                               is specified, Fio will trim a total of 64K bytes and also
+                               write 64K bytes on the same trimmed blocks. This behaviour
+                               will be consistent with ``number_ios`` or other Fio options
+                               limiting the total bytes or number of I/O's.
+               **randtrimwrite**
+                               Like trimwrite, but uses random offsets rather
+                               than sequential writes.
 
        Fio defaults to read if the option is not specified.  For the mixed I/O
        types, the default is to split them 50/50.  For certain types of I/O the
@@ -1301,7 +1308,7 @@ I/O type
        effectively caps the file size at `real_size - offset`. Can be combined with
        :option:`size` to constrain the start and end range of the I/O workload.
        A percentage can be specified by a number between 1 and 100 followed by '%',
-       for example, ``offset=20%`` to specify 20%. In ZBD mode, value can be set as 
+       for example, ``offset=20%`` to specify 20%. In ZBD mode, value can be set as
         number of zones using 'z'.
 
 .. option:: offset_align=int
@@ -1877,7 +1884,7 @@ I/O size
        If this option is not specified, fio will use the full size of the given
        files or devices.  If the files do not exist, size must be given. It is also
        possible to give size as a percentage between 1 and 100. If ``size=20%`` is
-       given, fio will use 20% of the full size of the given files or devices. 
+       given, fio will use 20% of the full size of the given files or devices.
        In ZBD mode, value can also be set as number of zones using 'z'.
        Can be combined with :option:`offset` to constrain the start and end range
        that I/O will be done within.
@@ -2550,7 +2557,7 @@ with the caveat that when used on the command line, they must come after the
 
    [dfs]
 
-       Specificy a different chunk size (in bytes) for the dfs file.
+       Specify a different chunk size (in bytes) for the dfs file.
        Use DAOS container's chunk size by default.
 
    [libhdfs]
@@ -2559,7 +2566,7 @@ with the caveat that when used on the command line, they must come after the
 
 .. option:: object_class=str : [dfs]
 
-       Specificy a different object class for the dfs file.
+       Specify a different object class for the dfs file.
        Use DAOS container's object class by default.
 
 .. option:: skip_bad=bool : [mtd]
@@ -3927,6 +3934,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**