Re: [PATCH v10 17/18] scsi: ufs: Forbid auto-hibernation without I/O scheduler
From: Can Guo <hidden>
Date: 2023-08-21 07:13:25
Also in:
linux-scsi
On 8/19/2023 3:34 AM, Bart Van Assche wrote:
UFSHCI 3.0 controllers do not preserve the write order if auto-hibernation
is enabled. If the write order is not preserved, an I/O scheduler is
required to serialize zoned writes. Hence do not allow auto-hibernation
to be enabled without I/O scheduler if a zoned logical unit is present
and if the controller is operating in legacy mode. This patch has been
tested with the following shell script:
show_ah8() {
echo -n "auto_hibern8: "
adb shell "cat /sys/devices/platform/13200000.ufs/auto_hibern8"
}
set_ah8() {
local rc
adb shell "echo $1 > /sys/devices/platform/13200000.ufs/auto_hibern8"
rc=$?
show_ah8
return $rc
}
set_iosched() {
adb shell "echo $1 >/sys/class/block/$zoned_bdev/queue/scheduler &&
echo -n 'I/O scheduler: ' &&
cat /sys/class/block/sde/queue/scheduler"
}
adb root
zoned_bdev=$(adb shell grep -lvw 0 /sys/class/block/sd*/queue/chunk_sectors |&
sed 's|/sys/class/block/||g;s|/queue/chunk_sectors||g')
[ -n "$zoned_bdev" ]
show_ah8
set_ah8 0
set_iosched none
if set_ah8 150000; then
echo "Error: enabled AH8 without I/O scheduler"
fi
set_iosched mq-deadline
set_ah8 150000
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: Can Guo <redacted>
Cc: Avri Altman <avri.altman@wdc.com>
Cc: Bao D. Nguyen <redacted>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
drivers/ufs/core/ufshcd.c | 58 +++++++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)Reviewed-by: Can Guo <redacted>