@ -241,7 +241,8 @@ static void mtip_async_complete(struct mtip_port *port,
rq = mtip_rq_from_tag ( dd , tag ) ;
blk_mq_complete_request ( rq , status ) ;
cmd - > status = status ;
blk_mq_complete_request ( rq , 0 ) ;
}
/*
@ -2910,18 +2911,19 @@ static void mtip_softirq_done_fn(struct request *rq)
if ( unlikely ( cmd - > unaligned ) )
up ( & dd - > port - > cmd_slot_unal ) ;
blk_mq_end_request ( rq , rq - > error s) ;
blk_mq_end_request ( rq , cmd - > statu s) ;
}
static void mtip_abort_cmd ( struct request * req , void * data ,
bool reserved )
{
struct mtip_cmd * cmd = blk_mq_rq_to_pdu ( req ) ;
struct driver_data * dd = data ;
dbg_printk ( MTIP_DRV_NAME " Aborting request, tag = %d \n " , req - > tag ) ;
clear_bit ( req - > tag , dd - > port - > cmds_to_issue ) ;
req - > error s = - EIO ;
cmd - > statu s = - EIO ;
mtip_softirq_done_fn ( req ) ;
}
@ -3816,7 +3818,6 @@ static int mtip_queue_rq(struct blk_mq_hw_ctx *hctx,
if ( likely ( ! ret ) )
return BLK_MQ_RQ_QUEUE_OK ;
rq - > errors = ret ;
return BLK_MQ_RQ_QUEUE_ERROR ;
}
@ -4106,9 +4107,10 @@ static void mtip_no_dev_cleanup(struct request *rq, void *data, bool reserv)
struct driver_data * dd = ( struct driver_data * ) data ;
struct mtip_cmd * cmd ;
if ( likely ( ! reserv ) )
blk_mq_complete_request ( rq , - ENODEV ) ;
else if ( test_bit ( MTIP_PF_IC_ACTIVE_BIT , & dd - > port - > flags ) ) {
if ( likely ( ! reserv ) ) {
cmd - > status = - ENODEV ;
blk_mq_complete_request ( rq , 0 ) ;
} else if ( test_bit ( MTIP_PF_IC_ACTIVE_BIT , & dd - > port - > flags ) ) {
cmd = mtip_cmd_from_tag ( dd , MTIP_TAG_INTERNAL ) ;
if ( cmd - > comp_func )