[master] 401ddc4 Make the VSM layout more hexdump friendly

Poul-Henning Kamp phk at varnish-cache.org
Mon Nov 21 00:39:22 CET 2011


commit 401ddc4e9462b2c8476e945c6e148982ea7325e7
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Sun Nov 20 13:29:14 2011 +0000

    Make the VSM layout more hexdump friendly

diff --git a/bin/varnishd/common/common_vsm.c b/bin/varnishd/common/common_vsm.c
index f525a1e..781b01c 100644
--- a/bin/varnishd/common/common_vsm.c
+++ b/bin/varnishd/common/common_vsm.c
@@ -137,7 +137,7 @@ VSM_common_new(void *p, ssize_t l)
 	sc->head = (void *)sc->b;
 	/* This should not be necessary, but just in case...*/
 	memset(sc->head, 0, sizeof *sc->head);
-	sc->head->magic = VSM_HEAD_MAGIC;
+	memcpy(sc->head->marker, VSM_HEAD_MARKER, sizeof sc->head->marker);
 	sc->head->hdrsize = sizeof *sc->head;
 	sc->head->shm_size = l;
 	sc->head->alloc_seq = random() | 1;
@@ -145,8 +145,8 @@ VSM_common_new(void *p, ssize_t l)
 
 	ALLOC_OBJ(vr, VSM_RANGE_MAGIC);
 	AN(vr);
-	vr->off = PRNDUP(sizeof(*sc->head));
-	vr->len = l - vr->off;
+	vr->off = RUP2(sizeof(*sc->head), 16);
+	vr->len = RDN2(l - vr->off, 16);
 	VTAILQ_INSERT_TAIL(&sc->r_free, vr, list);
 	return (sc);
 }
@@ -182,9 +182,8 @@ VSM_common_alloc(struct vsm_sc *sc, ssize_t size,
 		vsm_common_insert_free(sc, vr);
 	}
 
-	size = PRNDUP(size);
-	l1 = size + sizeof(struct VSM_chunk);
-	l2 = size + 2 * sizeof(struct VSM_chunk);
+	l1 = RUP2(size + sizeof(struct VSM_chunk), 16);
+	l2 = RUP2(size + 2 * sizeof(struct VSM_chunk), 16);
 
 	/* Find space in free-list */
 	VTAILQ_FOREACH_SAFE(vr, &sc->r_free, list, vr2) {
@@ -227,7 +226,8 @@ VSM_common_alloc(struct vsm_sc *sc, ssize_t size,
 	vr->chunk = (void *)(sc->b + vr->off);
 	vr->ptr = (vr->chunk + 1);
 
-	vr->chunk->magic = VSM_CHUNK_MAGIC;
+	memcpy(vr->chunk->marker, VSM_CHUNK_MARKER, sizeof vr->chunk->marker);
+	vr->chunk->len = vr->len;
 	strcpy(vr->chunk->class, class);
 	strcpy(vr->chunk->type, type);
 	strcpy(vr->chunk->ident, ident);
diff --git a/include/vapi/vsm_int.h b/include/vapi/vsm_int.h
index c33ba35..c0a2df9 100644
--- a/include/vapi/vsm_int.h
+++ b/include/vapi/vsm_int.h
@@ -98,8 +98,8 @@
 #define VSM_FILENAME		"_.vsm"
 
 struct VSM_chunk {
-#define VSM_CHUNK_MAGIC		0xa15712e5	/* From /dev/random */
-	unsigned		magic;
+#define VSM_CHUNK_MARKER	"VSMCHUNK"
+	char			marker[8];
 	ssize_t			len;		/* Incl VSM_chunk */
 	ssize_t			next;		/* Offset in shmem */
 	char			class[8];
@@ -108,8 +108,8 @@ struct VSM_chunk {
 };
 
 struct VSM_head {
-#define VSM_HEAD_MAGIC		0xe75f7e91	/* From /dev/random */
-	unsigned		magic;
+#define VSM_HEAD_MARKER		"VSMHEAD0"	/* Incr. as version# *
+	char			marker[8];
 	ssize_t			hdrsize;
 	ssize_t			shm_size;
 	ssize_t			first;		/* Offset, first chunk */



More information about the varnish-commit mailing list