linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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



  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 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).