linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mike Christie <michaelc@cs.wisc.edu>
To: Chandra Seetharaman <sekharan@us.ibm.com>
Cc: andmike@us.ibm.com, dm-devel@redhat.com,
	linux-scsi@vger.kernel.org, jens.axboe@oracle.com
Subject: Re: [PATCH 3/9] scsi_dh: scsi handling of REQ_LB_OP_TRANSITION
Date: Fri, 01 Feb 2008 14:00:37 -0600	[thread overview]
Message-ID: <47A37A65.8020500@cs.wisc.edu> (raw)
In-Reply-To: <20080124003059.18871.89111.sendpatchset@localhost.localdomain>

Chandra Seetharaman wrote:
> @@ -1445,9 +1479,24 @@ static void scsi_kill_request(struct req
>  static void scsi_softirq_done(struct request *rq)
>  {
>  	struct scsi_cmnd *cmd = rq->completion_data;
> -	unsigned long wait_for = (cmd->allowed + 1) * cmd->timeout_per_command;
>  	int disposition;
> +	struct request_queue *q;
> +	unsigned long wait_for, flags;
>  
> +	if (blk_linux_request(rq)) {
> +		q = rq->q;
> +		spin_lock_irqsave(q->queue_lock, flags);
> +		/*
> +		 * we always return 1 and the caller should
> +		 * check rq->errors for the complete status
> +		 */
> +		end_that_request_last(rq, 1);
> +		spin_unlock_irqrestore(q->queue_lock, flags);
> +		return;
> +	}
> +
> +
> +	wait_for = (cmd->allowed + 1) * cmd->timeout_per_command;
>  	INIT_LIST_HEAD(&cmd->eh_entry);
>  
.....

> +
>  /*
>   * Function:    scsi_request_fn()
>   *
> @@ -1519,7 +1612,23 @@ static void scsi_request_fn(struct reque
>  		 * accept it.
>  		 */
>  		req = elv_next_request(q);
> -		if (!req || !scsi_dev_queue_ready(q, sdev))
> +		if (!req)
> +			break;
> +
> +		/*
> +		 * We do not account for linux blk req in the device
> +		 * or host busy accounting because it is not necessarily
> +		 * a scsi command that is sent to some object. The lower
> +		 * level can translate it into a request/scsi_cmnd, if
> +		 * necessary, and then queue that up using REQ_TYPE_BLOCK_PC.
> +		 */
> +		if (blk_linux_request(req)) {
> +			blkdev_dequeue_request(req);
> +			scsi_execute_blk_linux_cmd(req);
> +			continue;
> +		}
> +
> +		if (!scsi_dev_queue_ready(q, sdev))
>  			break;

I think these two pieces are one of the reasons I have not pushed the 
patches. I thought the completion and execution pieces here are a little 
ugly and seem to just wedge themselves in where they want to be.

Is there any way to make the insertion of non-scsi commands more common? 
Do we have the code for being able to send requests directly to 
something like a fc rport done? Could we maybe inject these special 
commands to the hw handler using something similar to how bsg would send 
non scsi commands to weird objects (objects like rport, sessions, and 
not devices we traditionally associated with queues like scsi_devices). 
Just a thought with no code :) that is why the ugly code existed still :)

  reply	other threads:[~2008-02-01 20:00 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-24  0:30 [PATCH 0/9] scsi_dh: Move dm device handler to SCSI layer Chandra Seetharaman
2008-01-24  0:30 ` [PATCH 1/9] scsi_dh: add REQ_LB_OP_TRANSITION and errors Chandra Seetharaman
2008-01-24  0:30 ` [PATCH 2/9] scsi_dh: change sd_prep_fn to call common code Chandra Seetharaman
2008-01-24  0:30 ` [PATCH 3/9] scsi_dh: scsi handling of REQ_LB_OP_TRANSITION Chandra Seetharaman
2008-02-01 20:00   ` Mike Christie [this message]
2008-02-04 18:59     ` Chandra Seetharaman
2008-02-04 19:02     ` James Bottomley
2008-02-06 19:00       ` Mike Anderson
2008-02-06 20:52         ` James Bottomley
2008-01-24  0:31 ` [PATCH 4/9] scsi_dh: add skeleton for SCSI Device Handlers Chandra Seetharaman
2008-02-01 19:53   ` Mike Christie
2008-02-01 20:27     ` Mike Anderson
2008-02-04 18:54     ` Chandra Seetharaman
2008-01-24  0:31 ` [PATCH 5/9] scsi_dh: add EMC Clariion device handler Chandra Seetharaman
2008-01-24  0:31 ` [PATCH 6/9] scsi_dh: add hp sw " Chandra Seetharaman
2008-01-24  0:32 ` [PATCH 7/9] scsi_dh: Add support for SDEV_PASSIVE Chandra Seetharaman
2008-02-04 18:58   ` James Bottomley
2008-02-04 20:15     ` Chandra Seetharaman
2008-02-04 20:28       ` James Bottomley
2008-02-04 21:19         ` Chandra Seetharaman
2008-02-09 12:45           ` Matthew Wilcox
2008-02-11 18:27             ` Chandra Seetharaman
2008-02-11 19:18               ` Matthew Wilcox
2008-02-28  1:03                 ` Chandra Seetharaman
2008-02-05 20:04         ` Mike Christie
2008-02-05 21:56           ` Mike Anderson
2008-02-06  0:46             ` Chandra Seetharaman
2008-02-07 10:08             ` no INQUIRY from userspace please (was Re: [PATCH 7/9] scsi_dh: Add support for SDEV_PASSIVE) Stefan Richter
2008-02-07 15:01               ` James Bottomley
2008-02-07 17:05                 ` no INQUIRY from userspace please Stefan Richter
2008-02-07 17:13                   ` Stefan Richter
2008-02-19 20:53                     ` Douglas Gilbert
2008-03-04  9:06                       ` Hannes Reinecke
2008-02-07 20:42                 ` no INQUIRY from userspace please (was Re: [PATCH 7/9] scsi_dh: Add support for SDEV_PASSIVE) Luben Tuikov
2008-02-04 20:26     ` [PATCH 7/9] scsi_dh: Add support for SDEV_PASSIVE Mike Anderson
2008-01-24  0:32 ` [PATCH 8/9] scsi_dh: add lsi rdac device handler Chandra Seetharaman
2008-01-24  0:32 ` [PATCH 9/9] scsi_dh: add scsi device handler to dm Chandra Seetharaman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47A37A65.8020500@cs.wisc.edu \
    --to=michaelc@cs.wisc.edu \
    --cc=andmike@us.ibm.com \
    --cc=dm-devel@redhat.com \
    --cc=jens.axboe@oracle.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=sekharan@us.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).