Re: [PATCH v8 04/10] iomap: don't get an reference on ZERO_PAGE for direct I/O block zeroing

From: Christoph Hellwig
Date: Tue Jan 24 2023 - 01:00:08 EST


On Mon, Jan 23, 2023 at 06:42:28PM -0800, John Hubbard wrote:
> > @@ -202,7 +202,7 @@ static void iomap_dio_zero(const struct iomap_iter *iter, struct iomap_dio *dio,
> > bio->bi_private = dio;
> > bio->bi_end_io = iomap_dio_bio_end_io;
> > - get_page(page);
> > + bio_set_flag(bio, BIO_NO_PAGE_REF);
>
> ...is it accurate to assume that the entire bio is pointing to the zero
> page? I recall working through this area earlier last year, and ended up
> just letting the zero page get pinned, and then unpinning upon release,
> which is harmless.

Yes, the bio is built 4 lines above what is quoted here, and submitted
right after it. It only contains the ZERO_PAGE.