git: 9front

Download patch

ref: ba0621195e9b5f3605b5d0c95fc7a744f6666dbf
parent: d1babe27dc7f74c9b4e8ce464a837960122f7637
author: Ori Bernstein <ori@eigenstate.org>
date: Sun Sep 14 21:18:41 EDT 2025

gefs: improve assertions and logging

--- a/sys/src/cmd/gefs/blk.c
+++ b/sys/src/cmd/gefs/blk.c
@@ -178,21 +178,27 @@
 
 Again:
 	s = (Arange*)avlprev(r);
-	if(s != nil && s->off+s->len == r->off){
-		avldelete(t, r);
-		s->len = s->len + r->len;
-		free(r);
-		r = s;
-		goto Again;
+	if(s != nil){
+		if(s->off+s->len == r->off){
+			avldelete(t, r);
+			s->len = s->len + r->len;
+			free(r);
+			r = s;
+			goto Again;
+		}
+		assert(s->off+s->len < r->off);
 	}
 	s = (Arange*)avlnext(r);
-	if(s != nil && r->off+r->len == s->off){
-		avldelete(t, r);
-		s->off = r->off;
-		s->len = s->len + r->len;
-		free(r);
-		r = s;
-		goto Again;
+	if(s != nil){
+		if(r->off+r->len == s->off){
+			avldelete(t, r);
+			s->off = r->off;
+			s->len = s->len + r->len;
+			free(r);
+			r = s;
+			goto Again;
+		}
+		assert(r->off+r->len < s->off);
 	}
 }
 
@@ -537,6 +543,7 @@
 		free(r);
 	}
 	a->used += Blksz;
+	tracex("blkalloc" , Zb, b, getcallerpc(&a));
 	return b;
 }
 
@@ -594,13 +601,13 @@
 {
 	Blk *ob;
 
-	ob = cacheget(bp);
-	if(ob != nil)
-		fatal("double alloc: %#p %B %#p %B", b, b->bp, ob, ob->bp);
 	b->type = ty;
 	b->bp.addr = bp;
 	b->bp.hash = -1;
 	b->bp.gen = gen;
+	ob = cacheget(bp);
+	if(ob != nil)
+		fatal("double alloc: %#p %B %#p %B", b, b->bp, ob, ob->bp);
 	switch(ty){
 	case Tdat:
 		b->data = b->buf;
@@ -642,7 +649,6 @@
 	b = cachepluck();
 	initblk(b, bp, t->memgen, Tdat);
 	b->alloced = getcallerpc(&t);
-	tracex("newblk" , b->bp, Tdat, -1);
 	return b;
 
 }
@@ -657,7 +663,6 @@
 	b = cachepluck();
 	initblk(b, bp, t->memgen, ty);
 	b->alloced = getcallerpc(&t);
-	tracex("newblk" , b->bp, ty, -1);
 	return b;
 }
 
--- a/sys/src/cmd/gefs/check.c
+++ b/sys/src/cmd/gefs/check.c
@@ -157,7 +157,6 @@
 			fprint(fd, "error loading %B\n", bp);
 			return 0;
 		}
-traceb("chklg", bp);
 		b = getblk(bp, 0);
 		nb = b->logp;
 		dropblk(b);
--