Re: [PATCH v6 00/19] Change readahead API

Matthew Wilcox
2020-02-18T13:42:34Z

On Tue, Feb 18, 2020 at 03:56:33PM +1100, Dave Chinner wrote:
> Latest version in your git tree:
>
> $ ▶ glo -n 5 willy/readahead
> 4be497096c04 mm: Use memalloc_nofs_save in readahead path
> ff63497fcb98 iomap: Convert from readpages to readahead
> 26aee60e89b5 iomap: Restructure iomap_readpages_actor
> 8115bcca7312 fuse: Convert from readpages to readahead
> 3db3d10d9ea1 f2fs: Convert from readpages to readahead
> $
>
> merged into a 5.6-rc2 tree fails at boot on my test vm:
>
> [ 2.423116] ------------[ cut here ]------------
> [ 2.424957] list_add double add: new=ffffea000efff4c8, prev=ffff8883bfffee60, next=ffffea000efff4c8.
> [ 2.428259] WARNING: CPU: 4 PID: 1 at lib/list_debug.c:29 __list_add_valid+0x67/0x70
> [ 2.457484] Call Trace:
> [ 2.458171] __pagevec_lru_add_fn+0x15f/0x2c0
> [ 2.459376] pagevec_lru_move_fn+0x87/0xd0
> [ 2.460500] ? pagevec_move_tail_fn+0x2d0/0x2d0
> [ 2.461712] lru_add_drain_cpu+0x8d/0x160
> [ 2.462787] lru_add_drain+0x18/0x20

Are you sure that was 4be497096c04 ? I ask because there was a
version pushed to that git tree that did contain a list double-add
(due to a mismerge when shuffling patches). I noticed it and fixed
it, and 4be497096c04 doesn't have that problem. I also test with
CONFIG_DEBUG_LIST turned on, but this problem you hit is going to be
probabilistic because it'll depend on the timing between whatever other
list is being used and the page actually being added to the LRU.