[master] a182f02d2 Drop the unified import structure, it doesnt make anything easier after all

Poul-Henning Kamp phk at FreeBSD.org
Tue May 28 09:08:12 UTC 2019


commit a182f02d23fa51d99fa14f531993ffa82a8d6f41
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Tue May 28 07:39:07 2019 +0000

    Drop the unified import structure, it doesnt make anything easier after all

diff --git a/bin/varnishd/mgt/mgt_symtab.c b/bin/varnishd/mgt/mgt_symtab.c
index 4a5dc96e3..64c1bef4d 100644
--- a/bin/varnishd/mgt/mgt_symtab.c
+++ b/bin/varnishd/mgt/mgt_symtab.c
@@ -59,19 +59,16 @@ mgt_vcl_symtab_val(const struct vjsn_val *vv, const char *val)
 }
 
 static void
-mgt_vcl_import_vcl(struct vclprog *vp1, struct import *ip, const struct vjsn_val *vv)
+mgt_vcl_import_vcl(struct vclprog *vp1, const struct vjsn_val *vv)
 {
 	struct vclprog *vp2;
 
 	CHECK_OBJ_NOTNULL(vp1, VCLPROG_MAGIC);
-	AN(ip);
 	AN(vv);
 
 	vp2 = mcf_vcl_byname(mgt_vcl_symtab_val(vv, "name"));
 	CHECK_OBJ_NOTNULL(vp2, VCLPROG_MAGIC);
-	ip->vcl = vp2;
-	VTAILQ_INSERT_TAIL(&vp2->exports, ip, to);
-	mgt_vcl_dep_add(vp1, vp2);
+	mgt_vcl_dep_add(vp1, vp2)->vj = vv;
 }
 
 static int
@@ -117,7 +114,7 @@ mgt_vcl_cache_vmod(const char *nm, const char *fm, const char *to)
 }
 
 static void
-mgt_vcl_import_vmod(struct vclprog *vp, struct import *ip, const struct vjsn_val *vv)
+mgt_vcl_import_vmod(struct vclprog *vp, const struct vjsn_val *vv)
 {
 	struct vmodfile *vf;
 	struct vmoddep *vd;
@@ -126,7 +123,6 @@ mgt_vcl_import_vmod(struct vclprog *vp, struct import *ip, const struct vjsn_val
 	const char *v_dst;
 
 	CHECK_OBJ_NOTNULL(vp, VCLPROG_MAGIC);
-	AN(ip);
 	AN(vv);
 
 	v_name = mgt_vcl_symtab_val(vv, "name");
@@ -142,7 +138,6 @@ mgt_vcl_import_vmod(struct vclprog *vp, struct import *ip, const struct vjsn_val
 		REPLACE(vf->fname, v_dst);
 		AN(vf->fname);
 		VTAILQ_INIT(&vf->vcls);
-		VTAILQ_INIT(&vf->exports);
 		AZ(mgt_vcl_cache_vmod(v_name, v_file, v_dst));
 		VTAILQ_INSERT_TAIL(&vmodhead, vf, list);
 	}
@@ -151,8 +146,6 @@ mgt_vcl_import_vmod(struct vclprog *vp, struct import *ip, const struct vjsn_val
 	vd->to = vf;
 	VTAILQ_INSERT_TAIL(&vp->vmods, vd, lfrom);
 	VTAILQ_INSERT_TAIL(&vf->vcls, vd, lto);
-	ip->vmod = vf;
-	VTAILQ_INSERT_TAIL(&vf->exports, ip, to);
 }
 
 void
@@ -161,7 +154,6 @@ mgt_vcl_symtab(struct vclprog *vp, const char *input)
 	struct vjsn *vj;
 	struct vjsn_val *v1, *v2;
 	const char *typ, *err;
-	struct import *ip;
 
 	CHECK_OBJ_NOTNULL(vp, VCLPROG_MAGIC);
 	AN(input);
@@ -182,16 +174,11 @@ mgt_vcl_symtab(struct vclprog *vp, const char *input)
 		assert(v2->type == VJSN_STRING);
 		if (strcmp(v2->value, "import"))
 			continue;
-		ALLOC_OBJ(ip, IMPORT_MAGIC);
-		AN(ip);
-		ip->vj = v1;
-		ip->target = vp;
-		VTAILQ_INSERT_TAIL(&vp->imports, ip, from);
 		typ = mgt_vcl_symtab_val(v1, "type");
 		if (!strcmp(typ, "$VMOD"))
-			mgt_vcl_import_vmod(vp, ip, v1);
+			mgt_vcl_import_vmod(vp, v1);
 		else if (!strcmp(typ, "$VCL"))
-			mgt_vcl_import_vcl(vp, ip, v1);
+			mgt_vcl_import_vcl(vp, v1);
 		else
 			WRONG("Bad symtab import entry");
 	}
@@ -200,19 +187,9 @@ mgt_vcl_symtab(struct vclprog *vp, const char *input)
 void
 mgt_vcl_symtab_clean(struct vclprog *vp)
 {
-	struct import *ip;
 
 	if (vp->symtab)
 		vjsn_delete(&vp->symtab);
-	while (!VTAILQ_EMPTY(&vp->imports)) {
-		ip = VTAILQ_FIRST(&vp->imports);
-		VTAILQ_REMOVE(&vp->imports, ip, from);
-		if (ip->vmod)
-			VTAILQ_REMOVE(&ip->vmod->exports, ip, to);
-		if (ip->vcl)
-			VTAILQ_REMOVE(&ip->vcl->exports, ip, to);
-		FREE_OBJ(ip);
-	}
 }
 
 /*--------------------------------------------------------------------*/
@@ -251,22 +228,23 @@ void v_matchproto_(cli_func_t)
 mcf_vcl_symtab(struct cli *cli, const char * const *av, void *priv)
 {
 	struct vclprog *vp;
-	struct import *ip;
+	struct vcldep *vd;
+
 	(void)av;
 	(void)priv;
 	VTAILQ_FOREACH(vp, &vclhead, list) {
 		VCLI_Out(cli, "VCL: %s\n", vp->name);
-		VCLI_Out(cli, "  imports:\n");
-		VTAILQ_FOREACH(ip, &vp->imports, from) {
-			VCLI_Out(cli, "    %p -> (%p, %p)\n",
-				ip, ip->vcl, ip->vmod);
-			mcf_vcl_vjsn_dump(cli, ip->vj, 6);
+		VCLI_Out(cli, "  imports from:\n");
+		VTAILQ_FOREACH(vd, &vp->dto, lto) {
+			VCLI_Out(cli, "    %s\n", vd->from->name);
+			if (vd->vj)
+				mcf_vcl_vjsn_dump(cli, vd->vj, 6);
 		}
-		VCLI_Out(cli, "  exports:\n");
-		VTAILQ_FOREACH(ip, &vp->exports, to) {
-			VCLI_Out(cli, "    %p -> (%p, %p) %s\n",
-				ip, ip->vcl, ip->vmod, ip->target->name);
-			mcf_vcl_vjsn_dump(cli, ip->vj, 6);
+		VCLI_Out(cli, "  exports to:\n");
+		VTAILQ_FOREACH(vd, &vp->dfrom, lfrom) {
+			VCLI_Out(cli, "    %s\n", vd->to->name);
+			if (vd->vj)
+				mcf_vcl_vjsn_dump(cli, vd->vj, 6);
 		}
 	}
 }
diff --git a/bin/varnishd/mgt/mgt_vcl.c b/bin/varnishd/mgt/mgt_vcl.c
index f78d1887f..47b223496 100644
--- a/bin/varnishd/mgt/mgt_vcl.c
+++ b/bin/varnishd/mgt/mgt_vcl.c
@@ -149,7 +149,7 @@ mcf_is_label(const struct vclprog *vp)
 
 /*--------------------------------------------------------------------*/
 
-void
+struct vcldep *
 mgt_vcl_dep_add(struct vclprog *vp_from, struct vclprog *vp_to)
 {
 	struct vcldep *vd;
@@ -169,6 +169,7 @@ mgt_vcl_dep_add(struct vclprog *vp_from, struct vclprog *vp_to)
 	vd->to = vp_to;
 	VTAILQ_INSERT_TAIL(&vp_to->dto, vd, lto);
 	vp_to->nto++;
+	return (vd);
 }
 
 static void
@@ -198,11 +199,9 @@ mgt_vcl_add(const char *name, const char *state)
 	ALLOC_OBJ(vp, VCLPROG_MAGIC);
 	XXXAN(vp);
 	REPLACE(vp->name, name);
-	VTAILQ_INIT(&vp->exports);
 	VTAILQ_INIT(&vp->dfrom);
 	VTAILQ_INIT(&vp->dto);
 	VTAILQ_INIT(&vp->vmods);
-	VTAILQ_INIT(&vp->imports);
 	vp->state = state;
 
 	if (vp->state != VCL_STATE_COLD)
@@ -862,7 +861,7 @@ mcf_vcl_label(struct cli *cli, const char * const *av, void *priv)
 	AN(vpl);
 	if (mgt_vcl_requirewarm(cli, vpl))
 		return;
-	mgt_vcl_dep_add(vpl, vpt);
+	(void)mgt_vcl_dep_add(vpl, vpt);
 
 	if (!MCH_Running())
 		return;
diff --git a/bin/varnishd/mgt/mgt_vcl.h b/bin/varnishd/mgt/mgt_vcl.h
index 49adcdf51..1c25c656e 100644
--- a/bin/varnishd/mgt/mgt_vcl.h
+++ b/bin/varnishd/mgt/mgt_vcl.h
@@ -32,17 +32,6 @@ struct vclprog;
 struct vmodfile;
 struct vjsn_val;
 
-struct import {
-	unsigned		magic;
-#define IMPORT_MAGIC		0xce767c9b
-	struct vclprog		*target;
-	VTAILQ_ENTRY(import)	from;
-	VTAILQ_ENTRY(import)	to;
-	struct vjsn_val		*vj;
-	struct vmodfile		*vmod;
-	struct vclprog		*vcl;
-};
-
 struct vmoddep {
 	unsigned		magic;
 #define VMODDEP_MAGIC		0xc1490542
@@ -58,6 +47,7 @@ struct vcldep {
 	VTAILQ_ENTRY(vcldep)	lfrom;
 	struct vclprog		*to;
 	VTAILQ_ENTRY(vcldep)	lto;
+	const struct vjsn_val	*vj;
 };
 
 struct vclprog {
@@ -70,8 +60,6 @@ struct vclprog {
 	const char *		state;
 	double			go_cold;
 	struct vjsn		*symtab;
-	VTAILQ_HEAD(, import)	imports;
-	VTAILQ_HEAD(, import)	exports;
 	VTAILQ_HEAD(, vcldep)	dfrom;
 	VTAILQ_HEAD(, vcldep)	dto;
 	int			nto;
@@ -83,7 +71,6 @@ struct vmodfile {
 	unsigned		magic;
 #define VMODFILE_MAGIC		0xffa1a0d5
 	char			*fname;
-	VTAILQ_HEAD(, import)	exports;
 	VTAILQ_ENTRY(vmodfile)	list;
 	VTAILQ_HEAD(, vmoddep)	vcls;
 };
@@ -92,7 +79,7 @@ extern VTAILQ_HEAD(vclproghead, vclprog)	vclhead;
 extern VTAILQ_HEAD(vmodfilehead, vmodfile)	vmodhead;
 
 struct vclprog *mcf_vcl_byname(const char *name);
-void mgt_vcl_dep_add(struct vclprog *vp_from, struct vclprog *vp_to);
+struct vcldep *mgt_vcl_dep_add(struct vclprog *vp_from, struct vclprog *vp_to);
 int mcf_is_label(const struct vclprog *vp);
 
 void mgt_vcl_symtab_clean(struct vclprog *vp);


More information about the varnish-commit mailing list