Loading drivers/block/paride/pd.c +25 −5 Original line number Diff line number Diff line Loading @@ -242,6 +242,11 @@ struct pd_unit { static struct pd_unit pd[PD_UNITS]; struct pd_req { /* for REQ_OP_DRV_IN: */ enum action (*func)(struct pd_unit *disk); }; static char pd_scratch[512]; /* scratch block buffer */ static char *pd_errs[17] = { "ERR", "INDEX", "ECC", "DRQ", "SEEK", "WRERR", Loading Loading @@ -502,8 +507,9 @@ static enum action do_pd_io_start(void) static enum action pd_special(void) { enum action (*func)(struct pd_unit *) = pd_req->special; return func(pd_current); struct pd_req *req = blk_mq_rq_to_pdu(pd_req); return req->func(pd_current); } static int pd_next_buf(void) Loading Loading @@ -767,12 +773,14 @@ static int pd_special_command(struct pd_unit *disk, enum action (*func)(struct pd_unit *disk)) { struct request *rq; struct pd_req *req; rq = blk_get_request(disk->gd->queue, REQ_OP_DRV_IN, 0); if (IS_ERR(rq)) return PTR_ERR(rq); req = blk_mq_rq_to_pdu(rq); rq->special = func; req->func = func; blk_execute_rq(disk->gd->queue, disk->gd, rq, 0); blk_put_request(rq); return 0; Loading Loading @@ -892,9 +900,21 @@ static void pd_probe_drive(struct pd_unit *disk) disk->gd = p; p->private_data = disk; p->queue = blk_mq_init_sq_queue(&disk->tag_set, &pd_mq_ops, 2, BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_BLOCKING); memset(&disk->tag_set, 0, sizeof(disk->tag_set)); disk->tag_set.ops = &pd_mq_ops; disk->tag_set.cmd_size = sizeof(struct pd_req); disk->tag_set.nr_hw_queues = 1; disk->tag_set.nr_maps = 1; disk->tag_set.queue_depth = 2; disk->tag_set.numa_node = NUMA_NO_NODE; disk->tag_set.flags = BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_BLOCKING; if (blk_mq_alloc_tag_set(&disk->tag_set)) return; p->queue = blk_mq_init_queue(&disk->tag_set); if (IS_ERR(p->queue)) { blk_mq_free_tag_set(&disk->tag_set); p->queue = NULL; return; } Loading Loading
drivers/block/paride/pd.c +25 −5 Original line number Diff line number Diff line Loading @@ -242,6 +242,11 @@ struct pd_unit { static struct pd_unit pd[PD_UNITS]; struct pd_req { /* for REQ_OP_DRV_IN: */ enum action (*func)(struct pd_unit *disk); }; static char pd_scratch[512]; /* scratch block buffer */ static char *pd_errs[17] = { "ERR", "INDEX", "ECC", "DRQ", "SEEK", "WRERR", Loading Loading @@ -502,8 +507,9 @@ static enum action do_pd_io_start(void) static enum action pd_special(void) { enum action (*func)(struct pd_unit *) = pd_req->special; return func(pd_current); struct pd_req *req = blk_mq_rq_to_pdu(pd_req); return req->func(pd_current); } static int pd_next_buf(void) Loading Loading @@ -767,12 +773,14 @@ static int pd_special_command(struct pd_unit *disk, enum action (*func)(struct pd_unit *disk)) { struct request *rq; struct pd_req *req; rq = blk_get_request(disk->gd->queue, REQ_OP_DRV_IN, 0); if (IS_ERR(rq)) return PTR_ERR(rq); req = blk_mq_rq_to_pdu(rq); rq->special = func; req->func = func; blk_execute_rq(disk->gd->queue, disk->gd, rq, 0); blk_put_request(rq); return 0; Loading Loading @@ -892,9 +900,21 @@ static void pd_probe_drive(struct pd_unit *disk) disk->gd = p; p->private_data = disk; p->queue = blk_mq_init_sq_queue(&disk->tag_set, &pd_mq_ops, 2, BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_BLOCKING); memset(&disk->tag_set, 0, sizeof(disk->tag_set)); disk->tag_set.ops = &pd_mq_ops; disk->tag_set.cmd_size = sizeof(struct pd_req); disk->tag_set.nr_hw_queues = 1; disk->tag_set.nr_maps = 1; disk->tag_set.queue_depth = 2; disk->tag_set.numa_node = NUMA_NO_NODE; disk->tag_set.flags = BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_BLOCKING; if (blk_mq_alloc_tag_set(&disk->tag_set)) return; p->queue = blk_mq_init_queue(&disk->tag_set); if (IS_ERR(p->queue)) { blk_mq_free_tag_set(&disk->tag_set); p->queue = NULL; return; } Loading