Skip to content

buffer_head: fail fast on repeated reads after I/O errors#804

Open
blktests-ci[bot] wants to merge 1 commit into
linus-master_basefrom
series/1090493=>linus-master
Open

buffer_head: fail fast on repeated reads after I/O errors#804
blktests-ci[bot] wants to merge 1 commit into
linus-master_basefrom
series/1090493=>linus-master

Conversation

@blktests-ci
Copy link
Copy Markdown

@blktests-ci blktests-ci Bot commented May 6, 2026

Pull request for series with
subject: buffer_head: fail fast on repeated reads after I/O errors
version: 1
url: https://patchwork.kernel.org/project/linux-block/list/?series=1090493

@blktests-ci
Copy link
Copy Markdown
Author

blktests-ci Bot commented May 6, 2026

Upstream branch: 6d35786
series: https://patchwork.kernel.org/project/linux-block/list/?series=1090493
version: 1

@blktests-ci
Copy link
Copy Markdown
Author

blktests-ci Bot commented May 10, 2026

Upstream branch: aa54b1d
series: https://patchwork.kernel.org/project/linux-block/list/?series=1090493
version: 1

@blktests-ci blktests-ci Bot force-pushed the series/1090493=>linus-master branch from 0ea9500 to 7b5211f Compare May 10, 2026 16:10
@blktests-ci blktests-ci Bot force-pushed the linus-master_base branch from b1870f6 to ca57796 Compare May 15, 2026 07:55
@blktests-ci
Copy link
Copy Markdown
Author

blktests-ci Bot commented May 15, 2026

Upstream branch: 70eda68
series: https://patchwork.kernel.org/project/linux-block/list/?series=1090493
version: 1

@blktests-ci blktests-ci Bot force-pushed the series/1090493=>linus-master branch from 7b5211f to 2a21698 Compare May 15, 2026 08:26
@blktests-ci blktests-ci Bot force-pushed the linus-master_base branch from ca57796 to c1feb59 Compare May 21, 2026 02:54
@blktests-ci
Copy link
Copy Markdown
Author

blktests-ci Bot commented May 21, 2026

Upstream branch: 8bc67e4
series: https://patchwork.kernel.org/project/linux-block/list/?series=1090493
version: 1

@blktests-ci blktests-ci Bot force-pushed the series/1090493=>linus-master branch from 2a21698 to 5cd5116 Compare May 21, 2026 03:28
@blktests-ci blktests-ci Bot force-pushed the linus-master_base branch from c1feb59 to ea833a1 Compare May 22, 2026 01:53
@blktests-ci
Copy link
Copy Markdown
Author

blktests-ci Bot commented May 22, 2026

Upstream branch: 6779b50
series: https://patchwork.kernel.org/project/linux-block/list/?series=1090493
version: 1

@blktests-ci blktests-ci Bot force-pushed the series/1090493=>linus-master branch from 5cd5116 to 77b1273 Compare May 22, 2026 02:25
@blktests-ci blktests-ci Bot force-pushed the linus-master_base branch from ea833a1 to 7af85d1 Compare May 23, 2026 06:11
@blktests-ci
Copy link
Copy Markdown
Author

blktests-ci Bot commented May 23, 2026

Upstream branch: 79bd2dd
series: https://patchwork.kernel.org/project/linux-block/list/?series=1090493
version: 1

@blktests-ci blktests-ci Bot force-pushed the series/1090493=>linus-master branch from 77b1273 to f29666e Compare May 23, 2026 07:21
@blktests-ci blktests-ci Bot force-pushed the linus-master_base branch from 7af85d1 to de94ac7 Compare May 23, 2026 17:08
@blktests-ci
Copy link
Copy Markdown
Author

blktests-ci Bot commented May 23, 2026

Upstream branch: eed108e
series: https://patchwork.kernel.org/project/linux-block/list/?series=1090493
version: 1

A failed buffer_head read leaves the buffer !Uptodate. If multiple
threads hit that same buffer_head, they serialize on BH_Lock and each
one re-submits the same read after the previous owner drops the lock.
If the device is slow to return the error, this can turn one bad block
into long stalls and repeated slow I/O.

Trying to remember bad LBAs in block or drivers would need a generic
per-device table with lookup, eviction, and lifetime rules. For buffer_head
users, keep the failure state with the cached buffer_head instead.

Track non-readahead read I/O errors in buffer_head with a dedicated bit
and a failure timestamp. Update this state from the bio completion path.
Add an optional per-bdev retry window: within the window, non-readahead
submit_bh() reads complete immediately with failure for a buffer_head
that recently saw a non-readahead read error. A successful read or
rewrite clears the state.

The timestamp is recorded on the first error only, so repeated failures do
not extend the window. Once the window expires, the next read is submitted
normally and can discover that the device or media has recovered.

Configure per block device via sysfs:

  /sys/block/<disk>/read_err_retry_sec
  /sys/block/<disk>/<part>/read_err_retry_sec

Default is 0, preserving existing behavior. Disk and partition values are
independent, and values larger than MAX_JIFFY_OFFSET / HZ are rejected to
avoid jiffies overflow.

Link: https://lore.kernel.org/linux-ext4/20260325093349.630193-1-diangangli@gmail.com/
Signed-off-by: Diangang Li <lidiangang@bytedance.com>
@blktests-ci blktests-ci Bot force-pushed the series/1090493=>linus-master branch from f29666e to 8338515 Compare May 23, 2026 17:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants