[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