On 11/6/2022 4:50 PM, Damien Le Moal wrote: > If a user issues a write command with the FUA bit set for a device with > NCQ support disabled (that is, the device queue depth was set to 1), the > LBA 48 command WRITE DMA FUA EXT must be used. However, > ata_build_rw_tf() ignores this and first tests if LBA 28 can be used > based on the write command sector and number of blocks. That is, for > small FUA writes at low LBAs, ata_rwcmd_protocol() will cause the write > to fail. > > Fix this by preventing the use of LBA 28 for any FUA write request. > > Given that the WRITE MULTI FUA EXT command is marked as obsolete iin the > ATA specification since ACS-3 (published in 2013), remove the > ATA_CMD_WRITE_MULTI_FUA_EXT command from the ata_rw_cmds array. > > Finally, since the block layer should never issue a FUA read > request, warn in ata_build_rw_tf() if we see such request. > > Signed-off-by: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> > Reviewed-by: Hannes Reinecke <hare@xxxxxxx> > --- Reviewed-by: Chaitanya Kulkarni <kch@xxxxxxxxxx> -ck