[PATCH v2 0/5] firewire: core/ohci: defer cancellation callbacks to workqueue
From: Takashi Sakamoto
Date: Wed Oct 07 2026 - 06:22:01 EST
Hi,
This series is take 2 of the previous one[1].
The current implementation invokes both packet and transaction callbacks
from a workqueue when they complete normally[2][3]. In contrast, the
cancellation paths invoke the callbacks synchronously while cancelling
them.
Although the cancellation paths are guaranteed to run in process context,
invoking the callbacks synchronously is undesirable because it makes
callback execution depends on the context in which cancellation is
executed.
This series defers the callbacks to a workqueue when cancelling the
packets and transactions, so that callbacks are invoked from a workqueue
in both normal completion and cancellation paths.
This also allows local AT packets to be cancelled. Local packets currently
use a separate path and cannot be cancelled once queued. Make them use
the same cancellation mechanism as remote packets.
Changes from v1:
* Use prefixed local variable in the issued macro
[1] [PATCH 0/5] firewire: core/ohci: defer cancellation callbacks to workqueue
https://lore.kernel.org/lkml/20261005112544.240552-1-o-takashi@xxxxxxxxxxxxx/
[2] [PATCH 0/5] firewire: ohci: invoke all AT packet callbacks from a workqueue
https://lore.kernel.org/lkml/20260919115017.859169-1-o-takashi@xxxxxxxxxxxxx/
[3] [PATCH 0/3] firewire: core: invoke transaction callbacks in process context
https://lore.kernel.org/lkml/20260921031931.287429-1-o-takashi@xxxxxxxxxxxxx/
Takashi Sakamoto (5):
firewire: core: expand close_transaction() into its callers and remove
it
firewire: ohci: schedule callback on workqueue when cancelling AT
request packet
firewire: ohci: allow AT local packet cancellation
firewire: core: schedule callback when cancelling pending transactions
firewire: core: fulfill kerneldoc for fw_cancel_transaction()
drivers/firewire/core-transaction.c | 101 ++++++++++++++--------------
drivers/firewire/ohci.c | 57 ++++++++++++----
2 files changed, 93 insertions(+), 65 deletions(-)
base-commit: a6e7c3836b81235df08814bd409f7a23efcfb34d
--
2.53.0