The commit is pushed to "branch-rh8-4.18.0-240.1.1.vz8.5.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh8-4.18.0-240.1.1.vz8.5.19 ------> commit f1bb96521ee16d548fd1cc9b95a2936eb99ea800 Author: Ildar Ismagilov <ildar.ismagi...@virtuozzo.com> Date: Fri Apr 23 11:54:57 2021 +0300
fs/fuse kio: fix processing order of RDMA works during throttle/unthrottle To fix it, let's skip processing the RDMA works during throttle and add them to rio->pended_rxs list in FIFO order. This fix helps us to avoid BUG_ON(tx->xid != rack->xid) in userspace. https://pmc.acronis.com/browse/VSTOR-38354 Signed-off-by: Ildar Ismagilov <ildar.ismagi...@virtuozzo.com> Reviewed-by: Andrey Zaitsev <azait...@virtuozzo.com> --- fs/fuse/kio/pcs/pcs_rdma_io.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/fs/fuse/kio/pcs/pcs_rdma_io.c b/fs/fuse/kio/pcs/pcs_rdma_io.c index 42b45b29fafe..e5cf699afe9b 100644 --- a/fs/fuse/kio/pcs/pcs_rdma_io.c +++ b/fs/fuse/kio/pcs/pcs_rdma_io.c @@ -789,6 +789,11 @@ static int rio_handle_rx_immediate(struct pcs_rdmaio *rio, char *buf, int len, int offset = rio->hdr_size; struct iov_iter it; + if (rio->throttled) { + *throttle = 1; + return 0; + } + if (len < rio->hdr_size) { TRACE("rio read short msg: %d < %d, rio: 0x%p\n", len, rio->hdr_size, rio); @@ -935,7 +940,7 @@ static void rio_handle_rx(struct pcs_rdmaio *rio, struct rio_rx *rx, return; } } else - list_add(&rx->list, &rio->pended_rxs); + list_add_tail(&rx->list, &rio->pended_rxs); if (!pended) rio->n_peer_credits += credits; _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel