When a block device gets a request to read a range of sectors, and one of those sectors has a read failure, how does the driver signal to the kernel that a partial read is available, and that the specific sector number x failed?
I've skimmed the chapter in Linux Device Drivers on block devices, but didn't see it discussed.
[On a deeper level, how does the SCSI protocol implement such communication?]