Re: [LSF/MM/BPF TOPIC] Measuring limits and enhancing buffered IO

Matthew Wilcox
2024-11-15T20:42:59Z

On Fri, Nov 15, 2024 at 11:43:10AM -0800, Linus Torvalds wrote:
> And I did find that the "do small reads entirely under RCU" didn't
> test for one condition that filemap_get_read_batch() checked for: the
> xa_is_sibling() check.

I don't think you need it:

xas_load:
entry = xas_descend(xas, node);

xas_descend:
while (xa_is_sibling(entry)) {
entry = xa_entry(xas->xa, node, offset);

so I don't think xa_is_sibling() can ever be true here.

xas_next() can return a sibling entry, so it does need the extra check.