On Mon, Aug 17, 2026 at 06:51:15PM +0800, Yanfei Xu wrote:
> qio_channel_rdma_shutdown() reads rdmain for both the input and
> output contexts. As a result, a write-side shutdown marks the input
> context as errored while leaving the output context active. A shutdown
> of both directions also fails to stop the output context.
>
> Read rdmaout from the output context so each shutdown direction marks
> the corresponding RDMA context as errored.
>
> Fixes: 54db882f073a ("migration: implement the shutdown for RDMA QIOChannel")
> Signed-off-by: Yanfei Xu <[email protected]>
> ---
> migration/rdma.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/migration/rdma.c b/migration/rdma.c
> index 438419d189..e17ace62b0 100644
> --- a/migration/rdma.c
> +++ b/migration/rdma.c
> @@ -2982,7 +2982,7 @@ qio_channel_rdma_shutdown(QIOChannel *ioc,
> RCU_READ_LOCK_GUARD();
>
> rdmain = qatomic_rcu_read(&rioc->rdmain);
> - rdmaout = qatomic_rcu_read(&rioc->rdmain);
> + rdmaout = qatomic_rcu_read(&rioc->rdmaout);
>
> switch (how) {
> case QIO_CHANNEL_SHUTDOWN_READ:
> --
> 2.20.1
>
I recall there was a patch like this somewhere, looks like we missed that..
Reviewed-by: Peter Xu <[email protected]>
--
Peter Xu