From: Boaz Harrosh <bharrosh@panasas.com>
To: dgilbert@interlog.com
Cc: James Bottomley <James.Bottomley@suse.de>,
SCSI development list <linux-scsi@vger.kernel.org>,
mh-linux-kernel@loup.net
Subject: Re: [PATCH] sg: retrofit SG_FLAG_Q_AT_TAIL flag
Date: Sun, 21 Mar 2010 13:36:56 +0200 [thread overview]
Message-ID: <4BA604D8.9090604@panasas.com> (raw)
In-Reply-To: <4BA51EB6.5040401@interlog.com>
On 03/20/2010 09:15 PM, Douglas Gilbert wrote:
> In response to
> http://bugzilla.kernel.org/show_bug.cgi?id=15565
> and the fact this capability has been present
> in bsg for some time, add SG_FLAG_Q_AT_TAIL flag. It has
> the same binary value as the bsg flag and the define name
> is the same apart from the leading "B". The semantics are
> the same, namely to override the default queue at head
> action of the SCSI midlevel when a low level driver
> blocks (i.e. when a LLD returns non-zero to a
> queuecommand() ). Tested with scsi_debug.
>
> Changelog
> - add SG_FLAG_Q_AT_TAIL flag to override default
> queue at head semantics of the SCSI midlevel queue.
>
> Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>
Review-by: Boaz Harrosh <bharrosh@panasas.com>
> --- linux/include/scsi/sg.h 2008-10-10 17:04:54.000000000 -0400
> +++ linux/include/scsi/sg.h2633qat1 2010-03-20 14:28:31.000000000 -0400
> @@ -11,9 +11,9 @@
> Original driver (sg.h):
> * Copyright (C) 1992 Lawrence Foard
> Version 2 and 3 extensions to driver:
> -* Copyright (C) 1998 - 2006 Douglas Gilbert
> +* Copyright (C) 1998 - 2010 Douglas Gilbert
>
> - Version: 3.5.34 (20060920)
> + Version: 3.5.35 (20100319)
> This version is for 2.6 series kernels.
>
> For a full changelog see http://www.torque.net/sg
> @@ -124,6 +124,7 @@
> #define SG_FLAG_UNUSED_LUN_INHIBIT 2 /* default is overwrite lun in SCSI */
> /* command block (when <= SCSI_2) */
> #define SG_FLAG_MMAP_IO 4 /* request memory mapped IO */
> +#define SG_FLAG_Q_AT_TAIL 0x10 /* default, without this flag, is Q_AT_HEAD */
I have chosen this value exactly so it can fit with SG
as well.
> #define SG_FLAG_NO_DXFER 0x10000 /* no transfer of kernel buffers to/from */
> /* user space (debug indirect IO) */
>
> --- linux/drivers/scsi/sg.c 2009-12-03 11:11:18.000000000 -0500
> +++ linux/drivers/scsi/sg.c2633qat1 2010-03-19 19:42:10.000000000 -0400
> @@ -18,8 +18,8 @@
> *
> */
>
> -static int sg_version_num = 30534; /* 2 digits for each component */
> -#define SG_VERSION_STR "3.5.34"
> +static int sg_version_num = 30535; /* 2 digits for each component */
> +#define SG_VERSION_STR "3.5.35"
>
> /*
> * D. P. Gilbert (dgilbert@interlog.com, dougg@triode.net.au), notes:
> @@ -61,7 +61,7 @@
>
> #ifdef CONFIG_SCSI_PROC_FS
> #include <linux/proc_fs.h>
> -static char *sg_version_date = "20061027";
> +static char *sg_version_date = "20100319";
>
> static int sg_proc_init(void);
> static void sg_proc_cleanup(void);
> @@ -710,8 +710,11 @@
I wish you would have used diff "-p" option that shows us the function
this hunk is at. (git diff does that by default)
> int k, data_dir;
> Sg_device *sdp = sfp->parentdp;
> sg_io_hdr_t *hp = &srp->header;
> + int at_head = 1;
>
> srp->data.cmd_opcode = cmnd[0]; /* hold opcode of command */
> + if ('\0' != hp->interface_id) /* old interface misuses flags */
> + at_head = (SG_FLAG_Q_AT_TAIL & hp->flags) ? 0 : 1;
> hp->status = 0;
> hp->masked_status = 0;
> hp->msg_status = 0;
> @@ -753,7 +756,7 @@
> srp->rq->timeout = timeout;
> kref_get(&sfp->f_ref); /* sg_rq_end_io() does kref_put(). */
> blk_execute_rq_nowait(sdp->device->request_queue, sdp->disk,
> - srp->rq, 1, sg_rq_end_io);
> + srp->rq, at_head, sg_rq_end_io);
Grate, this simple thing does wonders to performance.
> return 0;
> }
>
Thanks for doing this
Boaz
next prev parent reply other threads:[~2010-03-21 11:36 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-20 19:15 [PATCH] sg: retrofit SG_FLAG_Q_AT_TAIL flag Douglas Gilbert
2010-03-21 11:36 ` Boaz Harrosh [this message]
2010-03-21 17:56 ` Douglas Gilbert
2010-03-22 7:39 ` Mike Hayward
2010-03-22 8:07 ` Boaz Harrosh
2010-03-22 8:32 ` FUJITA Tomonori
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=4BA604D8.9090604@panasas.com \
--to=bharrosh@panasas.com \
--cc=James.Bottomley@suse.de \
--cc=dgilbert@interlog.com \
--cc=linux-scsi@vger.kernel.org \
--cc=mh-linux-kernel@loup.net \
/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