[master] 94aad8c3c Refactor retire_backend(VCL_BACKEND *) to vcldir_retire(struct vcldir *)

Nils Goroll nils.goroll at uplex.de
Mon Mar 6 15:19:06 UTC 2023


commit 94aad8c3cc497849b59ff294ef2198897e0e0ec6
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Mon Feb 27 21:50:12 2023 +0100

    Refactor retire_backend(VCL_BACKEND *) to vcldir_retire(struct vcldir *)
    
    This is in preparation of follow-up commits. Reasoning:
    
    - in both call sites, we already use the struct vcldir *
    - once call site actually used TAKE_OBJ semantics, but those
      can easily be moved

diff --git a/bin/varnishd/cache/cache_vrt_vcl.c b/bin/varnishd/cache/cache_vrt_vcl.c
index 93b3064c2..ec7cb9cde 100644
--- a/bin/varnishd/cache/cache_vrt_vcl.c
+++ b/bin/varnishd/cache/cache_vrt_vcl.c
@@ -240,17 +240,12 @@ VRT_StaticDirector(VCL_BACKEND b)
 }
 
 static void
-retire_backend(VCL_BACKEND *bp)
+vcldir_retire(struct vcldir *vdir)
 {
-	struct vcldir *vdir;
 	const struct vcltemp *temp;
-	VCL_BACKEND d;
 
-	TAKE_OBJ_NOTNULL(d, bp, DIRECTOR_MAGIC);
-	vdir = d->vdir;
 	CHECK_OBJ_NOTNULL(vdir, VCLDIR_MAGIC);
 	assert(vdir->refcnt == 0);
-	assert (d == vdir->dir);
 	CHECK_OBJ_NOTNULL(vdir->vcl, VCL_MAGIC);
 
 	Lck_Lock(&vcl_mtx);
@@ -259,26 +254,27 @@ retire_backend(VCL_BACKEND *bp)
 	Lck_Unlock(&vcl_mtx);
 
 	if (temp->is_warm)
-		VDI_Event(d, VCL_EVENT_COLD);
+		VDI_Event(vdir->dir, VCL_EVENT_COLD);
 	if (vdir->methods->destroy != NULL)
-		vdir->methods->destroy(d);
-	assert (d == vdir->dir);
+		vdir->methods->destroy(vdir->dir);
 	vcldir_free(vdir);
 }
 
 void
-VRT_DelDirector(VCL_BACKEND *bp)
+VRT_DelDirector(VCL_BACKEND *dirp)
 {
+	VCL_BACKEND dir;
 	struct vcldir *vdir;
 
-	AN(bp);
-	vdir = (*bp)->vdir;
+	TAKE_OBJ_NOTNULL(dir, dirp, DIRECTOR_MAGIC);
+
+	vdir = dir->vdir;
 	CHECK_OBJ_NOTNULL(vdir, VCLDIR_MAGIC);
 	Lck_Lock(&vdir->dlck);
 	assert(vdir->refcnt == 1);
 	vdir->refcnt = 0;
 	Lck_Unlock(&vdir->dlck);
-	retire_backend(bp);
+	vcldir_retire(vdir);
 }
 
 void
@@ -299,7 +295,7 @@ VRT_Assign_Backend(VCL_BACKEND *dst, VCL_BACKEND src)
 			busy = --vdir->refcnt;
 			Lck_Unlock(&vdir->dlck);
 			if (!busy)
-				retire_backend(dst);
+				vcldir_retire(vdir);
 		}
 	}
 	if (src != NULL) {


More information about the varnish-commit mailing list