[master] 7da69d318 Increase the size of the VSL record header by one word, to make space for larger XIDs. Add a version field.

Poul-Henning Kamp phk at FreeBSD.org
Wed Nov 16 14:08:08 UTC 2022


commit 7da69d318fdcf89cb5d6cc890c553244c7747bff
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Wed Nov 16 14:06:51 2022 +0000

    Increase the size of the VSL record header by one word, to make
    space for larger XIDs.  Add a version field.

diff --git a/bin/varnishd/cache/cache_shmlog.c b/bin/varnishd/cache/cache_shmlog.c
index c166b5648..afb74535e 100644
--- a/bin/varnishd/cache/cache_shmlog.c
+++ b/bin/varnishd/cache/cache_shmlog.c
@@ -143,8 +143,11 @@ vsl_hdr(enum VSL_tag_e tag, uint32_t *p, unsigned len, vxid_t vxid)
 	assert(tag < SLT__Reserved);
 	AZ(len & ~VSL_LENMASK);
 
+	p[2] = 0;
 	p[1] = vxid.vxid;
-	p[0] = ((((unsigned)tag & 0xff) << 24) | len);
+	p[0] = (((unsigned)tag & VSL_IDMASK) << VSL_IDSHIFT) |
+	     (VSL_VERSION_3 << VSL_VERSHIFT) |
+	     len;
 	return (VSL_END(p, len));
 }
 
diff --git a/include/vapi/vsl_int.h b/include/vapi/vsl_int.h
index dbd043908..faeb9d111 100644
--- a/include/vapi/vsl_int.h
+++ b/include/vapi/vsl_int.h
@@ -67,13 +67,20 @@
 #define VSL_IDENTMASK		(~(3U<<30))
 
 #define VSL_LENMASK		0xffff
-#define VSL_OVERHEAD		2
+#define VSL_VERMASK		0x3
+#define VSL_VERSHIFT		16
+#define VSL_IDMASK		0xff
+#define VSL_IDSHIFT		24
+#define VSL_OVERHEAD		3
+#define VSL_VERSION_2		0x0
+#define VSL_VERSION_3		0x1
 #define VSL_WORDS(len)		(((len) + 3) / 4)
 #define VSL_BYTES(words)	((words) * 4)
 #define VSL_END(ptr, len)	((ptr) + VSL_OVERHEAD + VSL_WORDS(len))
 #define VSL_NEXT(ptr)		VSL_END(ptr, VSL_LEN(ptr))
 #define VSL_LEN(ptr)		((ptr)[0] & VSL_LENMASK)
-#define VSL_TAG(ptr)		((enum VSL_tag_e)((ptr)[0] >> 24))
+#define VSL_VER(ptr)		(((ptr)[0] & VSL_VERMASK) >> VSL_VERSHIFT)
+#define VSL_TAG(ptr)		((enum VSL_tag_e)((ptr)[0] >> VSL_IDSHIFT))
 #define VSL_ID(ptr)		(((ptr)[1]) & VSL_IDENTMASK)
 #define VSL_CLIENT(ptr)		(((ptr)[1]) & VSL_CLIENTMARKER)
 #define VSL_BACKEND(ptr)	(((ptr)[1]) & VSL_BACKENDMARKER)


More information about the varnish-commit mailing list