On 27.02.26 18:13, Jakub Kicinski wrote:
> io_uring defers zcrx context teardown to the iou_exit workqueue.
>
> # ps aux | grep iou
> ... 07:58 0:00 [kworker/u19:0-iou_exit]
> ... 07:58 0:00 [kworker/u18:2-iou_exit]
>
> When the test's receiver process exits, bkg() returns but the memory
> provider may still be attached to the rx queue. The subsequent defer()
> that restores tcp-data-split then fails:
>
> # Exception while handling defer / cleanup (callback 3 of 3)!
> # Defer Exception| net.ynl.pyynl.lib.ynl.NlError:
> Netlink error: can't disable tcp-data-split while device has
> memory provider enabled: Invalid argument
> not ok 1 iou-zcrx.test_zcrx.single
>
> Add a helper that polls netdev queue-get until no rx queue reports
> the io-uring memory provider attribute. Register it as a defer()
> just before tcp-data-split is restored as a "barrier".
>
> Signed-off-by: Jakub Kicinski <[email protected]>
> ---
> CC: [email protected]
> CC: [email protected]
> CC: [email protected]
> CC: [email protected]
> ---
Reviewed-by: Dragos Tatulea <[email protected]>
Thanks,
Dragos