shithub: riscv

Download patch

ref: c91fd355186fc44d6f107d300dee81eafbcec280
parent: 66d2e1ac59a6ff1bc624eed543cb0edd27bbf9c3
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Jan 5 19:51:36 EST 2025

gefs: getblk(): remove duplicate getcallerpc(), check b->bp.gen from cache

--- a/sys/src/cmd/gefs/blk.c
+++ b/sys/src/cmd/gefs/blk.c
@@ -735,18 +735,15 @@
 	}
 	if((b = cacheget(bp.addr)) != nil){
 		assert(checkflag(b, 0, Bfreed));
-		b->lasthold = getcallerpc(&bp);
-		qunlock(&fs->blklk[i]);
-		poperror();
-		return b;
+		assert(b->bp.gen == bp.gen);
+	} else {
+		b = cachepluck();
+		b->alloced = getcallerpc(&bp);
+		readblk(b, bp, flg);
+		b->bp.gen = bp.gen;
+		cacheins(b);
 	}
-	b = cachepluck();
-	b->alloced = getcallerpc(&bp);
-	b->alloced = getcallerpc(&bp);
-	readblk(b, bp, flg);
-	b->bp.gen = bp.gen;
 	b->lasthold = getcallerpc(&bp);
-	cacheins(b);
 	qunlock(&fs->blklk[i]);
 	poperror();
 
--