xfs: don't reset b_retries to 0 on every failure
authorEric Sandeen <sandeen@sandeen.net>
Wed, 20 Jul 2016 00:54:09 +0000 (10:54 +1000)
committerDave Chinner <david@fromorbit.com>
Wed, 20 Jul 2016 00:54:09 +0000 (10:54 +1000)
commit5539d36752eb789f4067a9f88e72177895d56317
tree0df524b1fbd6708ed3c6f0cd710de40a8084b466
parent0b4db5dff3599b46957bfd8a4c66945c915e26d3
xfs: don't reset b_retries to 0 on every failure

With the code as it stands today, b_retries never increments because
it gets reset to 0 in the error callback.

Remove that, and fix a similar problem where the first retry time
was constantly being overwritten, which defeated the timeout tunable
as well.  We now only set first retry time if a non-zero timeout is
set, to match the behavior of only incrementing retries if a retry
value is set.

This way max retries & timeouts consistently take effect after a
tunable is set, rather than acting retroactively on a buffer which
has failed at some point in the past and has accumulated state from
those prior failures.

Thanks to dchinner for talking through this with me.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/xfs/xfs_buf_item.c