Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aae3b069 authored by Jens Axboe's avatar Jens Axboe
Browse files

bsg: pass in desired timeout handler



This will ease in the conversion to blk-mq, where we can't set
a timeout handler after queue init.

Cc: Johannes Thumshirn <jthumshirn@suse.de>
Cc: linux-scsi@vger.kernel.org
Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
Tested-by: default avatarBenjamin Block <bblock@linux.vnet.ibm.com>
Tested-by: default avatarMing Lei <ming.lei@redhat.com>
Reviewed-by: default avatarOmar Sandoval <osandov@fb.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 583d6535
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -304,7 +304,7 @@ static void bsg_exit_rq(struct request_queue *q, struct request *req)
 * @dd_job_size: size of LLD data needed for each job
 */
struct request_queue *bsg_setup_queue(struct device *dev, const char *name,
		bsg_job_fn *job_fn, int dd_job_size)
		bsg_job_fn *job_fn, rq_timed_out_fn *timeout, int dd_job_size)
{
	struct request_queue *q;
	int ret;
@@ -327,6 +327,7 @@ struct request_queue *bsg_setup_queue(struct device *dev, const char *name,
	blk_queue_flag_set(QUEUE_FLAG_BIDI, q);
	blk_queue_softirq_done(q, bsg_softirq_done);
	blk_queue_rq_timeout(q, BLK_DEFAULT_SG_TIMEOUT);
	blk_queue_rq_timed_out(q, timeout);

	ret = bsg_register_queue(q, dev, name, &bsg_transport_ops);
	if (ret) {
+3 −4
Original line number Diff line number Diff line
@@ -3780,7 +3780,8 @@ fc_bsg_hostadd(struct Scsi_Host *shost, struct fc_host_attrs *fc_host)
	snprintf(bsg_name, sizeof(bsg_name),
		 "fc_host%d", shost->host_no);

	q = bsg_setup_queue(dev, bsg_name, fc_bsg_dispatch, i->f->dd_bsg_size);
	q = bsg_setup_queue(dev, bsg_name, fc_bsg_dispatch, fc_bsg_job_timeout,
				i->f->dd_bsg_size);
	if (IS_ERR(q)) {
		dev_err(dev,
			"fc_host%d: bsg interface failed to initialize - setup queue\n",
@@ -3788,7 +3789,6 @@ fc_bsg_hostadd(struct Scsi_Host *shost, struct fc_host_attrs *fc_host)
		return PTR_ERR(q);
	}
	__scsi_init_queue(shost, q);
	blk_queue_rq_timed_out(q, fc_bsg_job_timeout);
	blk_queue_rq_timeout(q, FC_DEFAULT_BSG_TIMEOUT);
	fc_host->rqst_q = q;
	return 0;
@@ -3826,14 +3826,13 @@ fc_bsg_rportadd(struct Scsi_Host *shost, struct fc_rport *rport)
		return -ENOTSUPP;

	q = bsg_setup_queue(dev, dev_name(dev), fc_bsg_dispatch,
			i->f->dd_bsg_size);
				fc_bsg_job_timeout, i->f->dd_bsg_size);
	if (IS_ERR(q)) {
		dev_err(dev, "failed to setup bsg queue\n");
		return PTR_ERR(q);
	}
	__scsi_init_queue(shost, q);
	blk_queue_prep_rq(q, fc_bsg_rport_prep);
	blk_queue_rq_timed_out(q, fc_bsg_job_timeout);
	blk_queue_rq_timeout(q, BLK_DEFAULT_SG_TIMEOUT);
	rport->rqst_q = q;
	return 0;
+1 −1
Original line number Diff line number Diff line
@@ -1542,7 +1542,7 @@ iscsi_bsg_host_add(struct Scsi_Host *shost, struct iscsi_cls_host *ihost)
		return -ENOTSUPP;

	snprintf(bsg_name, sizeof(bsg_name), "iscsi_host%d", shost->host_no);
	q = bsg_setup_queue(dev, bsg_name, iscsi_bsg_host_dispatch, 0);
	q = bsg_setup_queue(dev, bsg_name, iscsi_bsg_host_dispatch, NULL, 0);
	if (IS_ERR(q)) {
		shost_printk(KERN_ERR, shost, "bsg interface failed to "
			     "initialize - no request queue\n");
+2 −2
Original line number Diff line number Diff line
@@ -198,7 +198,7 @@ static int sas_bsg_initialize(struct Scsi_Host *shost, struct sas_rphy *rphy)

	if (rphy) {
		q = bsg_setup_queue(&rphy->dev, dev_name(&rphy->dev),
				sas_smp_dispatch, 0);
				sas_smp_dispatch, NULL, 0);
		if (IS_ERR(q))
			return PTR_ERR(q);
		rphy->q = q;
@@ -207,7 +207,7 @@ static int sas_bsg_initialize(struct Scsi_Host *shost, struct sas_rphy *rphy)

		snprintf(name, sizeof(name), "sas_host%d", shost->host_no);
		q = bsg_setup_queue(&shost->shost_gendev, name,
				sas_smp_dispatch, 0);
				sas_smp_dispatch, NULL, 0);
		if (IS_ERR(q))
			return PTR_ERR(q);
		to_sas_host_attrs(shost)->q = q;
+1 −1
Original line number Diff line number Diff line
@@ -193,7 +193,7 @@ int ufs_bsg_probe(struct ufs_hba *hba)
	if (ret)
		goto out;

	q = bsg_setup_queue(bsg_dev, dev_name(bsg_dev), ufs_bsg_request, 0);
	q = bsg_setup_queue(bsg_dev, dev_name(bsg_dev), ufs_bsg_request, NULL, 0);
	if (IS_ERR(q)) {
		ret = PTR_ERR(q);
		goto out;
Loading