On Wed, May 30, 2018 at 12:02:08PM +0200, Christoph Hellwig wrote: > This way the implementation doesn't depend on buffer_head internals. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- > fs/iomap.c | 85 +++++++++++++++++++++++++----------------------------- > 1 file changed, 39 insertions(+), 46 deletions(-) > > diff --git a/fs/iomap.c b/fs/iomap.c > index e75153f52748..5b92243808d3 100644 > --- a/fs/iomap.c > +++ b/fs/iomap.c > @@ -794,36 +794,51 @@ int iomap_fiemap(struct inode *inode, struct fiemap_extent_info *fi, > } > EXPORT_SYMBOL_GPL(iomap_fiemap); > > -/* > - * Seek for SEEK_DATA / SEEK_HOLE within @page, starting at @lastoff. > - * > - * Returns the offset within the file on success, and -ENOENT otherwise. > - */ > -static loff_t > -page_seek_hole_data(struct page *page, loff_t lastoff, int whence) > +static bool > +page_seek_hole_data(struct inode *inode, struct page *page, loff_t *lastoff, > + int whence) Can we keep the comment explaining the return value? > { > - loff_t offset = page_offset(page); > - struct buffer_head *bh, *head; > + const struct address_space_operations *ops = inode->i_mapping->a_ops; > + unsigned int bsize = i_blocksize(inode), off; Split this into two lines. Otherwise looks fine. Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> -- Dave Chinner david@xxxxxxxxxxxxx