code: mafs

Download patch

ref: 54411b5c642bfca7e03eff2ad7f4823f13f9e32a
parent: e82f565015fd0b75085d8d2a4f1aaca53e875f64
author: 9ferno <gophone2015@gmail.com>
date: Wed Nov 2 10:39:04 EDT 2022

avoid updating es->lru after each iteration as the loop is taking forever

--- a/extents.c
+++ b/extents.c
@@ -203,7 +203,7 @@
 doadd(Extents *es, u64 start, u64 len)
 {
 	s64 dir;
-	Extent *e;
+	Extent *e, *eprev;
 
 	if(es == nil)
 		panic("add es == nil");
@@ -226,9 +226,10 @@
 	}
 	if(dir < 0){
 		while(e->low != nil && (dir = belongs(e, start, len)) < 0){
-			es->lru = e;
+			eprev = e;
 			e = e->low;
 		}
+		es->lru = eprev;
 		/* e->low e es->lru */
 		if(dir == 0)
 			return increment(es, e, start, len);
@@ -240,9 +241,10 @@
 		return addextent(es, es->lru, start, len);
 	}else if(dir > 0){
 		while(e->high != nil && (dir = belongs(e, start, len)) > 0){
-			es->lru = e;
+			eprev = e;
 			e = e->high;
 		}
+		es->lru = eprev;
 		/* es->lru e e->high */
 		if(dir == 0)
 			return increment(es, e, start, len);