From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
To: jens.axboe@oracle.com
Cc: fujita.tomonori@lab.ntt.co.jp, linux-scsi@vger.kernel.org,
bharrosh@panasas.com, linux-ide@vger.kernel.org
Subject: Re: [PATCH 4/4] block: add large command support
Date: Mon, 14 Apr 2008 21:08:32 +0900 [thread overview]
Message-ID: <20080414210826Y.tomof@acm.org> (raw)
In-Reply-To: <20080414112919.GF12774@kernel.dk>
On Mon, 14 Apr 2008 13:29:20 +0200
Jens Axboe <jens.axboe@oracle.com> wrote:
> On Mon, Apr 14 2008, FUJITA Tomonori wrote:
> > This patch changes rq->cmd from the static array to a pointer to
> > support large commands.
> >
> > We rarely handle large commands. So for optimization, a struct request
> > still has a static array for a command. rq_init sets rq->cmd pointer
> > to the static array.
> >
> > Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> > Cc: Jens Axboe <jens.axboe@oracle.com>
> > ---
> > block/blk-core.c | 1 +
> > drivers/ide/ide-io.c | 1 +
> > include/linux/blkdev.h | 12 ++++++++++--
> > 3 files changed, 12 insertions(+), 2 deletions(-)
> >
> > diff --git a/block/blk-core.c b/block/blk-core.c
> > index 6669238..6f0968f 100644
> > --- a/block/blk-core.c
> > +++ b/block/blk-core.c
> > @@ -132,6 +132,7 @@ void rq_init(struct request_queue *q, struct request *rq)
> > rq->errors = 0;
> > rq->ref_count = 1;
> > rq->cmd_len = 0;
> > + rq->cmd = rq->__cmd;
> > memset(rq->cmd, 0, BLK_MAX_CDB);
> > rq->data_len = 0;
> > rq->extra_len = 0;
> > diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
> > index 7153796..bac5ea1 100644
> > --- a/drivers/ide/ide-io.c
> > +++ b/drivers/ide/ide-io.c
> > @@ -1595,6 +1595,7 @@ void ide_init_drive_cmd (struct request *rq)
> > {
> > memset(rq, 0, sizeof(*rq));
> > rq->ref_count = 1;
> > + rq->cmd = rq->__cmd;
> > }
> >
> > EXPORT_SYMBOL(ide_init_drive_cmd);
> > diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
> > index b3a58ad..5710ae4 100644
> > --- a/include/linux/blkdev.h
> > +++ b/include/linux/blkdev.h
> > @@ -215,8 +215,9 @@ struct request {
> > /*
> > * when request is used as a packet command carrier
> > */
> > - unsigned int cmd_len;
> > - unsigned char cmd[BLK_MAX_CDB];
> > + unsigned short cmd_len;
> > + unsigned char __cmd[BLK_MAX_CDB];
> > + unsigned char *cmd;
> >
> > unsigned int data_len;
> > unsigned int extra_len; /* length of alignment and padding */
> > @@ -812,6 +813,13 @@ static inline void put_dev_sector(Sector p)
> > page_cache_release(p.v);
> > }
> >
> > +static inline void rq_set_cmd(struct request *rq, unsigned char *cmd,
> > + unsigned short cmd_len)
> > +{
> > + rq->cmd = cmd;
> > + rq->cmd_len = cmd_len;
> > +}
> > +
>
> This is 100% identical to what I suggested be done instead, so of course
> I agree with this.
Yeah, I think that it's the most straightforward. We have one value to
represent one item, the length of command. We can access to rq->cmd
and rq->cmd_len as before.
I don't see how it's is dangerous to have a single value to represent
the length of command though changing rq->cmd from the static array to
a pointer to support large commands is tricky. It's possible that I
overlooked something that uses the block layer in an uncommon way as
ide does.
next prev parent reply other threads:[~2008-04-14 12:08 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-25 16:21 [PATCHSET 0/3] Is it time for varlen extended and vendor-specific cdbs Boaz Harrosh
2008-03-25 16:22 ` [PATCH] Let scsi_cmnd->cmnd use request->cmd buffer Boaz Harrosh
2008-03-25 16:32 ` [PATCH 2/3] block layer varlen-cdb Boaz Harrosh
2008-04-03 16:43 ` James Bottomley
2008-04-03 17:26 ` Benny Halevy
2008-04-03 18:32 ` [PATCH 2/3 ver2] block layer extended-cdb support Boaz Harrosh
2008-04-04 11:46 ` Jens Axboe
2008-04-06 9:35 ` Boaz Harrosh
2008-04-06 11:05 ` Boaz Harrosh
2008-04-07 8:31 ` Jens Axboe
2008-04-12 5:52 ` FUJITA Tomonori
2008-04-13 9:13 ` Boaz Harrosh
2008-04-13 16:17 ` FUJITA Tomonori
2008-04-13 16:50 ` Boaz Harrosh
2008-04-14 9:49 ` [PATCH 2/3 ver3] " Boaz Harrosh
2008-04-14 11:04 ` FUJITA Tomonori
2008-04-14 11:28 ` Boaz Harrosh
2008-04-14 12:08 ` FUJITA Tomonori
2008-04-14 12:22 ` Boaz Harrosh
2008-04-14 11:04 ` [PATCH 2/3 ver2] " FUJITA Tomonori
2008-04-14 10:50 ` [PATCH 0/4] add large command support to the block layer FUJITA Tomonori
2008-04-14 10:50 ` [PATCH 1/4] block: no need to initialize rq->cmd in prepare_flush_fn hook FUJITA Tomonori
2008-04-14 10:50 ` [PATCH 2/4] block: no need to initialize rq->cmd with blk_get_request FUJITA Tomonori
2008-04-14 10:50 ` [PATCH 3/4] block: replace sizeof(rq->cmd) with BLK_MAX_CDB FUJITA Tomonori
2008-04-14 10:50 ` [PATCH 4/4] block: add large command support FUJITA Tomonori
2008-04-14 11:29 ` Jens Axboe
2008-04-14 12:08 ` FUJITA Tomonori [this message]
2008-04-15 22:50 ` Bartlomiej Zolnierkiewicz
2008-04-15 22:57 ` FUJITA Tomonori
2008-04-16 0:22 ` Bartlomiej Zolnierkiewicz
2008-04-16 8:33 ` Jens Axboe
2008-04-16 9:08 ` Boaz Harrosh
2008-04-16 9:42 ` Jens Axboe
2008-04-16 22:28 ` Bartlomiej Zolnierkiewicz
2008-04-17 3:59 ` FUJITA Tomonori
2008-04-17 7:07 ` Jens Axboe
2008-04-17 11:55 ` Bartlomiej Zolnierkiewicz
2008-04-17 11:58 ` Bartlomiej Zolnierkiewicz
2008-04-17 12:07 ` FUJITA Tomonori
2008-04-17 4:02 ` FUJITA Tomonori
2008-04-14 14:41 ` Pete Wyckoff
2008-04-14 22:33 ` FUJITA Tomonori
2008-04-15 13:44 ` Pete Wyckoff
2008-04-15 7:45 ` Boaz Harrosh
2008-04-15 10:05 ` FUJITA Tomonori
2008-04-15 7:29 ` Jens Axboe
2008-04-14 11:21 ` [PATCH 0/4] add large command support to the block layer FUJITA Tomonori
2008-04-14 11:38 ` Boaz Harrosh
2008-04-14 12:36 ` Boaz Harrosh
2008-04-14 13:06 ` FUJITA Tomonori
2008-04-15 12:24 ` [PATCH 0/3] scsi: variable-length CDBs support Boaz Harrosh
2008-04-15 12:30 ` [PATCH 1/3] Let scsi_cmnd->cmnd use request->cmd buffer Boaz Harrosh
2008-04-15 12:34 ` [PATCH 2/3] scsi: varlen extended and vendor-specific cdbs Boaz Harrosh
2008-04-16 2:09 ` FUJITA Tomonori
2008-04-16 6:40 ` Boaz Harrosh
2008-04-16 6:49 ` [PATCH 2/3 ver2] " Boaz Harrosh
2008-04-17 4:01 ` [PATCH 2/3] " FUJITA Tomonori
2008-04-17 12:25 ` [PATCH 2/3 ver3] " Boaz Harrosh
2008-04-17 12:49 ` Boaz Harrosh
2008-04-17 13:04 ` FUJITA Tomonori
2008-04-17 13:29 ` Boaz Harrosh
2008-04-15 12:37 ` [PATCH 3/3] iscsi_tcp: Enable large commands Boaz Harrosh
2008-04-15 13:08 ` James Smart
2008-04-15 13:38 ` Boaz Harrosh
2008-04-15 13:57 ` Benny Halevy
2008-04-15 13:46 ` FUJITA Tomonori
2008-04-13 14:07 ` [PATCH 2/3 ver2] block layer extended-cdb support James Bottomley
2008-04-13 16:17 ` FUJITA Tomonori
2008-03-25 16:36 ` [PATCH 3/3] scsi: varlen extended and vendor-specific cdbs Boaz Harrosh
2008-04-03 16:07 ` [PATCHSET 0/3] Is it time for " Boaz Harrosh
2008-04-13 16:30 ` [PATCHSET 0/4 ver2] " Boaz Harrosh
2008-04-13 16:37 ` [PATCH 1/4] Let scsi_cmnd->cmnd use request->cmd buffer Boaz Harrosh
2008-04-13 16:39 ` [PATCH 2/4] block layer extended-cdb support Boaz Harrosh
2008-04-13 16:39 ` [PATCH 3/4] scsi: varlen extended and vendor-specific cdbs Boaz Harrosh
2008-04-13 16:41 ` [PATCH 4/4] iscsi_tcp: Enable large command Boaz Harrosh
2008-04-18 17:11 ` Mike Christie
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=20080414210826Y.tomof@acm.org \
--to=fujita.tomonori@lab.ntt.co.jp \
--cc=bharrosh@panasas.com \
--cc=jens.axboe@oracle.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
/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).