From: Niklas Cassel Date: Wed, 13 May 2026 08:10:01 +0000 (+0200) Subject: ata: libata-eh: queue hotplug work on the system_dfl_long_wq workqueue X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=28afe01eb75cf8e858b9eecebb0e2e7ee0ceb236;p=thirdparty%2Flinux.git ata: libata-eh: queue hotplug work on the system_dfl_long_wq workqueue ata_scsi_port_error_handler() uses schedule_delayed_work() to queue the ap->hotplug_task work. schedule_delayed_work() always uses the system_percpu_wq per-cpu workqueue. ata_scsi_scan_host() queues the ap->hotplug_task work on the unbound system_dfl_long_wq workqueue. It seems counter-intuitive to queue the same work on two different workqueues. Thus, change ata_scsi_port_error_handler() to also queue the ap->hotplug_task work on the system_dfl_long_wq workqueue, such that the work is always queued on the same workqueue. Reviewed-by: Damien Le Moal Signed-off-by: Niklas Cassel --- diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index d623eb32ed8b7..715bc525b38ff 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c @@ -819,7 +819,7 @@ void ata_scsi_port_error_handler(struct Scsi_Host *host, struct ata_port *ap) ap->pflags &= ~ATA_PFLAG_LOADING; else if ((ap->pflags & ATA_PFLAG_SCSI_HOTPLUG) && !(ap->flags & ATA_FLAG_SAS_HOST)) - schedule_delayed_work(&ap->hotplug_task, 0); + queue_delayed_work(system_dfl_long_wq, &ap->hotplug_task, 0); if (ap->pflags & ATA_PFLAG_RECOVERED) ata_port_info(ap, "EH complete\n");