Re: [PATCH 7/8] blk-map: let blk_rq_map_user_iov() support nullmapping
From: FUJITA Tomonori
Date:  Wed Apr 01 2009 - 07:55:28 EST
On Wed,  1 Apr 2009 20:04:43 +0900
Tejun Heo <tj@xxxxxxxxxx> wrote:
> Impact: API expansion
> 
> Till now, only blk_rq_map() supported null mapping.  Add null mapping
> support to blk_rq_map_user_iov() by moving BIO_NULL_MAPPED setting to
> bio_copy_user_iov().
Why does blk_rq_map_user_iov() need to support the null mapping?
> Signed-off-by: Tejun Heo <tj@xxxxxxxxxx>
> ---
>  block/blk-map.c |    3 ---
>  fs/bio.c        |    4 +++-
>  2 files changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/block/blk-map.c b/block/blk-map.c
> index 6718021..ac1961d 100644
> --- a/block/blk-map.c
> +++ b/block/blk-map.c
> @@ -63,9 +63,6 @@ static int __blk_rq_map_user(struct request_queue *q, struct request *rq,
>  	if (IS_ERR(bio))
>  		return PTR_ERR(bio);
>  
> -	if (map_data && map_data->null_mapped)
> -		bio->bi_flags |= (1 << BIO_NULL_MAPPED);
> -
>  	orig_bio = bio;
>  	blk_queue_bounce(q, &bio);
>  
> diff --git a/fs/bio.c b/fs/bio.c
> index 8ad9784..728bef9 100644
> --- a/fs/bio.c
> +++ b/fs/bio.c
> @@ -869,7 +869,9 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
>  	/*
>  	 * success
>  	 */
> -	if (!write_to_vm && (!map_data || !map_data->null_mapped)) {
> +	if (unlikely(map_data && map_data->null_mapped))
> +		bio->bi_flags |= (1 << BIO_NULL_MAPPED);
> +	else if (!write_to_vm) {
>  		ret = __bio_copy_iov(bio, bio->bi_io_vec, iov, iov_count, 0, 0);
>  		if (ret)
>  			goto cleanup;
> -- 
> 1.6.0.2
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/