Am Mo., 5. Juni 2023 um 23:05 Uhr schrieb Ritesh Harjani <ritesh.list@xxxxxxxxx>: > Andreas Gruenbacher <agruenba@xxxxxxxxxx> writes: > > On Mon, Jun 5, 2023 at 12:55 PM Ritesh Harjani (IBM) <ritesh.list@xxxxxxxxx> wrote: > >> We would eventually use iomap_iop_** function naming by the rest of the > >> buffered-io iomap code. This patch update function arguments and naming > >> from iomap_set_range_uptodate() -> iomap_iop_set_range_uptodate(). > >> iop_set_range_uptodate() then becomes an accessor function used by > >> iomap_iop_** functions. > >> > >> Signed-off-by: Ritesh Harjani (IBM) <ritesh.list@xxxxxxxxx> > >> --- > >> fs/iomap/buffered-io.c | 111 +++++++++++++++++++++++------------------ > >> 1 file changed, 63 insertions(+), 48 deletions(-) > >> > >> diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c > >> index 6fffda355c45..136f57ccd0be 100644 > >> --- a/fs/iomap/buffered-io.c > >> +++ b/fs/iomap/buffered-io.c > >> @@ -24,14 +24,14 @@ > >> #define IOEND_BATCH_SIZE 4096 > >> > >> /* > >> - * Structure allocated for each folio when block size < folio size > >> - * to track sub-folio uptodate status and I/O completions. > >> + * Structure allocated for each folio to track per-block uptodate state > >> + * and I/O completions. > >> */ > >> struct iomap_page { > >> atomic_t read_bytes_pending; > >> atomic_t write_bytes_pending; > >> - spinlock_t uptodate_lock; > >> - unsigned long uptodate[]; > >> + spinlock_t state_lock; > >> + unsigned long state[]; > >> }; > >> > >> static inline struct iomap_page *to_iomap_page(struct folio *folio) > >> @@ -43,6 +43,48 @@ static inline struct iomap_page *to_iomap_page(struct folio *folio) > >> > >> static struct bio_set iomap_ioend_bioset; > >> > >> +static bool iop_test_full_uptodate(struct folio *folio) > >> +{ > >> + struct iomap_page *iop = to_iomap_page(folio); > >> + struct inode *inode = folio->mapping->host; > >> + > >> + return bitmap_full(iop->state, i_blocks_per_folio(inode, folio)); > >> +} > > > > Can this be called iop_test_fully_uptodate(), please? > > > > IMHO, iop_test_full_uptodate() looks fine. It goes similar to > bitmap_full() function. Nah, it really isn't fine, it's "the bitmap is full" vs. "the iop is fully uptodate"; you can't say "the iop is full uptodate". Thanks, Andreas