Revert "scsi: sd: Do not issue commands to suspended disks on shutdown"

This reverts commit deacabef68 which is
commit 99398d2070 upstream.

It breaks the Android ABI so revert it for now, if it is needed in the
future, it can be brought back in an ABI-safe way.

Bug: 161946584
Change-Id: I0134634ac6acd636d23f65d3f1bc4d3b57ff1206
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Greg Kroah-Hartman
2023-10-30 10:33:26 +00:00
parent 66a17692b1
commit d2a83cf376
2 changed files with 4 additions and 14 deletions

View File

@@ -3646,8 +3646,7 @@ static int sd_remove(struct device *dev)
device_del(&sdkp->disk_dev); device_del(&sdkp->disk_dev);
del_gendisk(sdkp->disk); del_gendisk(sdkp->disk);
if (!sdkp->suspended) sd_shutdown(dev);
sd_shutdown(dev);
put_disk(sdkp->disk); put_disk(sdkp->disk);
return 0; return 0;
@@ -3778,9 +3777,6 @@ static int sd_suspend_common(struct device *dev, bool runtime)
ret = 0; ret = 0;
} }
if (!ret)
sdkp->suspended = true;
return ret; return ret;
} }
@@ -3800,26 +3796,21 @@ static int sd_suspend_runtime(struct device *dev)
static int sd_resume(struct device *dev, bool runtime) static int sd_resume(struct device *dev, bool runtime)
{ {
struct scsi_disk *sdkp = dev_get_drvdata(dev); struct scsi_disk *sdkp = dev_get_drvdata(dev);
int ret = 0; int ret;
if (!sdkp) /* E.g.: runtime resume at the start of sd_probe() */ if (!sdkp) /* E.g.: runtime resume at the start of sd_probe() */
return 0; return 0;
if (!sd_do_start_stop(sdkp->device, runtime)) { if (!sd_do_start_stop(sdkp->device, runtime))
sdkp->suspended = false;
return 0; return 0;
}
if (!sdkp->device->no_start_on_resume) { if (!sdkp->device->no_start_on_resume) {
sd_printk(KERN_NOTICE, sdkp, "Starting disk\n"); sd_printk(KERN_NOTICE, sdkp, "Starting disk\n");
ret = sd_start_stop_device(sdkp, 1); ret = sd_start_stop_device(sdkp, 1);
} }
if (!ret) { if (!ret)
opal_unlock_from_suspend(sdkp->opal_dev); opal_unlock_from_suspend(sdkp->opal_dev);
sdkp->suspended = false;
}
return ret; return ret;
} }

View File

@@ -131,7 +131,6 @@ struct scsi_disk {
u8 provisioning_mode; u8 provisioning_mode;
u8 zeroing_mode; u8 zeroing_mode;
u8 nr_actuators; /* Number of actuators */ u8 nr_actuators; /* Number of actuators */
bool suspended; /* Disk is suspended (stopped) */
unsigned ATO : 1; /* state of disk ATO bit */ unsigned ATO : 1; /* state of disk ATO bit */
unsigned cache_override : 1; /* temp override of WCE,RCD */ unsigned cache_override : 1; /* temp override of WCE,RCD */
unsigned WCE : 1; /* state of disk WCE bit */ unsigned WCE : 1; /* state of disk WCE bit */