From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
To: jens.axboe@oracle.com, bzolnier@gmail.com
Cc: fujita.tomonori@lab.ntt.co.jp, linux-scsi@vger.kernel.org,
linux-ide@vger.kernel.org, bharrosh@panasas.com,
James.Bottomley@hansenpartnership.com, agk@redhat.com,
Geert.Uytterhoeven@sonycom.com
Subject: Re: [PATCH 0/6] add large command support to the block layer
Date: Tue, 29 Apr 2008 21:32:33 +0900 [thread overview]
Message-ID: <20080429213325P.tomof@acm.org> (raw)
In-Reply-To: <58cb370e0804290455m3892d5efi6ab293075f8277ca@mail.gmail.com>
On Tue, 29 Apr 2008 13:55:13 +0200
"Bartlomiej Zolnierkiewicz" <bzolnier@gmail.com> wrote:
> On Tue, Apr 29, 2008 at 9:54 AM, Jens Axboe <jens.axboe@oracle.com> wrote:
> >
> > On Sat, Apr 26 2008, FUJITA Tomonori wrote:
> > > This is an updated patchset for large command support to the block
> > > layer:
> > >
> > > http://marc.info/?l=linux-scsi&m=120817127118449&w=2
> > >
> > > 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. In short, rq_init() does
> > >
> > > rq->cmd = rq->__cmd;
> > >
> > > So we can access to rq->cmd and rq->cmd_len as before.
> > >
> > > This change requires everyone to initialize the request in a proper
> > > way (that is, just doing a memset() will not work). Now we have
> > > rq_init() that works for any path so this patchset can cleanly convert
> > > users of requests on the stack or kmalloced requests to use it (the
> > > previous patchset does it in a hacky way):
> > >
> > > http://marc.info/?l=linux-scsi&m=120911792725876&w=2
> > >
> > > This patchset is against Jens' for-linus branch.
> > >
> > > #1-#4 patches can be applied via Jens' tree now. #5 patch is for
> > > IDE. It cleanly can be applied to both Bart's latest quilt tree and
> > > Jens' tree though Bart's quilt tree has some pending IDE patches. #4
> > > patch depends on #4. #6 patch depends on #1-#5.
> > >
> > > I guess that the easiest way to apply this patchset would be:
> > >
> > > 1. Pushing Bart's quilt tree to mainline.
> > > 2. Rebasing Jens' tree to mainline.
> > > 3. Pushing this patchset via Jens' tree.
> > >
> > > Jens and Bart, let me know if I can do something to make the process
> > > easier.
> > >
> > > Bart, I will try to push the patchset to remove the requests on the
> > > stack for 2.6.27:
> > >
> > > http://marc.info/?l=linux-ide&m=120882410712466&w=2
> >
> > I've applied all patches to the for-linus branch, it should go up
> > soonish. If anyone has problems with this, please holler SOON.
>
> Fine with me (patches look good and survived quick testing).
Thanks,
> My only concern is that the final series from Tomo lacked
>
> "block: replace sizeof(rq->cmd) with BLK_MAX_CDB"
>
> and it is also not in for-linus branch (it has to be merged
> before "block: add large command support" patch or ide-cd
> will break).
Sorry, somehow I forgot to put it in the patchset. Yeah, probabaly
initializing only 4 (or 8) bytes in rq->cmd would not work for ide-cd.
Jens, please put this to the for-linus branch.
==
From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Subject: [PATCH] block: replace sizeof(rq->cmd) with BLK_MAX_CDB
This is a preparation for changing rq->cmd from the static array to a
pointer.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: Boaz Harrosh <bharrosh@panasas.com>
Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Cc: Jens Axboe <jens.axboe@oracle.com>
---
block/blk-core.c | 2 +-
drivers/ide/ide-cd.c | 4 ++--
drivers/ide/ide-cd_verbose.c | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/block/blk-core.c b/block/blk-core.c
index 35ae1c0..abe5b9f 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -174,7 +174,7 @@ void blk_dump_rq_flags(struct request *rq, char *msg)
if (blk_pc_request(rq)) {
printk(KERN_INFO " cdb: ");
- for (bit = 0; bit < sizeof(rq->cmd); bit++)
+ for (bit = 0; bit < BLK_MAX_CDB; bit++)
printk("%02x ", rq->cmd[bit]);
printk("\n");
}
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index fe9df38..68e7f19 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -782,7 +782,7 @@ static ide_startstop_t cdrom_start_seek_continuation(ide_drive_t *drive)
sector_div(frame, queue_hardsect_size(drive->queue) >> SECTOR_BITS);
- memset(rq->cmd, 0, sizeof(rq->cmd));
+ memset(rq->cmd, 0, BLK_MAX_CDB);
rq->cmd[0] = GPCMD_SEEK;
put_unaligned(cpu_to_be32(frame), (unsigned int *) &rq->cmd[2]);
@@ -1694,7 +1694,7 @@ static int ide_cdrom_prep_fs(struct request_queue *q, struct request *rq)
long block = (long)rq->hard_sector / (hard_sect >> 9);
unsigned long blocks = rq->hard_nr_sectors / (hard_sect >> 9);
- memset(rq->cmd, 0, sizeof(rq->cmd));
+ memset(rq->cmd, 0, BLK_MAX_CDB);
if (rq_data_dir(rq) == READ)
rq->cmd[0] = GPCMD_READ_10;
diff --git a/drivers/ide/ide-cd_verbose.c b/drivers/ide/ide-cd_verbose.c
index 6ed7ca0..6490a2d 100644
--- a/drivers/ide/ide-cd_verbose.c
+++ b/drivers/ide/ide-cd_verbose.c
@@ -326,7 +326,7 @@ void ide_cd_log_error(const char *name, struct request *failed_command,
printk(KERN_ERR " The failed \"%s\" packet command "
"was: \n \"", s);
- for (i = 0; i < sizeof(failed_command->cmd); i++)
+ for (i = 0; i < BLK_MAX_CDB; i++)
printk(KERN_CONT "%02x ", failed_command->cmd[i]);
printk(KERN_CONT "\"\n");
}
--
1.5.4.2
next prev parent reply other threads:[~2008-04-29 12:32 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-25 16:23 [PATCH 0/6] add large command support to the block layer FUJITA Tomonori
2008-04-25 16:40 ` [PATCH 1/6] block: no need to initialize rq->cmd in prepare_flush_fn hook FUJITA Tomonori
2008-04-25 16:23 ` [PATCH 2/6] block: no need to initialize rq->cmd with blk_get_request FUJITA Tomonori
2008-04-25 16:23 ` [PATCH 3/6] block: rename and export rq_init() FUJITA Tomonori
2008-04-25 16:23 ` [PATCH 4/6] block: use blk_rq_init() to initialize the request FUJITA Tomonori
2008-04-25 16:23 ` [PATCH 5/6] ide: " FUJITA Tomonori
2008-04-25 16:23 ` [PATCH 6/6] block: add large command support FUJITA Tomonori
2008-04-27 11:43 ` Boaz Harrosh
2008-04-27 11:42 ` [PATCH 5/6] ide: use blk_rq_init() to initialize the request Boaz Harrosh
2008-04-27 11:41 ` [PATCH 4/6] block: " Boaz Harrosh
2008-04-27 11:41 ` [PATCH 3/6] block: rename and export rq_init() Boaz Harrosh
2008-04-25 16:45 ` [dm-devel] [PATCH 2/6] block: no need to initialize rq->cmd with blk_get_request James Bottomley
2008-04-25 16:54 ` FUJITA Tomonori
2008-04-25 16:59 ` James Bottomley
2008-04-25 18:35 ` FUJITA Tomonori
2008-04-29 7:54 ` [PATCH 0/6] add large command support to the block layer Jens Axboe
2008-04-29 11:55 ` Bartlomiej Zolnierkiewicz
2008-04-29 12:32 ` FUJITA Tomonori [this message]
2008-04-29 12:37 ` Jens Axboe
2008-04-29 12:45 ` FUJITA Tomonori
2008-04-29 12:46 ` Jens Axboe
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=20080429213325P.tomof@acm.org \
--to=fujita.tomonori@lab.ntt.co.jp \
--cc=Geert.Uytterhoeven@sonycom.com \
--cc=James.Bottomley@hansenpartnership.com \
--cc=agk@redhat.com \
--cc=bharrosh@panasas.com \
--cc=bzolnier@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.