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

Reply via email to