On Wed, Apr 30, 2025 at 04:21:47PM -0500, Christoph Hellwig wrote: > Use the bio_add_virt_nofail and bio_add_vmalloc helpers to abstract > away the details of the memory allocation. > > Signed-off-by: Christoph Hellwig <h...@lst.de>
Nice cleanup! Reviewed-by: "Darrick J. Wong" <djw...@kernel.org> --D > --- > fs/xfs/xfs_log.c | 32 ++++++-------------------------- > 1 file changed, 6 insertions(+), 26 deletions(-) > > diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c > index 980aabc49512..793468b4d30d 100644 > --- a/fs/xfs/xfs_log.c > +++ b/fs/xfs/xfs_log.c > @@ -1607,27 +1607,6 @@ xlog_bio_end_io( > &iclog->ic_end_io_work); > } > > -static int > -xlog_map_iclog_data( > - struct bio *bio, > - void *data, > - size_t count) > -{ > - do { > - struct page *page = kmem_to_page(data); > - unsigned int off = offset_in_page(data); > - size_t len = min_t(size_t, count, PAGE_SIZE - off); > - > - if (bio_add_page(bio, page, len, off) != len) > - return -EIO; > - > - data += len; > - count -= len; > - } while (count); > - > - return 0; > -} > - > STATIC void > xlog_write_iclog( > struct xlog *log, > @@ -1693,11 +1672,12 @@ xlog_write_iclog( > > iclog->ic_flags &= ~(XLOG_ICL_NEED_FLUSH | XLOG_ICL_NEED_FUA); > > - if (xlog_map_iclog_data(&iclog->ic_bio, iclog->ic_data, count)) > - goto shutdown; > - > - if (is_vmalloc_addr(iclog->ic_data)) > - flush_kernel_vmap_range(iclog->ic_data, count); > + if (is_vmalloc_addr(iclog->ic_data)) { > + if (!bio_add_vmalloc(&iclog->ic_bio, iclog->ic_data, count)) > + goto shutdown; > + } else { > + bio_add_virt_nofail(&iclog->ic_bio, iclog->ic_data, count); > + } > > /* > * If this log buffer would straddle the end of the log we will have > -- > 2.47.2 > >