mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-07 22:08:33 -04:00
scsi: sd: Use separate buf for START_STOP in sd_spinup_disk()
We currently reuse the cmd buffer for the TUR and START_STOP commands which requires us to reset the buffer when retrying. This has us use separate buffers for the 2 commands so we can make them const and I think it makes it easier to handle for retries but does not add too much extra to the stack use. Signed-off-by: Mike Christie <michael.christie@oracle.com> Link: https://lore.kernel.org/r/20240123002220.129141-5-michael.christie@oracle.com Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: John Garry <john.g.garry@oracle.com> Reviewed-by: Martin Wilck <mwilck@suse.com> Acked-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
committed by
Martin K. Petersen
parent
987d7d3db0
commit
1008f5776f
@@ -2318,14 +2318,16 @@ sd_spinup_disk(struct scsi_disk *sdkp)
|
||||
* Issue command to spin up drive when not ready
|
||||
*/
|
||||
if (!spintime) {
|
||||
/* Return immediately and start spin cycle */
|
||||
const u8 start_cmd[10] = {
|
||||
[0] = START_STOP,
|
||||
[1] = 1,
|
||||
[4] = sdkp->device->start_stop_pwr_cond ?
|
||||
0x11 : 1,
|
||||
};
|
||||
|
||||
sd_printk(KERN_NOTICE, sdkp, "Spinning up disk...");
|
||||
cmd[0] = START_STOP;
|
||||
cmd[1] = 1; /* Return immediately */
|
||||
memset((void *) &cmd[2], 0, 8);
|
||||
cmd[4] = 1; /* Start spin cycle */
|
||||
if (sdkp->device->start_stop_pwr_cond)
|
||||
cmd[4] |= 1 << 4;
|
||||
scsi_execute_cmd(sdkp->device, cmd,
|
||||
scsi_execute_cmd(sdkp->device, start_cmd,
|
||||
REQ_OP_DRV_IN, NULL, 0,
|
||||
SD_TIMEOUT, sdkp->max_retries,
|
||||
&exec_args);
|
||||
|
||||
Reference in New Issue
Block a user