From d2a83cf3764c20a689d69ee3221afb02835f33bd Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 30 Oct 2023 10:33:26 +0000 Subject: [PATCH] Revert "scsi: sd: Do not issue commands to suspended disks on shutdown" This reverts commit deacabef6834e7311e901b1924230af502244e02 which is commit 99398d2070ab03d13f90b758ad397e19a65fffb0 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 --- drivers/scsi/sd.c | 17 ++++------------- drivers/scsi/sd.h | 1 - 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 4c02aaf6a72d..e0efeed178d8 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -3646,8 +3646,7 @@ static int sd_remove(struct device *dev) device_del(&sdkp->disk_dev); del_gendisk(sdkp->disk); - if (!sdkp->suspended) - sd_shutdown(dev); + sd_shutdown(dev); put_disk(sdkp->disk); return 0; @@ -3778,9 +3777,6 @@ static int sd_suspend_common(struct device *dev, bool runtime) ret = 0; } - if (!ret) - sdkp->suspended = true; - return ret; } @@ -3800,26 +3796,21 @@ static int sd_suspend_runtime(struct device *dev) static int sd_resume(struct device *dev, bool runtime) { 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() */ return 0; - if (!sd_do_start_stop(sdkp->device, runtime)) { - sdkp->suspended = false; + if (!sd_do_start_stop(sdkp->device, runtime)) return 0; - } if (!sdkp->device->no_start_on_resume) { sd_printk(KERN_NOTICE, sdkp, "Starting disk\n"); ret = sd_start_stop_device(sdkp, 1); } - if (!ret) { + if (!ret) opal_unlock_from_suspend(sdkp->opal_dev); - sdkp->suspended = false; - } - return ret; } diff --git a/drivers/scsi/sd.h b/drivers/scsi/sd.h index 1e4238b8f2a5..9795398c83cf 100644 --- a/drivers/scsi/sd.h +++ b/drivers/scsi/sd.h @@ -131,7 +131,6 @@ struct scsi_disk { u8 provisioning_mode; u8 zeroing_mode; u8 nr_actuators; /* Number of actuators */ - bool suspended; /* Disk is suspended (stopped) */ unsigned ATO : 1; /* state of disk ATO bit */ unsigned cache_override : 1; /* temp override of WCE,RCD */ unsigned WCE : 1; /* state of disk WCE bit */