Re: [PATCH 17/19] xfs: simplify building the bio in xlog_write_iclog

"Darrick J. Wong" <[email protected]>
Newsgroups org.kernel.vger.linux-bcache,dev.linux.lists.dm-devel,dev.linux.lists.gfs2,org.kernel.vger.linux-block,org.kernel.vger.linux-btrfs,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-pm,org.kernel.vger.linux-xfs
Message-ID <20250501195124.GE25675@frogsfrogsfrogs>
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 <[email protected]>

Nice cleanup!
Reviewed-by: "Darrick J. Wong" <[email protected]>

--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
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.