[Devel] [PATCH RHEL9 COMMIT] fuse: do not accelerate writes with unknown dirty state

Konstantin Khorenko khorenko at virtuozzo.com
Wed Nov 1 22:47:56 MSK 2023


The commit is pushed to "branch-rh9-5.14.0-284.25.1.vz9.30.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh9-5.14.0-284.25.1.vz9.30.8
------>
commit a16b045d56c6b214038db4bd5d12607a99bce552
Author: Alexey Kuznetsov <kuznet at virtuozzo.com>
Date:   Fri Oct 6 18:43:48 2023 +0800

    fuse: do not accelerate writes with unknown dirty state
    
    If we have no sync seq numbers we cannot force dirty status.
    So, route writes via slow path. When CSes reply with dirty seqs,
    we will be able to make shortcut.
    
    https://pmc.acronis.work/browse/VSTOR-54040
    
    Signed-off-by: Alexey Kuznetsov <kuznet at acronis.com>
    
    Feature: vStorage
---
 fs/fuse/kio/pcs/pcs_cs_accel.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/fs/fuse/kio/pcs/pcs_cs_accel.c b/fs/fuse/kio/pcs/pcs_cs_accel.c
index 6db4562d38bf..d47486d0cb18 100644
--- a/fs/fuse/kio/pcs/pcs_cs_accel.c
+++ b/fs/fuse/kio/pcs/pcs_cs_accel.c
@@ -1123,6 +1123,9 @@ struct pcs_int_request * pcs_csa_csl_write_submit(struct pcs_int_request * ireq)
 	ireq_init_acr(ireq);
 
 	for (idx = 0; idx < csl->nsrv; idx++) {
+		/* If dirty status is unknown go to slow path to get a seed */
+		if (csl->cs[idx].sync.dirty_seq == 0)
+			break;
 		if (!csa_cs_submit_write(ireq, idx))
 			break;
 	}
@@ -1171,6 +1174,8 @@ int pcs_csa_csl_write_submit_single(struct pcs_int_request * ireq, int idx)
 {
 	if (idx >= PCS_MAX_ACCEL_CS)
 		return 0;
+	if (ireq->iochunk.csl->cs[idx].sync.dirty_seq == 0)
+		return 0;
 
 	ireq_init_acr(ireq);
 


More information about the Devel mailing list