block/bsg: move queue creation into bsg_setup_queue
Simply the boilerplate code needed for bsg nodes a bit. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:

committed by
Jens Axboe

parent
e9c787e65c
commit
8ae94eb65b
@@ -1537,25 +1537,18 @@ iscsi_bsg_host_add(struct Scsi_Host *shost, struct iscsi_cls_host *ihost)
|
||||
struct iscsi_internal *i = to_iscsi_internal(shost->transportt);
|
||||
struct request_queue *q;
|
||||
char bsg_name[20];
|
||||
int ret;
|
||||
|
||||
if (!i->iscsi_transport->bsg_request)
|
||||
return -ENOTSUPP;
|
||||
|
||||
snprintf(bsg_name, sizeof(bsg_name), "iscsi_host%d", shost->host_no);
|
||||
|
||||
q = blk_init_queue(bsg_request_fn, NULL);
|
||||
if (!q)
|
||||
return -ENOMEM;
|
||||
|
||||
__scsi_init_queue(shost, q);
|
||||
ret = bsg_setup_queue(dev, q, bsg_name, iscsi_bsg_host_dispatch, 0);
|
||||
if (ret) {
|
||||
q = bsg_setup_queue(dev, bsg_name, iscsi_bsg_host_dispatch, 0);
|
||||
if (IS_ERR(q)) {
|
||||
shost_printk(KERN_ERR, shost, "bsg interface failed to "
|
||||
"initialize - no request queue\n");
|
||||
blk_cleanup_queue(q);
|
||||
return ret;
|
||||
return PTR_ERR(q);
|
||||
}
|
||||
__scsi_init_queue(shost, q);
|
||||
|
||||
ihost->bsg_q = q;
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user