* On patch "Let scsi_cmnd->cmnd use request->cmd buffer" @ 2008-05-03 23:30 Stefan Richter 2008-05-04 12:15 ` Boaz Harrosh 0 siblings, 1 reply; 8+ messages in thread From: Stefan Richter @ 2008-05-03 23:30 UTC (permalink / raw) To: Boaz Harrosh; +Cc: linux-scsi Commit 64a87b244b9297667ca80264aab849a36f494884 contains: -------------------------- drivers/firewire/fw-sbp2.c -------------------------- index 2a99937..dda82f3 100644 @@ -1487,7 +1487,7 @@ static int sbp2_scsi_queuecommand(struct scsi_cmnd *cmd, scsi_done_fn_t done) if (scsi_sg_count(cmd) && sbp2_map_scatterlist(orb, device, lu) < 0) goto out; - memcpy(orb->request.command_block, cmd->cmnd, COMMAND_SIZE(*cmd->cmnd)); + memcpy(orb->request.command_block, cmd->cmnd, cmd->cmd_len); orb->base.callback = complete_command_orb; orb->base.request_bus = Should drivers/ieee1394/sbp2.c::sbp2_create_command_orb() be changed in the same way? -- Stefan Richter -=====-==--- -=-= --=-- http://arcgraph.de/sr/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: On patch "Let scsi_cmnd->cmnd use request->cmd buffer" 2008-05-03 23:30 On patch "Let scsi_cmnd->cmnd use request->cmd buffer" Stefan Richter @ 2008-05-04 12:15 ` Boaz Harrosh 2008-05-04 12:44 ` Stefan Richter 0 siblings, 1 reply; 8+ messages in thread From: Boaz Harrosh @ 2008-05-04 12:15 UTC (permalink / raw) To: Stefan Richter; +Cc: linux-scsi Stefan Richter wrote: > Commit 64a87b244b9297667ca80264aab849a36f494884 contains: > -------------------------- drivers/firewire/fw-sbp2.c -------------------------- > index 2a99937..dda82f3 100644 > @@ -1487,7 +1487,7 @@ static int sbp2_scsi_queuecommand(struct scsi_cmnd *cmd, scsi_done_fn_t done) > if (scsi_sg_count(cmd) && sbp2_map_scatterlist(orb, device, lu) < 0) > goto out; > > - memcpy(orb->request.command_block, cmd->cmnd, COMMAND_SIZE(*cmd->cmnd)); > + memcpy(orb->request.command_block, cmd->cmnd, cmd->cmd_len); > > orb->base.callback = complete_command_orb; > orb->base.request_bus = > > > Should drivers/ieee1394/sbp2.c::sbp2_create_command_orb() be changed in > the same way? > Sorry to have missed it. Yes it is best if it is changed. cmd->cmd_len is now guarantied to be set properly at all cases. And some commands you want to support will not be set correctly by COMMAND_SIZE(). do you want me to do it? Boaz ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: On patch "Let scsi_cmnd->cmnd use request->cmd buffer" 2008-05-04 12:15 ` Boaz Harrosh @ 2008-05-04 12:44 ` Stefan Richter 2008-05-04 13:01 ` Stefan Richter 0 siblings, 1 reply; 8+ messages in thread From: Stefan Richter @ 2008-05-04 12:44 UTC (permalink / raw) To: linux1394-devel; +Cc: linux-scsi, Boaz Harrosh From: Stefan Richter <stefanr@s5r6.in-berlin.de> Subject: ieee1394: sbp2: use correct size of command descriptor block Boaz Harrosh wrote: > cmd->cmd_len is now guarantied to be set properly at all cases. > And some commands you want to support will not be set correctly > by COMMAND_SIZE(). Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> --- drivers/ieee1394/sbp2.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) Index: linux/drivers/ieee1394/sbp2.c =================================================================== --- linux.orig/drivers/ieee1394/sbp2.c +++ linux/drivers/ieee1394/sbp2.c @@ -1539,15 +1539,13 @@ static void sbp2_prep_command_orb_sg(str static void sbp2_create_command_orb(struct sbp2_lu *lu, struct sbp2_command_info *cmd, - unchar *scsi_cmd, - unsigned int scsi_use_sg, - unsigned int scsi_request_bufflen, - struct scatterlist *sg, - enum dma_data_direction dma_dir) + struct scsi_cmnd *SCpnt) { struct sbp2_fwhost_info *hi = lu->hi; struct sbp2_command_orb *orb = &cmd->command_orb; u32 orb_direction; + unsigned int scsi_request_bufflen = scsi_bufflen(SCpnt); + enum dma_data_direction dma_dir = SCpnt->sc_data_direction; /* * Set-up our command ORB. @@ -1580,13 +1578,14 @@ static void sbp2_create_command_orb(stru orb->data_descriptor_lo = 0x0; orb->misc |= ORB_SET_DIRECTION(1); } else - sbp2_prep_command_orb_sg(orb, hi, cmd, scsi_use_sg, sg, + sbp2_prep_command_orb_sg(orb, hi, cmd, scsi_sg_count(SCpnt), + scsi_sglist(SCpnt), orb_direction, dma_dir); sbp2util_cpu_to_be32_buffer(orb, sizeof(*orb)); memset(orb->cdb, 0, 12); - memcpy(orb->cdb, scsi_cmd, COMMAND_SIZE(*scsi_cmd)); + memcpy(orb->cdb, SCpnt->cmnd, SCpnt->cmd_len); } static void sbp2_link_orb_command(struct sbp2_lu *lu, @@ -1669,16 +1668,13 @@ static void sbp2_link_orb_command(struct static int sbp2_send_command(struct sbp2_lu *lu, struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *)) { - unchar *scsi_cmd = (unchar *)SCpnt->cmnd; struct sbp2_command_info *cmd; cmd = sbp2util_allocate_command_orb(lu, SCpnt, done); if (!cmd) return -EIO; - sbp2_create_command_orb(lu, cmd, scsi_cmd, scsi_sg_count(SCpnt), - scsi_bufflen(SCpnt), scsi_sglist(SCpnt), - SCpnt->sc_data_direction); + sbp2_create_command_orb(lu, cmd, SCpnt); sbp2_link_orb_command(lu, cmd); return 0; -- Stefan Richter -=====-==--- -=-= --=-- http://arcgraph.de/sr/ ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: On patch "Let scsi_cmnd->cmnd use request->cmd buffer" 2008-05-04 12:44 ` Stefan Richter @ 2008-05-04 13:01 ` Stefan Richter 2008-05-04 13:36 ` Boaz Harrosh 0 siblings, 1 reply; 8+ messages in thread From: Stefan Richter @ 2008-05-04 13:01 UTC (permalink / raw) To: linux1394-devel; +Cc: linux-scsi, Boaz Harrosh On 4 May, Stefan Richter wrote: > Boaz Harrosh wrote: >> cmd->cmd_len is now guarantied to be set properly at all cases. >> And some commands you want to support will not be set correctly >> by COMMAND_SIZE(). ... > --- linux.orig/drivers/ieee1394/sbp2.c > +++ linux/drivers/ieee1394/sbp2.c ... > memset(orb->cdb, 0, 12); > - memcpy(orb->cdb, scsi_cmd, COMMAND_SIZE(*scsi_cmd)); > + memcpy(orb->cdb, SCpnt->cmnd, SCpnt->cmd_len); ... Wait a minute... drivers/ieee1394/sbp2.[ch] and drivers/firewire/fw-sbp2.c hardwire the maximum size of the command descriptor block (command_block field in the command block ORB as per SBP-2 clause 5.1.2) to 12 bytes. We need to use BLK_MAX_CDB there, don't we? (Besides, we should keep an eye on unit_characteristics.ORB_size as per SBP-2 clause 7.4.8, but that's another story.) -- Stefan Richter -=====-==--- -=-= --=-- http://arcgraph.de/sr/ ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: On patch "Let scsi_cmnd->cmnd use request->cmd buffer" 2008-05-04 13:01 ` Stefan Richter @ 2008-05-04 13:36 ` Boaz Harrosh 2008-05-04 13:46 ` Boaz Harrosh 2008-05-04 14:54 ` Stefan Richter 0 siblings, 2 replies; 8+ messages in thread From: Boaz Harrosh @ 2008-05-04 13:36 UTC (permalink / raw) To: Stefan Richter; +Cc: linux1394-devel, linux-scsi Stefan Richter wrote: > On 4 May, Stefan Richter wrote: >> Boaz Harrosh wrote: >>> cmd->cmd_len is now guarantied to be set properly at all cases. >>> And some commands you want to support will not be set correctly >>> by COMMAND_SIZE(). > ... >> --- linux.orig/drivers/ieee1394/sbp2.c >> +++ linux/drivers/ieee1394/sbp2.c > ... >> memset(orb->cdb, 0, 12); if you are at it? - memset(orb->cdb, 0, 12); + memset(orb->cdb, 0, sizeof(orb->cdb)); >> - memcpy(orb->cdb, scsi_cmd, COMMAND_SIZE(*scsi_cmd)); >> + memcpy(orb->cdb, SCpnt->cmnd, SCpnt->cmd_len); > ... > > Wait a minute... > > drivers/ieee1394/sbp2.[ch] and drivers/firewire/fw-sbp2.c hardwire the > maximum size of the command descriptor block (command_block field in the > command block ORB as per SBP-2 clause 5.1.2) to 12 bytes. > > We need to use BLK_MAX_CDB there, don't we? > > (Besides, we should keep an eye on unit_characteristics.ORB_size as per > SBP-2 clause 7.4.8, but that's another story.) I'm not sure what you mean. But orb->cdb is 12 bytes, and setting max_cmd_len in host template insures midlayer will never send a command bigger then that. So ->cmd_len will never be bigger then host->max_cmd_len. BLK_MAX_CDB should not be used here. But I don't see .max_cmd_len set in this file, is it set elsewhere? Boaz ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: On patch "Let scsi_cmnd->cmnd use request->cmd buffer" 2008-05-04 13:36 ` Boaz Harrosh @ 2008-05-04 13:46 ` Boaz Harrosh 2008-05-04 14:50 ` Stefan Richter 2008-05-04 14:54 ` Stefan Richter 1 sibling, 1 reply; 8+ messages in thread From: Boaz Harrosh @ 2008-05-04 13:46 UTC (permalink / raw) To: Stefan Richter; +Cc: linux1394-devel, linux-scsi Boaz Harrosh wrote: > Stefan Richter wrote: >> On 4 May, Stefan Richter wrote: >>> Boaz Harrosh wrote: >>>> cmd->cmd_len is now guarantied to be set properly at all cases. >>>> And some commands you want to support will not be set correctly >>>> by COMMAND_SIZE(). >> ... >>> --- linux.orig/drivers/ieee1394/sbp2.c >>> +++ linux/drivers/ieee1394/sbp2.c >> ... >>> memset(orb->cdb, 0, 12); > > if you are at it? > - memset(orb->cdb, 0, 12); > + memset(orb->cdb, 0, sizeof(orb->cdb)); > >>> - memcpy(orb->cdb, scsi_cmd, COMMAND_SIZE(*scsi_cmd)); >>> + memcpy(orb->cdb, SCpnt->cmnd, SCpnt->cmd_len); >> ... >> >> Wait a minute... >> >> drivers/ieee1394/sbp2.[ch] and drivers/firewire/fw-sbp2.c hardwire the >> maximum size of the command descriptor block (command_block field in the >> command block ORB as per SBP-2 clause 5.1.2) to 12 bytes. >> >> We need to use BLK_MAX_CDB there, don't we? >> >> (Besides, we should keep an eye on unit_characteristics.ORB_size as per >> SBP-2 clause 7.4.8, but that's another story.) > > I'm not sure what you mean. But orb->cdb is 12 bytes, and setting > max_cmd_len in > host template insures midlayer will never send a command bigger then > that. So > ->cmd_len will never be bigger then host->max_cmd_len. BLK_MAX_CDB > should not > be used here. > > But I don't see .max_cmd_len set in this file, is it set elsewhere? > > Boaz Oops sorry its fine not to set .max_cmd_len. If not set the midlayer will assume 12. So the code you sent is fine as is. Boaz ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: On patch "Let scsi_cmnd->cmnd use request->cmd buffer" 2008-05-04 13:46 ` Boaz Harrosh @ 2008-05-04 14:50 ` Stefan Richter 0 siblings, 0 replies; 8+ messages in thread From: Stefan Richter @ 2008-05-04 14:50 UTC (permalink / raw) To: Boaz Harrosh; +Cc: linux1394-devel, linux-scsi Boaz Harrosh wrote: > its fine not to set .max_cmd_len. If not set the midlayer will > assume 12. So the code you sent is fine as is. Ah right, it's explained in scsi_host.h. Thanks. -- Stefan Richter -=====-==--- -=-= --=-- http://arcgraph.de/sr/ ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: On patch "Let scsi_cmnd->cmnd use request->cmd buffer" 2008-05-04 13:36 ` Boaz Harrosh 2008-05-04 13:46 ` Boaz Harrosh @ 2008-05-04 14:54 ` Stefan Richter 1 sibling, 0 replies; 8+ messages in thread From: Stefan Richter @ 2008-05-04 14:54 UTC (permalink / raw) To: Boaz Harrosh; +Cc: linux1394-devel, linux-scsi Boaz Harrosh wrote: > Stefan Richter wrote: >>> --- linux.orig/drivers/ieee1394/sbp2.c >>> +++ linux/drivers/ieee1394/sbp2.c >> ... >>> memset(orb->cdb, 0, 12); > > if you are at it? > - memset(orb->cdb, 0, 12); > + memset(orb->cdb, 0, sizeof(orb->cdb)); Right, I'll do that. -- Stefan Richter -=====-==--- -=-= --=-- http://arcgraph.de/sr/ ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2008-05-04 14:54 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-05-03 23:30 On patch "Let scsi_cmnd->cmnd use request->cmd buffer" Stefan Richter 2008-05-04 12:15 ` Boaz Harrosh 2008-05-04 12:44 ` Stefan Richter 2008-05-04 13:01 ` Stefan Richter 2008-05-04 13:36 ` Boaz Harrosh 2008-05-04 13:46 ` Boaz Harrosh 2008-05-04 14:50 ` Stefan Richter 2008-05-04 14:54 ` Stefan Richter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox