@ -306,11 +306,11 @@ static __le64 **iod_list(struct request *req)
return ( __le64 * * ) ( iod - > sg + blk_rq_nr_phys_segments ( req ) ) ;
}
static int nvme_init_iod ( struct request * rq , unsigned size ,
struct nvme_dev * dev )
static int nvme_init_iod ( struct request * rq , struct nvme_dev * dev )
{
struct nvme_iod * iod = blk_mq_rq_to_pdu ( rq ) ;
int nseg = blk_rq_nr_phys_segments ( rq ) ;
unsigned int size = blk_rq_payload_bytes ( rq ) ;
if ( nseg > NVME_INT_PAGES | | size > NVME_INT_BYTES ( dev ) ) {
iod - > sg = kmalloc ( nvme_iod_alloc_size ( dev , size , nseg ) , GFP_ATOMIC ) ;
@ -420,12 +420,11 @@ static void nvme_dif_complete(u32 p, u32 v, struct t10_pi_tuple *pi)
}
# endif
static bool nvme_setup_prps ( struct nvme_dev * dev , struct request * req ,
int total_len )
static bool nvme_setup_prps ( struct nvme_dev * dev , struct request * req )
{
struct nvme_iod * iod = blk_mq_rq_to_pdu ( req ) ;
struct dma_pool * pool ;
int length = total_len ;
int length = blk_rq_payload_bytes ( req ) ;
struct scatterlist * sg = iod - > sg ;
int dma_len = sg_dma_len ( sg ) ;
u64 dma_addr = sg_dma_address ( sg ) ;
@ -501,7 +500,7 @@ static bool nvme_setup_prps(struct nvme_dev *dev, struct request *req,
}
static int nvme_map_data ( struct nvme_dev * dev , struct request * req ,
unsigned size , struct nvme_command * cmnd )
struct nvme_command * cmnd )
{
struct nvme_iod * iod = blk_mq_rq_to_pdu ( req ) ;
struct request_queue * q = req - > q ;
@ -519,7 +518,7 @@ static int nvme_map_data(struct nvme_dev *dev, struct request *req,
DMA_ATTR_NO_WARN ) )
goto out ;
if ( ! nvme_setup_prps ( dev , req , size ) )
if ( ! nvme_setup_prps ( dev , req ) )
goto out_unmap ;
ret = BLK_MQ_RQ_QUEUE_ERROR ;
@ -580,7 +579,6 @@ static int nvme_queue_rq(struct blk_mq_hw_ctx *hctx,
struct nvme_dev * dev = nvmeq - > dev ;
struct request * req = bd - > rq ;
struct nvme_command cmnd ;
unsigned map_len ;
int ret = BLK_MQ_RQ_QUEUE_OK ;
/*
@ -600,13 +598,12 @@ static int nvme_queue_rq(struct blk_mq_hw_ctx *hctx,
if ( ret ! = BLK_MQ_RQ_QUEUE_OK )
return ret ;
map_len = nvme_map_len ( req ) ;
ret = nvme_init_iod ( req , map_len , dev ) ;
ret = nvme_init_iod ( req , dev ) ;
if ( ret ! = BLK_MQ_RQ_QUEUE_OK )
goto out_free_cmd ;
if ( blk_rq_nr_phys_segments ( req ) )
ret = nvme_map_data ( dev , req , map_len , & cmnd ) ;
ret = nvme_map_data ( dev , req , & cmnd ) ;
if ( ret ! = BLK_MQ_RQ_QUEUE_OK )
goto out_cleanup_iod ;