[master] 1a750f2 Divorce EXP_Inject() and EXP_Insert() -- they're quite different.

Poul-Henning Kamp phk at FreeBSD.org
Thu Jun 26 17:03:03 CEST 2014


commit 1a750f28818fe9e862ee8be887d8a485c5a565df
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Thu Jun 26 11:05:12 2014 +0000

    Divorce EXP_Inject() and EXP_Insert() -- they're quite different.

diff --git a/bin/varnishd/cache/cache_expire.c b/bin/varnishd/cache/cache_expire.c
index bbb19a3..ae5ebc7 100644
--- a/bin/varnishd/cache/cache_expire.c
+++ b/bin/varnishd/cache/cache_expire.c
@@ -137,19 +137,13 @@ EXP_Inject(struct objcore *oc, struct lru *lru, double when)
 
 	AZ(oc->exp_flags & (OC_EF_OFFLRU | OC_EF_INSERT | OC_EF_MOVE));
 	AZ(oc->exp_flags & OC_EF_DYING);
-	// AN(oc->flags & OC_F_BUSY);
-
-	if (lru == NULL)
-		lru = oc_getlru(oc);
+	AZ(oc->flags & OC_F_BUSY);
 	CHECK_OBJ_NOTNULL(lru, LRU_MAGIC);
 
 	Lck_Lock(&lru->mtx);
 	lru->n_objcore++;
 	oc->exp_flags |= OC_EF_OFFLRU | OC_EF_INSERT | OC_EF_EXP;
-	if (when < 0)
-		oc->exp_flags |= OC_EF_MOVE;
-	else
-		oc->timer_when = when;
+	oc->timer_when = when;
 	Lck_Unlock(&lru->mtx);
 
 	exp_mail_it(oc);
@@ -165,10 +159,25 @@ EXP_Inject(struct objcore *oc, struct lru *lru, double when)
 void
 EXP_Insert(struct objcore *oc)
 {
+	struct lru *lru;
 
 	CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
 	HSH_Ref(oc);
-	EXP_Inject(oc, NULL, -1);
+
+	AZ(oc->exp_flags & (OC_EF_OFFLRU | OC_EF_INSERT | OC_EF_MOVE));
+	AZ(oc->exp_flags & OC_EF_DYING);
+	AN(oc->flags & OC_F_BUSY);
+
+	lru = oc_getlru(oc);
+	CHECK_OBJ_NOTNULL(lru, LRU_MAGIC);
+
+	Lck_Lock(&lru->mtx);
+	lru->n_objcore++;
+	oc->exp_flags |= OC_EF_OFFLRU | OC_EF_INSERT | OC_EF_EXP;
+	oc->exp_flags |= OC_EF_MOVE;
+	Lck_Unlock(&lru->mtx);
+
+	exp_mail_it(oc);
 }
 
 /*--------------------------------------------------------------------



More information about the varnish-commit mailing list