xfs: normalize "infinite" retries in error configs
As it stands today, the "fail immediately" vs. "retry forever" values for max_retries and retry_timeout_seconds in the xfs metadata error configurations are not consistent. A retry_timeout_seconds of 0 means "retry forever," but a max_retries of 0 means "fail immediately." retry_timeout_seconds < 0 is disallowed, while max_retries == -1 means "retry forever." Make this consistent across the error configs, such that a value of 0 means "fail immediately" (i.e. wait 0 seconds, or retry 0 times), and a value of -1 always means "retry forever." This makes retry_timeout a signed long to accommodate the -1, even though it stores jiffies. Given our limit of a 1 day maximum timeout, this should be sufficient even at much higher HZ values than we have available today. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
Šī revīzija ir iekļauta:

revīziju iesūtīja
Dave Chinner

vecāks
79c350e45e
revīzija
7716981273
@@ -1095,7 +1095,8 @@ xfs_buf_iodone_callback_error(
|
||||
bp->b_last_error != bp->b_error) {
|
||||
bp->b_flags |= (XBF_WRITE | XBF_DONE | XBF_WRITE_FAIL);
|
||||
bp->b_last_error = bp->b_error;
|
||||
if (cfg->retry_timeout && !bp->b_first_retry_time)
|
||||
if (cfg->retry_timeout != XFS_ERR_RETRY_FOREVER &&
|
||||
!bp->b_first_retry_time)
|
||||
bp->b_first_retry_time = jiffies;
|
||||
|
||||
xfs_buf_ioerror(bp, 0);
|
||||
@@ -1111,7 +1112,7 @@ xfs_buf_iodone_callback_error(
|
||||
if (cfg->max_retries != XFS_ERR_RETRY_FOREVER &&
|
||||
++bp->b_retries > cfg->max_retries)
|
||||
goto permanent_error;
|
||||
if (cfg->retry_timeout &&
|
||||
if (cfg->retry_timeout != XFS_ERR_RETRY_FOREVER &&
|
||||
time_after(jiffies, cfg->retry_timeout + bp->b_first_retry_time))
|
||||
goto permanent_error;
|
||||
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user