From: Boaz Harrosh <bharrosh@panasas.com>
To: Christoph Hellwig <hch@infradead.org>,
Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>,
Jens Axboe <jens.axboe@oracle.com>,
James Bottomley <James.Bottomley@hansenpartnership.com>
Cc: Sebastian Siewior <ide+bug@ml.breakpoint.cc>,
Tejun Heo <htejun@gmail.com>,
Sergei Shtylyov <sshtylyov@ru.mvista.com>,
linux-ide@vger.kernel.org, linux-scsi@vger.kernel.org
Subject: [PATCHSET 0/3] varlen extended and vendor-specific cdbs
Date: Sun, 10 Feb 2008 20:59:00 +0200 [thread overview]
Message-ID: <47AF4974.9010200@panasas.com> (raw)
In-Reply-To: <47AF1321.7000107@panasas.com>
Submitted is a patchset for adding support for variable-length, extended,
and vendor specific CDBs. It should now cover the entire range of the
SCSI standard. (and/or any other use of command packets in block devices)
They are based on scsi-misc.
Difference from last time, is at struct request. I did a smallish
hack to save the extra pointer space. The pointer now shares it's
space with the request->cmd, as they are mutual exclusive. The
flag to switch between them is when cmd_len == 0 and varlen_cdb_len != 0
I've added 2 accessors to hide the mess. I think this approach
should be safe. I can easily go back to the separate pointer,
but I figured a little hack is better then a bloat.
This is on top of the size shrink to struct scsi_cmnd gained
in the first patch. We save upto 12 bytes on 32 bit ARCHs
So over all, this cleans things up, and add fixtures without
any extra cost.
[1/3] Let scsi_cmnd->cmnd use request->cmd buffer
Here I let scsi_cmnd->cmnd point to the space allocated by
request->cmd, instead of copying the data. The scsi_cmnd->cmd_len
is guaranteed to contain the right length of the command.
I have tried to go over every single place in the kernel that uses
scsi_cmnd->cmnd and make sure it looks sane. Surprisingly to me,
that was not at all bad. I hope I did not miss anything.
I've tested on an x86_64 machine booting from a sata disk and
ran the iscsi regression tests as well as my bidi and varlen tests
on top of the complete patchset and all tests passed.
[2/3] block layer varlen-cd
Here I added an option to use a user supplied buffer for an arbitrary
large command. Buffer must be kept valid until execution of request
ends. The pointer to the buffer shares it's space with the fixed
length command, so the size of struct request does not change.
[3/3] scsi: varlen extended and vendor-specific cdbs
Adds support for variable length, extended, and vendor-specific
cdbs at the scsi mid-layer.
Bart:
If you need this infrastructure see second patch for an easy to use
inline accessors on struct request. If you then need to use them in
a scsi LLD, thats easy same as before only cmd_len will be bigger then 16.
If you need to use them in a block LLD. You need to use the accessors and
an extra if() statement. See 3rd patch on how scsi_lib.c uses it.
Boaz
next prev parent reply other threads:[~2008-02-10 18:59 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-09 19:32 Current git --> kaboom [bisect] seems IDE related Sebastian Siewior
2008-02-09 20:28 ` Bartlomiej Zolnierkiewicz
2008-02-09 21:22 ` Sebastian Siewior
2008-02-09 23:06 ` Bartlomiej Zolnierkiewicz
2008-02-10 5:26 ` Christoph Hellwig
2008-02-10 13:38 ` Bartlomiej Zolnierkiewicz
2008-02-10 14:19 ` James Bottomley
2008-02-10 18:32 ` Bartlomiej Zolnierkiewicz
2008-02-10 19:51 ` Sebastian Siewior
2008-02-10 23:16 ` Bartlomiej Zolnierkiewicz
2008-02-11 16:30 ` Sergei Shtylyov
2008-02-11 19:41 ` Bartlomiej Zolnierkiewicz
2008-02-10 14:43 ` Christoph Hellwig
2008-02-10 15:07 ` Boaz Harrosh
2008-02-10 18:59 ` Boaz Harrosh [this message]
2008-02-10 19:05 ` Subject: [PATCH 1/3] Let scsi_cmnd->cmnd use request->cmd buffer Boaz Harrosh
2008-02-12 17:45 ` Christoph Hellwig
2008-02-12 18:10 ` Boaz Harrosh
2008-02-12 19:41 ` James Bottomley
2008-02-13 9:24 ` Boaz Harrosh
2008-02-10 19:09 ` [PATCH 2/3] block layer varlen-cdb Boaz Harrosh
2008-02-12 17:48 ` Christoph Hellwig
2008-02-12 17:54 ` Boaz Harrosh
2008-02-12 18:07 ` Boaz Harrosh
2008-02-10 19:12 ` [PATCH 3/3] scsi: varlen extended and vendor-specific cdbs Boaz Harrosh
2008-02-12 17:51 ` Christoph Hellwig
2008-02-12 18:17 ` Boaz Harrosh
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=47AF4974.9010200@panasas.com \
--to=bharrosh@panasas.com \
--cc=James.Bottomley@hansenpartnership.com \
--cc=bzolnier@gmail.com \
--cc=hch@infradead.org \
--cc=htejun@gmail.com \
--cc=ide+bug@ml.breakpoint.cc \
--cc=jens.axboe@oracle.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=sshtylyov@ru.mvista.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).