The commit is pushed to "branch-rh9-5.14.0-427.55.1.vz9.82.x-ovz" and will appear at g...@bitbucket.org:openvz/vzkernel.git after rh9-5.14.0-427.55.1.vz9.82.4 ------> commit 7176e5bda1c6891b6e05a3f88d70f6ae34b12634 Author: Konstantin Khorenko <khore...@virtuozzo.com> Date: Tue Jul 8 16:20:15 2025 +0200
Revert "fs/fuse/kio: tidy up RPC_AFFINITY_RSS" This reverts commit 3f286d2b5f406c2d5325d14d3d4a4204e7fd010e. We'll have another and better commit solving the problem: [PATCH VZ9 v2] fs/fuse kio: do not set RPC affinity from a workequeue worker https://virtuozzo.atlassian.net/browse/VSTOR-109481 Signed-off-by: Konstantin Khorenko <khore...@virtuozzo.com> Feature: vStorage --- fs/fuse/kio/pcs/pcs_rdma_io.c | 1 - fs/fuse/kio/pcs/pcs_rpc.c | 25 +++++++++---------------- fs/fuse/kio/pcs/pcs_rpc.h | 1 - fs/fuse/kio/pcs/pcs_sock_io.c | 5 +++-- 4 files changed, 12 insertions(+), 20 deletions(-) diff --git a/fs/fuse/kio/pcs/pcs_rdma_io.c b/fs/fuse/kio/pcs/pcs_rdma_io.c index 1c464e0e60f3e..582504e054e19 100644 --- a/fs/fuse/kio/pcs/pcs_rdma_io.c +++ b/fs/fuse/kio/pcs/pcs_rdma_io.c @@ -1110,7 +1110,6 @@ static void pcs_rdma_cq_comp_handler(struct ib_cq *cq, void *private) set_bit(PCS_RDMA_IO_CQE, &rio->io_flags); wake_up(&rio->waitq); - ep->rx_cpu = smp_processor_id(); pcs_rpc_kick_queue(ep); } diff --git a/fs/fuse/kio/pcs/pcs_rpc.c b/fs/fuse/kio/pcs/pcs_rpc.c index f15d0c3fb7cd5..4ab38b3989148 100644 --- a/fs/fuse/kio/pcs/pcs_rpc.c +++ b/fs/fuse/kio/pcs/pcs_rpc.c @@ -339,7 +339,6 @@ void pcs_rpc_attach_new_ep(struct pcs_rpc * ep, struct pcs_rpc_engine * eng) atomic_set(&ep->netlat_cnt, 0); atomic64_set(&ep->netlat_avg, 0); ep->cpu = WORK_CPU_UNBOUND; - ep->rx_cpu = WORK_CPU_UNBOUND; ep->gc = NULL; if (eng->max_gc_index) @@ -864,33 +863,27 @@ static void pcs_rpc_affinity(struct pcs_rpc *ep, bool was_idle) ep->cpu = WORK_CPU_UNBOUND; } break; - case RPC_AFFINITY_RSS: { - int rx_cpu = READ_ONCE(ep->rx_cpu); - - if (rx_cpu != WORK_CPU_UNBOUND && ep->cpu != rx_cpu) - ep->cpu = rx_cpu; + case RPC_AFFINITY_RSS: + if (!(ep->flags & PCS_RPC_F_LOCAL) && ep->addr.type != PCS_ADDRTYPE_RDMA) + break; fallthrough; - } - case RPC_AFFINITY_FAIR_SPREAD: - if (ep->cpu == WORK_CPU_UNBOUND || - (time_is_before_jiffies(ep->cpu_stamp) && was_idle)) - pcs_rpc_cpu_select(ep); - break; case RPC_AFFINITY_RETENT: /* Naive socket-to-cpu binding approach */ - if (ep->cpu == WORK_CPU_UNBOUND || - (time_is_before_jiffies(ep->cpu_stamp) && was_idle)) { + if (time_is_before_jiffies(ep->cpu_stamp) && was_idle) { ep->cpu_stamp = jiffies + rpc_cpu_time_slice; ep->cpu = smp_processor_id(); } break; case RPC_AFFINITY_SPREAD: - if (ep->cpu == WORK_CPU_UNBOUND || - (time_is_before_jiffies(ep->cpu_stamp) && was_idle)) { + if (time_is_before_jiffies(ep->cpu_stamp) && was_idle) { ep->cpu_stamp = jiffies + rpc_cpu_time_slice; ep->cpu = pcs_rpc_cpu_next(); } break; + case RPC_AFFINITY_FAIR_SPREAD: + if (time_is_before_jiffies(ep->cpu_stamp) && was_idle) + pcs_rpc_cpu_select(ep); + break; default: pr_err("Unknown affinity mode: %u\n", rpc_affinity_mode); } diff --git a/fs/fuse/kio/pcs/pcs_rpc.h b/fs/fuse/kio/pcs/pcs_rpc.h index 0bafc8a742636..cb18557a3da5e 100644 --- a/fs/fuse/kio/pcs/pcs_rpc.h +++ b/fs/fuse/kio/pcs/pcs_rpc.h @@ -142,7 +142,6 @@ struct pcs_rpc int cpu; unsigned long cpu_stamp; struct delayed_work cpu_timer_work; /* reset cpu affinity after being idle */ - int rx_cpu; struct mutex mutex; u64 accounted; diff --git a/fs/fuse/kio/pcs/pcs_sock_io.c b/fs/fuse/kio/pcs/pcs_sock_io.c index 7eb231b7260d2..ac8a6ecfdb374 100644 --- a/fs/fuse/kio/pcs/pcs_sock_io.c +++ b/fs/fuse/kio/pcs/pcs_sock_io.c @@ -593,8 +593,9 @@ static void pcs_sk_kick_queue(struct sock *sk) sio = rcu_dereference_sk_user_data(sk); if (sio) { struct pcs_rpc *ep = sio->netio.parent; - DTRACE(PEER_FMT" queue cpu=%d\n", PEER_ARGS(ep), smp_processor_id()); - ep->rx_cpu = smp_processor_id(); + TRACE(PEER_FMT" queue cpu=%d\n", PEER_ARGS(ep), smp_processor_id()); + if (rpc_affinity_mode == RPC_AFFINITY_RSS && !(ep->flags & PCS_RPC_F_LOCAL)) + ep->cpu = smp_processor_id(); pcs_rpc_kick_queue(ep); } rcu_read_unlock(); _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel