@@ -1813,16 +1813,23 @@ static void scsi_mq_exit_request(struct blk_mq_tag_set *set, struct request *rq,
1813
1813
1814
1814
static int scsi_mq_poll (struct blk_mq_hw_ctx * hctx )
1815
1815
{
1816
- struct request_queue * q = hctx -> queue ;
1817
- struct scsi_device * sdev = q -> queuedata ;
1818
- struct Scsi_Host * shost = sdev -> host ;
1816
+ struct Scsi_Host * shost = hctx -> driver_data ;
1819
1817
1820
1818
if (shost -> hostt -> mq_poll )
1821
1819
return shost -> hostt -> mq_poll (shost , hctx -> queue_num );
1822
1820
1823
1821
return 0 ;
1824
1822
}
1825
1823
1824
+ static int scsi_init_hctx (struct blk_mq_hw_ctx * hctx , void * data ,
1825
+ unsigned int hctx_idx )
1826
+ {
1827
+ struct Scsi_Host * shost = data ;
1828
+
1829
+ hctx -> driver_data = shost ;
1830
+ return 0 ;
1831
+ }
1832
+
1826
1833
static int scsi_map_queues (struct blk_mq_tag_set * set )
1827
1834
{
1828
1835
struct Scsi_Host * shost = container_of (set , struct Scsi_Host , tag_set );
@@ -1890,6 +1897,7 @@ static const struct blk_mq_ops scsi_mq_ops_no_commit = {
1890
1897
.cleanup_rq = scsi_cleanup_rq ,
1891
1898
.busy = scsi_mq_lld_busy ,
1892
1899
.map_queues = scsi_map_queues ,
1900
+ .init_hctx = scsi_init_hctx ,
1893
1901
.poll = scsi_mq_poll ,
1894
1902
.set_rq_budget_token = scsi_mq_set_rq_budget_token ,
1895
1903
.get_rq_budget_token = scsi_mq_get_rq_budget_token ,
@@ -1898,9 +1906,7 @@ static const struct blk_mq_ops scsi_mq_ops_no_commit = {
1898
1906
1899
1907
static void scsi_commit_rqs (struct blk_mq_hw_ctx * hctx )
1900
1908
{
1901
- struct request_queue * q = hctx -> queue ;
1902
- struct scsi_device * sdev = q -> queuedata ;
1903
- struct Scsi_Host * shost = sdev -> host ;
1909
+ struct Scsi_Host * shost = hctx -> driver_data ;
1904
1910
1905
1911
shost -> hostt -> commit_rqs (shost , hctx -> queue_num );
1906
1912
}
@@ -1921,6 +1927,7 @@ static const struct blk_mq_ops scsi_mq_ops = {
1921
1927
.cleanup_rq = scsi_cleanup_rq ,
1922
1928
.busy = scsi_mq_lld_busy ,
1923
1929
.map_queues = scsi_map_queues ,
1930
+ .init_hctx = scsi_init_hctx ,
1924
1931
.poll = scsi_mq_poll ,
1925
1932
.set_rq_budget_token = scsi_mq_set_rq_budget_token ,
1926
1933
.get_rq_budget_token = scsi_mq_get_rq_budget_token ,
0 commit comments