Re: [PATCH] scsi: sd: stop SSD (non-rotational) disks before reboot

From: Simon Arlott
Date: Wed Jun 17 2020 - 15:40:37 EST


On 17/06/2020 20:19, Bart Van Assche wrote:
> On 2020-06-17 11:49, Simon Arlott wrote:
>> @@ -3576,9 +3582,19 @@ static void sd_shutdown(struct device *dev)
>> sd_sync_cache(sdkp, NULL);
>> }
>>
>> - if (system_state != SYSTEM_RESTART && sdkp->device->manage_start_stop) {
>> - sd_printk(KERN_NOTICE, sdkp, "Stopping disk\n");
>> - sd_start_stop_device(sdkp, 0);
>> + if (sdkp->device->manage_start_stop) {
>> + bool stop_disk = (system_state != SYSTEM_RESTART);
>> +
>> + if (stop_before_reboot > 1) { /* stop all disks */
>> + stop_disk = true;
>> + } else if (stop_before_reboot) { /* non-rotational only */
>> + stop_disk |= blk_queue_nonrot(sdkp->disk->queue);
>> + }
>> +
>> + if (stop_disk) {
>> + sd_printk(KERN_NOTICE, sdkp, "Stopping disk\n");
>> + sd_start_stop_device(sdkp, 0);
>> + }
>> }
>> }
>
> Is introduction of a new kernel module parameter essential?

It is system-dependent whether or not a reboot is going to result in a
loss of power, so it's required to be able to stop the HDDs too.

They're already always stopped on shutdown where power is definitely
going to be lost. I can't do that by default on a reboot because the
usual convention is that the power stays on during a reboot and it would
be expected that the HDDs keep spinning.

> Or in other
> words, has it been considered to apply the new behavior to all SSDs?

The default value is 1, so it does apply to all SSDs. I want to be able
to configure it to apply to HDDs too.

--
Simon Arlott