Re: [RFC] synchronous readpage for buffer_heads
From: Hannes Reinecke <hare@suse.de>
Date: 2020-10-23 06:22:17
Also in:
linux-fsdevel, lkml
On 10/22/20 5:22 PM, Matthew Wilcox wrote:
I'm working on making readpage synchronous so that it can actually return errors instead of futilely setting PageError. Something that's common between most of the block based filesystems is the need to submit N I/Os and wait for them to all complete (some filesystems don't support sub-page block size, so they don't have this problem). I ended up coming up with a fairly nice data structure which I've called the blk_completion. It waits for 'n' events to happen, then wakes the task that cares, unless the task has got bored and wandered off to do something else. block_read_full_page() then uses this data structure to submit 'n' buffer heads and wait for them to all complete. The fscrypt code doesn't work in this scheme, so I bailed on that for now. I have ideas for fixing it, but they can wait. Obviously this all needs documentation, but I'd like feedback on the idea before I do that. I have given it some light testing, but there aren't too many filesystems left that use block_read_full_page() so I haven't done a proper xfstests run.
Hmm. You are aware, of course, that hch et al are working on replacing bhs with iomap, right? So wouldn't it be more useful to concentrate on the iomap code, and ensure that _that_ is working correctly? Cheers, Hannes -- Dr. Hannes Reinecke Kernel Storage Architect hare@suse.de +49 911 74053 688 SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer