Re: [PATCH v2] block: Increase BLK_DEF_MAX_SECTORS_CAP
From: Damien Le Moal <dlemoal@kernel.org>
Date: 2025-08-27 08:04:41
On 8/27/25 4:52 PM, Sebastian Andrzej Siewior wrote:
On 2025-08-27 09:38:36 [+0200], Christoph Hellwig wrote:quoted
quoted
Did I forget to update firmware somewhere or is this "normal" and this device requires a quirk?Looks like it needs a quirk.Just wanted to make sure I did not forget to update firmware somewhere… It should be easy to fix this one the firmware's side (in case someone capable is reading this).quoted
Note that if the above commit triggered this for you, you could also reproduce it before by say doing a large direct I/O read.On a kernel without that commit in question? Booting Debian's current v6.12 and | dd if=vmlinux.o of=/dev/null bs=1G count=1 iflag=direct
Don't read a file. Read the disk directly. So please use "if=/dev/sdX". Also, there is no way that a 1GiB I/O will be done as a single large command. That is not going to happen. With 345c5091ffec reverted, what does: cat /sys/block/sdX/queue/max_sectors_kb cat /sys/block/sdX/queue/max_hw_sectors_kb say ? Likely, the first one is "1280". So before running dd, you need to do: echo 4096 > /sys/block/sdX/queue/max_sectors_kb and then dd if=/dev/sdX of=/dev/null bs=4M count=1 iflag=direct And you will likely trigger the issue, even with 345c5091ffec reverted. The issue is likely caused by a FW bug handling large commands. Please try.
works like a charm. According to strace it does | openat(AT_FDCWD, "vmlinux.o", O_RDONLY|O_DIRECT) = 3 | dup2(3, 0) = 0 | lseek(0, 0, SEEK_CUR) = 0 | read(0, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\1\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 1073741824) = 841980992 so it should be what you asked for. Asked for 1G, got ~800M. Sebastian
-- Damien Le Moal Western Digital Research