Change the default value of the fua module parameter to 1 to enable fua support by default for all devices supporting it. With this change, ata_dev_config_fua() will now set the flag ATA_DFLAG_FUA by default for devices that support FUA. This will cause ata_scsiop_mode_sense() to set the DPOFUA bit in the DEVICE-SPECIFIC PARAMETER field in the mode parameter header. The SCSI disk driver performs a MODE SENSE and looks at the DPOFUA bit, it then calls blk_queue_write_cache() with the value of the DPOFUA bit, to inform the block layer if FUA is supported or not. The block layer will not issue REQ_FUA requests if it has not been informed that the device actually support FUA. FUA support can be disabled for all drives or for individual drives using the force=[ID]nofua libata module argument. Signed-off-by: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> Reviewed-by: Hannes Reinecke <hare@xxxxxxx> Reviewed-by: Maciej S. Szmigiero <maciej.szmigiero@xxxxxxxxxx> Reviewed-by: Chaitanya Kulkarni <kch@xxxxxxxxxx> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@xxxxxxx> Reviewed-by: Niklas Cassel <niklas.cassel@xxxxxxx> --- drivers/ata/libata-core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 97ade977b830..2967671131d2 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -127,9 +127,9 @@ int atapi_passthru16 = 1; module_param(atapi_passthru16, int, 0444); MODULE_PARM_DESC(atapi_passthru16, "Enable ATA_16 passthru for ATAPI devices (0=off, 1=on [default])"); -int libata_fua = 0; +int libata_fua = 1; module_param_named(fua, libata_fua, int, 0444); -MODULE_PARM_DESC(fua, "FUA support (0=off [default], 1=on)"); +MODULE_PARM_DESC(fua, "FUA support (0=off, 1=on [default])"); static int ata_ignore_hpa; module_param_named(ignore_hpa, ata_ignore_hpa, int, 0644); -- 2.39.0