From: Kent Overstreet Date: Sun, 19 Mar 2023 23:07:28 +0000 (-0400) Subject: bcachefs: bch2_seek_pagecache_data() folio conversion X-Git-Tag: io_uring-6.7-2023-11-10~119^2~370 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=a86a92cb0d7837b2e23f6b503242810db5ec93c7;p=linux-block.git bcachefs: bch2_seek_pagecache_data() folio conversion This converts bch2_seek_pagecache_data() to handle large folios. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/fs-io.c b/fs/bcachefs/fs-io.c index 0cb76238f487..de4e5effca06 100644 --- a/fs/bcachefs/fs-io.c +++ b/fs/bcachefs/fs-io.c @@ -3488,10 +3488,10 @@ err: static int folio_data_offset(struct folio *folio, unsigned offset) { struct bch_folio *s = bch2_folio(folio); - unsigned i; + unsigned i, sectors = folio_sectors(folio); if (s) - for (i = offset >> 9; i < PAGE_SECTORS; i++) + for (i = offset >> 9; i < sectors; i++) if (s->s[i].state >= SECTOR_DIRTY) return i << 9; @@ -3519,12 +3519,10 @@ static loff_t bch2_seek_pagecache_data(struct inode *vinode, folio_lock(folio); offset = folio_data_offset(folio, - folio->index == start_index - ? start_offset & (PAGE_SIZE - 1) - : 0); + max(folio_pos(folio), start_offset) - + folio_pos(folio)); if (offset >= 0) { - ret = clamp(((loff_t) folio->index << PAGE_SHIFT) + - offset, + ret = clamp(folio_pos(folio) + offset, start_offset, end_offset); folio_unlock(folio); folio_batch_release(&fbatch);