Re: [dm-devel] [PATCH 10/15] sd: use bvec_virt

Bart Van Assche
2021-08-05T16:31:44Z

On 8/4/21 2:56 AM, Christoph Hellwig wrote:
> Use bvec_virt instead of open coding it.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> drivers/scsi/sd.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
> index b8d55af763f9..5b5b8266e142 100644
> --- a/drivers/scsi/sd.c
> +++ b/drivers/scsi/sd.c
> @@ -886,7 +886,7 @@ static blk_status_t sd_setup_unmap_cmnd(struct scsi_cmnd *cmd)
> cmd->cmnd[0] = UNMAP;
> cmd->cmnd[8] = 24;
>
> - buf = page_address(rq->special_vec.bv_page);
> + buf = bvec_virt(&rq->special_vec);
> put_unaligned_be16(6 + 16, &buf[0]);
> put_unaligned_be16(16, &buf[2]);
> put_unaligned_be64(lba, &buf[8]);

The patch description is not correct. The above patch involves a
functional change while the patch description suggests that no
functionality has been changed.

Although the above patch looks fine to me, why has page_address() been
changed into bvec_virt() in the sd driver? My understanding is that the
sd driver always sets bv_offset to zero.

Thanks,

Bart.