code: mafs

Download patch

ref: 760708dc3894c802b7a0a01ed23386bb19a519d7
parent: 7d2937ab03a29b69f66845c73fc13de64b3349f6
author: 9ferno <gophone2015@gmail.com>
date: Tue Dec 6 21:14:09 EST 2022

refactored getbufchk and getmetachk to show the pc that locked the IO buffer

This makes it easier to figure out deadlocks

--- a/9p.c
+++ b/9p.c
@@ -100,6 +100,7 @@
 	if(dbuf != nil){
 		if(dbuf->xiobuf != nil &&
 			dbuf->xiobuf[0] == Tdentry &&
+			((Dentry*)dbuf->new)->path != Qpnone &&
 			dbuf->append != nil)
 			flush(dbuf);
 		else
@@ -1375,7 +1376,7 @@
 		nblocks = nlastdatablocks(d->size);
 		nblockssize = nblocks*Blocksize -Ddataidssize;
 	}
-	oldbuf = getbufchk(oldblkno, nblocks, Bwritable, Tdata, d->path);
+	oldbuf = getbufchk(oldblkno, nblocks, Bwritable, Tdata, d->path, getcallerpc(&d));
 	if(oldbuf == nil)
 		return -1;
 
@@ -1466,7 +1467,7 @@
 			/* partial block, above is = not == */
 			oldblkno = rel2abs(d, d->size/Maxdatablocksize);
 			oldbuf = getbufchk(oldblkno, nlastdatablocks(lastdatablksize),
-								Bwritable, Tdata, d->path);
+								Bwritable, Tdata, d->path, getcallerpc(&dbuf));
 			if(oldbuf == nil){
 				freeblocks(newblkno, Maxdatablockunits, Tdata, d->path);
 				return -1;
@@ -1570,7 +1571,7 @@
 		/* partial block, above is = not == */
 		oldblkno = rel2abs(d, d->size/Maxdatablocksize);
 		oldbuf = getbufchk(oldblkno, nlastdatablocks(lastdatablksize),
-							Bwritable, Tdata, d->path);
+							Bwritable, Tdata, d->path, getcallerpc(&dbuf));
 		if(oldbuf == nil){
 			freeblocks(newblkno, newblocks, Tdata, d->path);
 			return -1;
--- a/TODO
+++ b/TODO
@@ -4,6 +4,8 @@
 sort extents by size
 	does that help?
 		finds stuff quicker - really, by how much?
+disk/used
+	check that the file size is matched by the number of blocks
 test exclusive use file access
 test syncusers()
 not updating Qid.version on writes or changes(?)
--- a/all.h
+++ b/all.h
@@ -94,6 +94,7 @@
 	u8 freshalloc;	/* uninitialized blocks on the disk */
 	u64 atime;		/* to find old buffers to flush to the disk */
 	u8 tag;
+	u64 callerpc;	/* when locked, the locker pc for debugging */
 };
 
 extern	u64	nbuckets;		/* n hash buckets for i/o */
@@ -107,8 +108,8 @@
 void	freememunits(u8 *m, u16 len);
 void	fsflush(void);
 int		checktag(Iobuf *p, u16 len, u8 tag, u64 qpath);
-Iobuf*	getbuf(u64 blkno, u16 len, u8 readonly, u8 freshalloc);
-Iobuf*	getbufchk(u64 blkno, u16 len, u8 readonly, int tag, u64 qpath);
+Iobuf*	getbuf(u64 blkno, u16 len, u8 readonly, u8 freshalloc, u64 userpc);
+Iobuf*	getbufchk(u64 blkno, u16 len, u8 readonly, int tag, u64 qpath, u64 userpc);
 Iobuf*	getmeta(u64 blkno, u8 readonly, u8 freshalloc);
 Iobuf*	getmetachk(u64 blkno, u8 readonly, int tag, u64 qpath);
 void	iobufinit(void);
@@ -159,7 +160,7 @@
 void	truncatefile(u64 qpath, u64 dblkno, s16 uid);
 s32		writeallappend(Iobuf *dbuf, Dentry *d, u64 dblkno);
 s32		writefile(u64 dblkno, u64 qpath, s16 uid, char *wbuf, s32 wbufsize, u64 offset);
-s8		flush(Iobuf *b);
+void	flush(Iobuf *b);
 u64		sync(void);
 void	flushold(void);
 
--- a/blk.c
+++ b/blk.c
@@ -101,16 +101,17 @@
 		fprint(fd, "%s\n", tagnames[tag]);
 		return;
 	}else if(tag == Tdentry){
-		fprint(fd, "%s %llud %d\n", tagnames[tag], d->path, d->verd);
+		fprint(fd, "%s qid.path %llud ver %d\n", tagnames[tag], d->path, d->verd);
 		showdentry(fd, buf);
 		return;
 	}else if(tag == Tdata){
-		fprint(fd, "%s %llud %llud %d\n",
+		fprint(fd, "%s qid.path %llud dblkno %llud len %d\n",
 			tagnames[tag], ((u64*)buf)[t->len*Nu64perblock -1], t->dblkno, t->len);
 		showdata(fd, buf);
 		return;
 	}else if(tag < Maxtind)
-		fprint(fd, "%s %llud %d %llud\n", tagnames[tag], r->path, r->veri, r->dblkno);
+		fprint(fd, "%s qid.path %llud ver %d dblkno %llud\n",
+				tagnames[tag], r->path, r->veri, r->dblkno);
 
 	if(tag >= Tind0 && tag < Maxtind)
 		showind(fd, buf);
--- a/dentry.c
+++ b/dentry.c
@@ -1,25 +1,24 @@
 #include	"all.h"
 
 /* b shoud be wlock'ed */
-s8
+void
 flush(Iobuf *b)
 {
-	if(b->tag != Tdentry)
-		return 0;
+	u8 dowrite = 0;
+
+	if(b == nil ||
+		b->xiobuf == nil ||
+		b->xiobuf[0] != Tdentry)
+		panic("flush called on buf with tag %s\n", tagnames[b->tag]);
 	if(b->append != nil){
 		if(b->appendsize > 0){
-			recentmetadata(b->m, &b->cur, &b->new);
-			/* writable */
-			memcpy(b->new, b->cur, Blocksize);
-			b->new->verd++;
 			writeallappend(b, b->new, b->blkno);
-			putbuf(b, 1);
+			dowrite = 1;
 		}
 		freememunits(b->append, Maxdatablockunits);
 		b->append = nil;
-		return 0;
 	}
-	return 1;
+	putbuf(b, dowrite);	/* to wunlock b */
 }
 
 u64
@@ -561,9 +560,9 @@
 		return nil;
 
 	if(reli < d->size/Maxdatablocksize)
-		buf = getbufchk(blkno, Maxdatablockunits, Breadonly, Tdata, d->path);
+		buf = getbufchk(blkno, Maxdatablockunits, Breadonly, Tdata, d->path, getcallerpc(&d));
 	else
-		buf = getbufchk(blkno, nlastdatablocks(d->size), Breadonly, Tdata, d->path);
+		buf = getbufchk(blkno, nlastdatablocks(d->size), Breadonly, Tdata, d->path, getcallerpc(&d));
 	if(buf == nil){
 		putbuf(buf, 0);
 		dprint("%s",errstring[Ephase]);
--- a/docs/mafs.ms
+++ b/docs/mafs.ms
@@ -1503,6 +1503,9 @@
 		63.81 MB/s
 	echo halt >>/srv/hjfs.cmd
 	unmount /n/ramfs
+
+	time disk/used /dev/sdF1/fs > /tmp/used.blocks # on 600 GiB data stored to a SATA disk
+	3.45u 30.41s 3201.71r 	 disk/used /dev/sdF1/fs
 .fi
 .sp
 Profiling instructions:
--- a/extents.c
+++ b/extents.c
@@ -15,6 +15,7 @@
  * large extent, if they are continuous.
  */
 
+/* Extent *sortbysize(Extents *es, Extent *e); */
 void	showextent(int fd, char *pre, Extent *e);
 
 s64
@@ -128,7 +129,32 @@
 	es->lru = e;
 }
 
+/*
 Extent *
+smallest(Extents *es)
+{
+	Extent *e;
+
+	if(es == nil || es->lru == nil)
+		return nil;
+	for(e = es->lru; e!=nil && e->small != nil; e=e->small)
+		;
+	return e;
+}
+
+Extent *
+biggest(Extents *es)
+{
+	Extent *e;
+
+	if(es == nil || es->lru == nil)
+		return nil;
+	for(e = es->lru; e!=nil && e->big != nil; e=e->big)
+		;
+	return e;
+} */
+
+Extent *
 lowest(Extents *es)
 {
 	Extent *e;
@@ -484,13 +510,14 @@
 	return start;
 }
 
-/* reallocate n blocks to nnew blocks and return that block number
+/*
+ reallocate n blocks to nnew blocks and return that block number
    It is upto the caller to copy the contents and bfree() the old
    block number if the returned block number <> old block number.
    Not providing brealloc() as we would need access to the contents
    to copy stuff over.
+ free n blocks allocated at block number
  */
-/* free n blocks allocated at block number */
 void
 bfree(Extents *es, u64 start, u64 len)
 {
@@ -670,32 +697,6 @@
 	return p;
 }
 
-s8
-find(Extents *es, u64 bno)
-{
-	s64 dir;
-	Extent *e;
-
-	if(es == nil || es->lru == nil)
-		return 0;
-	e = searchlrus(es, bno, 1, &dir);
-	if(dir < 0){
-		for(; e!= nil; e = e->low){
-			if(e->start < bno && bno < e->start+e->len)
-				return 1;
-		}
-	}else if(dir > 0){
-		for(; e!= nil; e = e->high){
-			if(e->start < bno && bno < e->start+e->len)
-				return 1;
-		}
-	}else{ /* dir == 0 */
-		if(e->start < bno && bno < e->start+e->len)
-			return 1;
-	}
-	return 0;
-}
-
 void
 initextents(Extents *es, char *name, void (*flush)(void))
 {
@@ -723,6 +724,33 @@
 	}
 	return inv;
 }
+
+/* slow, easier to the sorted linked list
+s8
+find(Extents *es, u64 bno)
+{
+	s64 dir;
+	Extent *e;
+
+	if(es == nil || es->lru == nil)
+		return 0;
+	e = searchlrus(es, bno, 1, &dir);
+	if(dir < 0){
+		for(; e!= nil; e = e->low){
+			if(e->start < bno && bno < e->start+e->len)
+				return 1;
+		}
+	}else if(dir > 0){
+		for(; e!= nil; e = e->high){
+			if(e->start < bno && bno < e->start+e->len)
+				return 1;
+		}
+	}else{ \/* dir == 0 *\/
+		if(e->start < bno && bno < e->start+e->len)
+			return 1;
+	}
+	return 0;
+} */
 
 /* obsolete */
 Extent *
--- a/extents.h
+++ b/extents.h
@@ -2,6 +2,7 @@
 /*
  * an ordered linked list sorted by block number (->low, ->high).
  * ->big or ->small sorted by size and then block number.
+ a0b87fe3412831eee80e3ed0a112181dc2aaff13
  */
 typedef struct Extent Extent;
 typedef struct Extents Extents;
@@ -13,6 +14,7 @@
 */
 struct Extent {
 	struct Extent *low, *high;	/* sorted by start */
+	/*struct Extent *small, *big;*//* sorted by the number of blocks in this extent */
 	u64 start;					/* where this extent starts from */
 	u64 len; 					/* how many units in this extent */
 
--- a/iobuf.c
+++ b/iobuf.c
@@ -150,6 +150,7 @@
 					p->tag == Tdentry &&
 					p->append != nil &&
 					canwlock(p)){
+					p->callerpc = 1;
 					qunlock(hp);
 					flush(p);
 					goto Again;
@@ -163,7 +164,7 @@
 				canwlock(p)){
 				qunlock(hp);
 				flush(p);
-				goto Oldbufs;
+				goto Again;
 			}
 		}
 		qunlock(hp);
@@ -189,8 +190,10 @@
 						p->back->fore = p->fore;
 						p->fore->back = p->back;
 						hp->n--;
+						p->callerpc = 3;
 						qunlock(hp);
-						flush(p);
+						if(p->tag == Tdentry)
+							flush(p);
 						freememunits(p->xiobuf, p->len);
 						free(p);
 						goto Oldbufs;
@@ -259,7 +262,7 @@
 	Hiob.link->back is the oldest buffer that will be reused first.
  */
 Iobuf *
-getbuf(u64 blkno, u16 len, u8 readonly, u8 freshalloc)
+getbuf(u64 blkno, u16 len, u8 readonly, u8 freshalloc, u64 callerpc)
 {
 	Hiob *hp;
 	Iobuf *s, *p;
@@ -323,6 +326,7 @@
 				if(chatty9p > 4)
 					dprint("	after wlock() blkno %llud\n", blkno);
 			}
+			p->callerpc = callerpc;
 			decref(p);
 			return p;
 		}
@@ -404,19 +408,19 @@
 		wunlock(p);
 		rlock(p);
 	}
+	p->callerpc = callerpc;
 	decref(p);
 	return p;
 }
 
 Iobuf *
-getbufchk(u64 blkno, u16 len, u8 readonly, int tag, u64 qpath)
+getbufchk(u64 blkno, u16 len, u8 readonly, int tag, u64 qpath, u64 userpc)
 {
 	Iobuf *b;
 
-	if(chatty9p > 4)
-		dprint("getbufchk caller pc 0x%p\n", getcallerpc(&blkno));
-	b = getbuf(blkno, len, readonly, Bused);
-	if(b != nil)
+	b = getbuf(blkno, len, readonly, Bused, userpc);
+	if(b != nil){
+		b->tag = b->xiobuf[0];
 		if(tag > Tdata && tag < MAXTAG){
 			recentmetadata(b->m, &b->cur, &b->new);
 			if(readonly == 0){ /* writable */
@@ -428,6 +432,7 @@
 			putbuf(b, 0);
 			panic("checktag on %llud failed %s\n", blkno, errstring[Ephase]);
 		}
+	}
 	if(b->io == nil)
 		panic("b->io == nil blkno %llud readonly %d tag %d"
 				" qpath %llud b->blkno %llud caller %#p\n",
@@ -439,7 +444,9 @@
 Iobuf *
 getmetachk(u64 blkno, u8 readonly, int tag, u64 qpath)
 {
-	return getbufchk(blkno, Metadataunits, readonly, tag, qpath);
+	return getbufchk(blkno, Metadataunits, readonly,
+					 tag, qpath,
+					 getcallerpc(&blkno));
 }
 
 Iobuf *
@@ -447,13 +454,14 @@
 {
 	Iobuf *b;
 
-	b = getbuf(blkno, Metadataunits, readonly, freshalloc);
-	if(b == nil)
-		return nil;
-	recentmetadata(b->m, &b->cur, &b->new);
-	if(readonly == 0){ /* writable */
-		memcpy(b->new, b->cur, Blocksize);
-		b->new->verd++;
+	b = getbuf(blkno, Metadataunits, readonly,
+				freshalloc, getcallerpc(&blkno));
+	if(b != nil){
+		recentmetadata(b->m, &b->cur, &b->new);
+		if(readonly == 0){ /* writable */
+			memcpy(b->new, b->cur, Blocksize);
+			b->new->verd++;
+		}
 	}
 	return b;
 }
--- a/reconcile.c
+++ b/reconcile.c
@@ -49,7 +49,7 @@
 s8 *estrdup(s8 *);
 void show(Stream * s);
 s8 find(Extents *es, u64 bno);
-void common(Stream *u, Stream *f);
+void common(u64 nblocks, Stream *u, Stream *f);
 void missing(u64 nblocks, Stream *u, Stream *f);
 
 static void
@@ -66,6 +66,8 @@
 	Stream u, f;	/* u = used, f = free */
 	u64 nblocks;
 
+	memset(&u, 0, sizeof(Stream));
+	memset(&f, 0, sizeof(Stream));
 	ARGBEGIN{
 	default:	usage();
 	case 'D':	chatty9p = ++debug;					break;
@@ -83,8 +85,8 @@
 	if(nblocks == 0)
 		sysfatal("nblocks == 0");
 
-	strncpy(u.name, "used", 32);
-	strncpy(f.name, "free", 32);
+	strncpy(u.name, "used", 5);
+	strncpy(f.name, "free", 5);
 	init(&u); init(&f);
 
 	collect(&u); collect(&f);
@@ -92,9 +94,9 @@
 		show(&u); show(&f);
 	}
 	/* identify common blocks */
-	common(&u, &f);
+	common(nblocks, &u, &f);
 	/* identify missing blocks */
-	missing(nblocks, &u, &f);
+//	missing(nblocks, &u, &f);
 
 	/* why bother? just exits(nil) as cinap suggests */
 	Bterm(&u.bp); Bterm(&f.bp);
@@ -108,13 +110,26 @@
 {
 	u64 i;
 	u8 header = 0;
+	Extent *ue, *fe;
 
+	ue = u->es->head;
+	fe = f->es->head;
 	for(i = 0; i < nblocks; i++){
-		if(find(u->es, i) == 0 && find(f->es, i) == 0){
-			if(header++ == 0)
-				print("missing: ");
-			print(" %llud", i);
+		if(ue != nil && ue->start <= i && i < ue->start+ue->len){
+			if(i == ue->start+ue->len-1)
+				ue = ue->high;
+			continue;
 		}
+		if(fe != nil && fe->start <= i && i < fe->start+fe->len){
+			if(i == fe->start+fe->len-1)
+				fe = fe->high;
+			continue;
+		}
+		if(header == 0){
+			header++;
+			print("missing: ");
+		}
+		print(" %llud", i);
 	}
 	if(header)
 	print("\n");
@@ -121,27 +136,34 @@
 }
 
 void
-common(Stream *u, Stream *f)
+common(u64 nblocks, Stream *u, Stream *f)
 {
-	Extent *e;
-	u64 bno;
+	u64 i;
 	u8 header = 0;
+	Extent *ue, *fe;
 
-	if(u == nil || u->es == nil){
-		print("common: no used extents\n");
+	ue = u->es->head;
+	fe = f->es->head;
+	if(fe == nil)	/* disk is full */
 		return;
-	}
-	for(e = lowest(u->es); e != nil; e=e->high){
-		for(bno = e->start; bno<e->start+e->len; bno++){
-			if(find(f->es, bno) == 1){
-				if(header++ == 0)
-					print("common: ");
-				print(" %llud", bno);
+	for(i = 0; i < nblocks; i++){
+		if(ue->start <= i && i < ue->start+ue->len &&
+			fe->start <= i && i < fe->start+fe->len){
+			if(header == 0){
+				header++;
+				print("common: ");
 			}
+			print(" %llud", i);
 		}
+		if(i == ue->start+ue->len-1)
+			ue = ue->high;
+		if(i == fe->start+fe->len-1)
+			fe = fe->high;
+		if(ue == nil || fe == nil)
+			break;
 	}
 	if(header)
-	print("\n");
+		print("\n");
 }
 
 static void
--- a/sub.c
+++ b/sub.c
@@ -81,7 +81,7 @@
 		dprint("alloc %llud\n", blkno);
 
 	/* cannot do getbufchk() unless we ream the whole disk at start */
-	buf = getbuf(blkno, len, Bwritable, Bfreshalloc);
+	buf = getbuf(blkno, len, Bwritable, Bfreshalloc, getcallerpc(&len));
 
 	/* clear the buf to avoid leaks on reuse */
 	memset(buf->xiobuf, 0, len*Blocksize);
@@ -132,7 +132,7 @@
 		return;
 	}
 
-	buf = getbufchk(blkno, len, Bwritable, tag, qpath);
+	buf = getbufchk(blkno, len, Bwritable, tag, qpath, getcallerpc(&blkno));
 	if(buf == nil)
 		dprint("%s",errstring[Ephase]);
 	freeblockbuf(buf);
@@ -386,7 +386,7 @@
 	Iobuf *sbuf;
 	Dentry *s;
 
-	sbuf = getbuf(Bdsuper, Metadataunits, Bwritable, Bfreshalloc);
+	sbuf = getbuf(Bdsuper, Metadataunits, Bwritable, Bfreshalloc, getcallerpc(&size));
 	if(sbuf == nil)
 		panic("superream: sbuf == nil");
 	sbuf->cur = sbuf->new = (Metadataunit*)sbuf->m;
--- a/tests/test.0/blocks/0
+++ b/tests/test.0/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670039751338466663
+mtime 1670375705285939595
 path 1
 version 0
 mode 20000000777
--- a/tests/test.0/blocks/10
+++ b/tests/test.0/blocks/10
@@ -1,4 +1,4 @@
-Tdentry 10 1
+Tdentry qid.path 10 ver 1
 name bkp
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670039751338979046
+mtime 1670375705286461656
 path 10
 version 0
 mode 20000000777
--- a/tests/test.0/blocks/12
+++ b/tests/test.0/blocks/12
@@ -1,4 +1,4 @@
-Tdentry 12 1
+Tdentry qid.path 12 ver 1
 name inuse
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 95
 pdblkno 8
 pqpath 8
-mtime 1670039751339500816
+mtime 1670375705287083045
 path 12
 version 0
 mode 444
--- a/tests/test.0/blocks/14
+++ b/tests/test.0/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 8
 pdblkno 6
 pqpath 6
-mtime 1670039752467100350
+mtime 1670375706414010605
 path 14
 version 0
 mode 444
--- a/tests/test.0/blocks/15
+++ b/tests/test.0/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670039752466693664
+mtime 1670375706413487718
 path 14
 version 0
 mode 444
--- a/tests/test.0/blocks/16
+++ b/tests/test.0/blocks/16
@@ -1,4 +1,4 @@
-Tdentry 16 1
+Tdentry qid.path 16 ver 1
 name ctl
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670039751340838239
+mtime 1670375705288378560
 path 16
 version 0
 mode 444
--- a/tests/test.0/blocks/18
+++ b/tests/test.0/blocks/18
@@ -1,4 +1,4 @@
-Tdentry 18 1
+Tdentry qid.path 18 ver 1
 name staging
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 8
 pqpath 8
-mtime 1670039751341373952
+mtime 1670375705288856018
 path 18
 version 0
 mode 444
--- a/tests/test.0/blocks/2
+++ b/tests/test.0/blocks/2
@@ -1,4 +1,4 @@
-Tdentry 2 1
+Tdentry qid.path 2 ver 1
 name config
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 105
 pdblkno 6
 pqpath 6
-mtime 1670039751340302434
+mtime 1670375705287894082
 path 2
 version 0
 mode 444
--- a/tests/test.0/blocks/20
+++ b/tests/test.0/blocks/20
@@ -1,4 +1,4 @@
-Tdentry 20 1
+Tdentry qid.path 20 ver 1
 name /
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 0
 pqpath 0
-mtime 1670039751339767422
+mtime 1670375705287347230
 path 20
 version 0
 mode 20000000777
--- a/tests/test.0/blocks/26
+++ b/tests/test.0/blocks/26
@@ -1,4 +1,4 @@
-Tdentry 21 1
+Tdentry qid.path 21 ver 1
 name root.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670039751337616937
+mtime 1670375705284880574
 path 21
 version 0
 mode 444
--- a/tests/test.0/blocks/27
+++ b/tests/test.0/blocks/27
@@ -1,4 +1,4 @@
-Tdentry 21 2
+Tdentry qid.path 21 ver 2
 name root.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670039751340035492
+mtime 1670375705287529560
 path 21
 version 0
 mode 444
--- a/tests/test.0/blocks/28
+++ b/tests/test.0/blocks/28
@@ -1,4 +1,4 @@
-Tdentry 5 5
+Tdentry qid.path 5 ver 5
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670039751342979260
+mtime 1670375705290498391
 path 5
 version 0
 mode 444
--- a/tests/test.0/blocks/29
+++ b/tests/test.0/blocks/29
@@ -1,4 +1,4 @@
-Tdentry 5 6
+Tdentry qid.path 5 ver 6
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670039752466297692
+mtime 1670375706413244479
 path 5
 version 0
 mode 444
--- a/tests/test.0/blocks/30
+++ b/tests/test.0/blocks/30
@@ -1,4 +1,4 @@
-Tdentry 3 1
+Tdentry qid.path 3 ver 1
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670039751337098761
+mtime 1670375705284419597
 path 3
 version 0
 mode 444
--- a/tests/test.0/blocks/31
+++ b/tests/test.0/blocks/31
@@ -1,4 +1,4 @@
-Tdentry 3 2
+Tdentry qid.path 3 ver 2
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670039751340572013
+mtime 1670375705288112727
 path 3
 version 0
 mode 444
--- a/tests/test.0/blocks/4
+++ b/tests/test.0/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 5
+Tdentry qid.path 4 ver 5
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670039751337085067
+mtime 1670375705284403444
 path 4
 version 0
 mode 444
--- a/tests/test.0/blocks/5
+++ b/tests/test.0/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 4
+Tdentry qid.path 4 ver 4
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670039751337085067
+mtime 1670375705284403444
 path 4
 version 0
 mode 444
--- a/tests/test.0/blocks/6
+++ b/tests/test.0/blocks/6
@@ -1,4 +1,4 @@
-Tdentry 6 1
+Tdentry qid.path 6 ver 1
 name adm
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670039751338703709
+mtime 1670375705286172366
 path 6
 version 0
 mode 20000000777
--- a/tests/test.0/blocks/8
+++ b/tests/test.0/blocks/8
@@ -1,4 +1,4 @@
-Tdentry 8 1
+Tdentry qid.path 8 ver 1
 name users
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670039751339242208
+mtime 1670375705286788812
 path 8
 version 0
 mode 20000000777
--- a/tests/test.1/blocks/0
+++ b/tests/test.1/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670039782167824074
+mtime 1670367676963031586
 path 1
 version 0
 mode 20000000777
--- a/tests/test.1/blocks/10
+++ b/tests/test.1/blocks/10
@@ -1,4 +1,4 @@
-Tdentry 10 1
+Tdentry qid.path 10 ver 1
 name bkp
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670039782168320105
+mtime 1670367676963594153
 path 10
 version 0
 mode 20000000777
--- a/tests/test.1/blocks/12
+++ b/tests/test.1/blocks/12
@@ -1,4 +1,4 @@
-Tdentry 12 1
+Tdentry qid.path 12 ver 1
 name inuse
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 95
 pdblkno 8
 pqpath 8
-mtime 1670039782168845546
+mtime 1670367676964128461
 path 12
 version 0
 mode 444
--- a/tests/test.1/blocks/14
+++ b/tests/test.1/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670039783322292654
+mtime 1670367678113740264
 path 14
 version 0
 mode 444
--- a/tests/test.1/blocks/15
+++ b/tests/test.1/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670039783321993767
+mtime 1670367678113441103
 path 14
 version 0
 mode 444
--- a/tests/test.1/blocks/16
+++ b/tests/test.1/blocks/16
@@ -1,4 +1,4 @@
-Tdentry 16 1
+Tdentry qid.path 16 ver 1
 name ctl
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670039782170200524
+mtime 1670367676965683290
 path 16
 version 0
 mode 444
--- a/tests/test.1/blocks/18
+++ b/tests/test.1/blocks/18
@@ -1,4 +1,4 @@
-Tdentry 18 1
+Tdentry qid.path 18 ver 1
 name staging
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 8
 pqpath 8
-mtime 1670039782170732105
+mtime 1670367676966300357
 path 18
 version 0
 mode 444
--- a/tests/test.1/blocks/2
+++ b/tests/test.1/blocks/2
@@ -1,4 +1,4 @@
-Tdentry 2 1
+Tdentry qid.path 2 ver 1
 name config
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 105
 pdblkno 6
 pqpath 6
-mtime 1670039782169667019
+mtime 1670367676964943110
 path 2
 version 0
 mode 444
--- a/tests/test.1/blocks/20
+++ b/tests/test.1/blocks/20
@@ -1,4 +1,4 @@
-Tdentry 20 1
+Tdentry qid.path 20 ver 1
 name /
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 0
 pqpath 0
-mtime 1670039782169124843
+mtime 1670367676964410480
 path 20
 version 0
 mode 20000000777
--- a/tests/test.1/blocks/21
+++ b/tests/test.1/blocks/21
@@ -1,4 +1,4 @@
-Tdentry 20 2
+Tdentry qid.path 20 ver 2
 name /
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 0
 pqpath 0
-mtime 1670039782169124843
+mtime 1670367676964410480
 path 20
 version 0
 mode 20000000777
--- a/tests/test.1/blocks/22
+++ b/tests/test.1/blocks/22
@@ -1,4 +1,4 @@
-Tdentry 64 1
+Tdentry qid.path 64 ver 1
 name dir1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670039783309065561
+mtime 1670367678102533782
 path 64
 version 0
 mode 20000000777
--- a/tests/test.1/blocks/23
+++ b/tests/test.1/blocks/23
@@ -1,4 +1,4 @@
-Tdentry 64 2
+Tdentry qid.path 64 ver 2
 name dir1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670039783309065561
+mtime 1670367678102533782
 path 64
 version 0
 mode 20000000777
--- a/tests/test.1/blocks/24
+++ b/tests/test.1/blocks/24
@@ -1,4 +1,4 @@
-Tdentry 65 3
+Tdentry qid.path 65 ver 3
 name file1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 5
 pdblkno 22
 pqpath 64
-mtime 1670039783313710957
+mtime 1670367678106703213
 path 65
 version 0
 mode 666
--- a/tests/test.1/blocks/25
+++ b/tests/test.1/blocks/25
@@ -1,4 +1,4 @@
-Tdentry 65 2
+Tdentry qid.path 65 ver 2
 name file1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 22
 pqpath 64
-mtime 1670039783000000000
+mtime 1670367678000000000
 path 65
 version 0
 mode 666
--- a/tests/test.1/blocks/26
+++ b/tests/test.1/blocks/26
@@ -1,4 +1,4 @@
-Tdentry 21 3
+Tdentry qid.path 21 ver 3
 name root.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670039783310425307
+mtime 1670367678103624014
 path 21
 version 0
 mode 444
--- a/tests/test.1/blocks/27
+++ b/tests/test.1/blocks/27
@@ -1,4 +1,4 @@
-Tdentry 21 2
+Tdentry qid.path 21 ver 2
 name root.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670039782169393493
+mtime 1670367676964676066
 path 21
 version 0
 mode 444
--- a/tests/test.1/blocks/28
+++ b/tests/test.1/blocks/28
@@ -1,4 +1,4 @@
-Tdentry 5 7
+Tdentry qid.path 5 ver 7
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670039783311916063
+mtime 1670367678105051528
 path 5
 version 0
 mode 444
--- a/tests/test.1/blocks/29
+++ b/tests/test.1/blocks/29
@@ -1,4 +1,4 @@
-Tdentry 5 8
+Tdentry qid.path 5 ver 8
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670039783321687947
+mtime 1670367678113133874
 path 5
 version 0
 mode 444
--- a/tests/test.1/blocks/30
+++ b/tests/test.1/blocks/30
@@ -1,4 +1,4 @@
-Tdentry 3 1
+Tdentry qid.path 3 ver 1
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670039782166501433
+mtime 1670367676961801080
 path 3
 version 0
 mode 444
--- a/tests/test.1/blocks/31
+++ b/tests/test.1/blocks/31
@@ -1,4 +1,4 @@
-Tdentry 3 2
+Tdentry qid.path 3 ver 2
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670039782169934629
+mtime 1670367676965259381
 path 3
 version 0
 mode 444
--- a/tests/test.1/blocks/4
+++ b/tests/test.1/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 7
+Tdentry qid.path 4 ver 7
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670039782166487272
+mtime 1670367676961792740
 path 4
 version 0
 mode 444
--- a/tests/test.1/blocks/5
+++ b/tests/test.1/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 6
+Tdentry qid.path 4 ver 6
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670039782166487272
+mtime 1670367676961792740
 path 4
 version 0
 mode 444
--- a/tests/test.1/blocks/6
+++ b/tests/test.1/blocks/6
@@ -1,4 +1,4 @@
-Tdentry 6 1
+Tdentry qid.path 6 ver 1
 name adm
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670039782168065053
+mtime 1670367676963269270
 path 6
 version 0
 mode 20000000777
--- a/tests/test.1/blocks/8
+++ b/tests/test.1/blocks/8
@@ -1,4 +1,4 @@
-Tdentry 8 1
+Tdentry qid.path 8 ver 1
 name users
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670039782168590196
+mtime 1670367676963865386
 path 8
 version 0
 mode 20000000777
--- a/tests/test.2/blocks/0
+++ b/tests/test.2/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040029718680810
+mtime 1670375685244522881
 path 1
 version 0
 mode 20000000777
--- a/tests/test.2/blocks/10
+++ b/tests/test.2/blocks/10
@@ -1,4 +1,4 @@
-Tdentry 10 1
+Tdentry qid.path 10 ver 1
 name bkp
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040029719189613
+mtime 1670375685244966288
 path 10
 version 0
 mode 20000000777
--- a/tests/test.2/blocks/12
+++ b/tests/test.2/blocks/12
@@ -1,4 +1,4 @@
-Tdentry 12 1
+Tdentry qid.path 12 ver 1
 name inuse
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 95
 pdblkno 8
 pqpath 8
-mtime 1670040029719728309
+mtime 1670375685245568790
 path 12
 version 0
 mode 444
--- a/tests/test.2/blocks/14
+++ b/tests/test.2/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 9
 pdblkno 6
 pqpath 6
-mtime 1670040031021997109
+mtime 1670375686568031950
 path 14
 version 0
 mode 444
--- a/tests/test.2/blocks/15
+++ b/tests/test.2/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040031021677981
+mtime 1670375686567723006
 path 14
 version 0
 mode 444
--- a/tests/test.2/blocks/16
+++ b/tests/test.2/blocks/16
@@ -1,4 +1,4 @@
-Tdentry 16 1
+Tdentry qid.path 16 ver 1
 name ctl
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040029721048104
+mtime 1670375685246818791
 path 16
 version 0
 mode 444
--- a/tests/test.2/blocks/18
+++ b/tests/test.2/blocks/18
@@ -1,4 +1,4 @@
-Tdentry 18 1
+Tdentry qid.path 18 ver 1
 name staging
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 8
 pqpath 8
-mtime 1670040029721583735
+mtime 1670375685247329086
 path 18
 version 0
 mode 444
--- a/tests/test.2/blocks/2
+++ b/tests/test.2/blocks/2
@@ -1,4 +1,4 @@
-Tdentry 2 1
+Tdentry qid.path 2 ver 1
 name config
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 105
 pdblkno 6
 pqpath 6
-mtime 1670040029720529220
+mtime 1670375685246308832
 path 2
 version 0
 mode 444
--- a/tests/test.2/blocks/22
+++ b/tests/test.2/blocks/22
@@ -1,4 +1,4 @@
-Tdentry 71 43
+Tdentry qid.path 71 ver 39
 name file1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 1135
 pdblkno 20
 pqpath 20
-mtime 1670040031010313967
+mtime 1670375686555684157
 path 71
 version 0
 mode 666
--- a/tests/test.2/blocks/23
+++ b/tests/test.2/blocks/23
@@ -1,4 +1,4 @@
-Tdentry 0 44
+Tdentry qid.path 0 ver 40
 name 
 uid 0
 gid 0
--- a/tests/test.2/blocks/24
+++ b/tests/test.2/blocks/24
@@ -1,4 +1,4 @@
-Tdata 71 22 3
+Tdata qid.path 71 dblkno 22 len 3
 0123456789
 0123456789
 0123456789
--- a/tests/test.2/blocks/4
+++ b/tests/test.2/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 13
+Tdentry qid.path 4 ver 13
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040029717295177
+mtime 1670375685243133544
 path 4
 version 0
 mode 444
--- a/tests/test.2/blocks/5
+++ b/tests/test.2/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 12
+Tdentry qid.path 4 ver 12
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040029717295177
+mtime 1670375685243133544
 path 4
 version 0
 mode 444
--- a/tests/test.2/blocks/6
+++ b/tests/test.2/blocks/6
@@ -1,4 +1,4 @@
-Tdentry 6 1
+Tdentry qid.path 6 ver 1
 name adm
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040029718927356
+mtime 1670375685244754061
 path 6
 version 0
 mode 20000000777
--- a/tests/test.2/blocks/8
+++ b/tests/test.2/blocks/8
@@ -1,4 +1,4 @@
-Tdentry 8 1
+Tdentry qid.path 8 ver 1
 name users
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040029719468345
+mtime 1670375685245353822
 path 8
 version 0
 mode 20000000777
--- a/tests/test.3/blocks/0
+++ b/tests/test.3/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040166770178097
+mtime 1670375797084677071
 path 1
 version 0
 mode 20000000777
--- a/tests/test.3/blocks/10
+++ b/tests/test.3/blocks/10
@@ -1,4 +1,4 @@
-Tdentry 10 1
+Tdentry qid.path 10 ver 1
 name bkp
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040166770690429
+mtime 1670375797085128933
 path 10
 version 0
 mode 20000000777
--- a/tests/test.3/blocks/14
+++ b/tests/test.3/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 15
 pdblkno 6
 pqpath 6
-mtime 1670040171920325525
+mtime 1670375802254378870
 path 14
 version 0
 mode 444
--- a/tests/test.3/blocks/15
+++ b/tests/test.3/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040171920116861
+mtime 1670375802254149861
 path 14
 version 0
 mode 444
--- a/tests/test.3/blocks/2
+++ b/tests/test.3/blocks/2
@@ -1,4 +1,4 @@
-Tdentry 2 1
+Tdentry qid.path 2 ver 1
 name config
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 120
 pdblkno 6
 pqpath 6
-mtime 1670040166772005051
+mtime 1670375797086445412
 path 2
 version 0
 mode 444
--- a/tests/test.3/blocks/4
+++ b/tests/test.3/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 15
+Tdentry qid.path 4 ver 15
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040166768513728
+mtime 1670375797082605671
 path 4
 version 0
 mode 444
--- a/tests/test.3/blocks/40956
+++ b/tests/test.3/blocks/40956
@@ -1,4 +1,4 @@
-Tdentry 5 15
+Tdentry qid.path 5 ver 15
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040169941557474
+mtime 1670375800257494611
 path 5
 version 0
 mode 444
--- a/tests/test.3/blocks/40957
+++ b/tests/test.3/blocks/40957
@@ -1,4 +1,4 @@
-Tdentry 5 16
+Tdentry qid.path 5 ver 16
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040171919859216
+mtime 1670375802253827118
 path 5
 version 0
 mode 444
--- a/tests/test.3/blocks/40958
+++ b/tests/test.3/blocks/40958
@@ -1,4 +1,4 @@
-Tdentry 3 1
+Tdentry qid.path 3 ver 1
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040166768523816
+mtime 1670375797082621297
 path 3
 version 0
 mode 444
--- a/tests/test.3/blocks/40959
+++ b/tests/test.3/blocks/40959
@@ -1,4 +1,4 @@
-Tdentry 3 2
+Tdentry qid.path 3 ver 2
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040166772255851
+mtime 1670375797086680270
 path 3
 version 0
 mode 444
--- a/tests/test.3/blocks/5
+++ b/tests/test.3/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 14
+Tdentry qid.path 4 ver 14
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040166768513728
+mtime 1670375797082605671
 path 4
 version 0
 mode 444
--- a/tests/test.3/blocks/6
+++ b/tests/test.3/blocks/6
@@ -1,4 +1,4 @@
-Tdentry 6 1
+Tdentry qid.path 6 ver 1
 name adm
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040166770418165
+mtime 1670375797084897552
 path 6
 version 0
 mode 20000000777
--- a/tests/test.3/blocks/8
+++ b/tests/test.3/blocks/8
@@ -1,4 +1,4 @@
-Tdentry 8 1
+Tdentry qid.path 8 ver 1
 name users
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040166770953783
+mtime 1670375797085388020
 path 8
 version 0
 mode 20000000777
--- a/tests/test.4/blocks/0
+++ b/tests/test.4/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670037902446258931
+mtime 1670040259762254877
 path 1
 version 0
 mode 20000000777
--- a/tests/test.4/blocks/14
+++ b/tests/test.4/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 9
 pdblkno 6
 pqpath 6
-mtime 1670037903624310585
+mtime 1670040260938959569
 path 14
 version 0
 mode 444
--- a/tests/test.4/blocks/15
+++ b/tests/test.4/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670037903624032341
+mtime 1670040260938658569
 path 14
 version 0
 mode 444
--- a/tests/test.4/blocks/4
+++ b/tests/test.4/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 9
+Tdentry qid.path 4 ver 9
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670037902444902863
+mtime 1670040259760881004
 path 4
 version 0
 mode 444
--- a/tests/test.4/blocks/5
+++ b/tests/test.4/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 10
+Tdentry qid.path 4 ver 10
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670037902444902863
+mtime 1670040259760881004
 path 4
 version 0
 mode 444
--- a/tests/test.5/blocks/0
+++ b/tests/test.5/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670037912551092382
+mtime 1670040288087087100
 path 1
 version 0
 mode 20000000777
--- a/tests/test.5/blocks/14
+++ b/tests/test.5/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 15
 pdblkno 6
 pqpath 6
-mtime 1670037913894935575
+mtime 1670040289425428944
 path 14
 version 0
 mode 444
--- a/tests/test.5/blocks/15
+++ b/tests/test.5/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670037913894647157
+mtime 1670040289425152161
 path 14
 version 0
 mode 444
--- a/tests/test.5/blocks/4
+++ b/tests/test.5/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 7
+Tdentry qid.path 4 ver 7
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670037912549696086
+mtime 1670040288085711141
 path 4
 version 0
 mode 444
--- a/tests/test.5/blocks/5
+++ b/tests/test.5/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 6
+Tdentry qid.path 4 ver 6
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670037912549696086
+mtime 1670040288085711141
 path 4
 version 0
 mode 444
--- a/tests/test.6/blocks/0
+++ b/tests/test.6/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040331410306589
+mtime 1670040392462958068
 path 1
 version 0
 mode 20000000777
--- a/tests/test.6/blocks/10
+++ b/tests/test.6/blocks/10
@@ -1,4 +1,4 @@
-Tdentry 10 1
+Tdentry qid.path 10 ver 1
 name bkp
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040331410833277
+mtime 1670040392463476437
 path 10
 version 0
 mode 20000000777
--- a/tests/test.6/blocks/12
+++ b/tests/test.6/blocks/12
@@ -1,4 +1,4 @@
-Tdentry 12 1
+Tdentry qid.path 12 ver 1
 name inuse
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 95
 pdblkno 8
 pqpath 8
-mtime 1670040331411365096
+mtime 1670040392464007632
 path 12
 version 0
 mode 444
--- a/tests/test.6/blocks/14
+++ b/tests/test.6/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040333563020997
+mtime 1670040394615118576
 path 14
 version 0
 mode 444
--- a/tests/test.6/blocks/15
+++ b/tests/test.6/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040333562638654
+mtime 1670040394614875735
 path 14
 version 0
 mode 444
--- a/tests/test.6/blocks/16
+++ b/tests/test.6/blocks/16
@@ -1,4 +1,4 @@
-Tdentry 16 1
+Tdentry qid.path 16 ver 1
 name ctl
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040331412698210
+mtime 1670040392465342458
 path 16
 version 0
 mode 444
--- a/tests/test.6/blocks/18
+++ b/tests/test.6/blocks/18
@@ -1,4 +1,4 @@
-Tdentry 18 1
+Tdentry qid.path 18 ver 1
 name staging
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 8
 pqpath 8
-mtime 1670040331413239263
+mtime 1670040392465873027
 path 18
 version 0
 mode 444
--- a/tests/test.6/blocks/2
+++ b/tests/test.6/blocks/2
@@ -1,4 +1,4 @@
-Tdentry 2 1
+Tdentry qid.path 2 ver 1
 name config
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 105
 pdblkno 6
 pqpath 6
-mtime 1670040331412166082
+mtime 1670040392464807669
 path 2
 version 0
 mode 444
--- a/tests/test.6/blocks/20
+++ b/tests/test.6/blocks/20
@@ -1,4 +1,4 @@
-Tdentry 20 1
+Tdentry qid.path 20 ver 1
 name /
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 0
 pqpath 0
-mtime 1670040331411631644
+mtime 1670040392464267947
 path 20
 version 0
 mode 20000000777
--- a/tests/test.6/blocks/21
+++ b/tests/test.6/blocks/21
@@ -1,4 +1,4 @@
-Tdentry 20 2
+Tdentry qid.path 20 ver 2
 name /
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 0
 pqpath 0
-mtime 1670040331411631644
+mtime 1670040392464267947
 path 20
 version 0
 mode 20000000777
--- a/tests/test.6/blocks/22
+++ b/tests/test.6/blocks/22
@@ -1,4 +1,4 @@
-Tdentry 64 1
+Tdentry qid.path 64 ver 1
 name dir1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040332548776374
+mtime 1670040393602275178
 path 64
 version 0
 mode 20000000777
--- a/tests/test.6/blocks/23
+++ b/tests/test.6/blocks/23
@@ -1,4 +1,4 @@
-Tdentry 64 2
+Tdentry qid.path 64 ver 2
 name dir1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040332548776374
+mtime 1670040393602275178
 path 64
 version 0
 mode 20000000777
--- a/tests/test.6/blocks/24
+++ b/tests/test.6/blocks/24
@@ -1,4 +1,4 @@
-Tdentry 65 3
+Tdentry qid.path 65 ver 3
 name file1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 5
 pdblkno 22
 pqpath 64
-mtime 1670040332553080441
+mtime 1670040393606978833
 path 65
 version 0
 mode 666
--- a/tests/test.6/blocks/25
+++ b/tests/test.6/blocks/25
@@ -1,4 +1,4 @@
-Tdentry 65 2
+Tdentry qid.path 65 ver 2
 name file1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 22
 pqpath 64
-mtime 1670040332000000000
+mtime 1670040393000000000
 path 65
 version 0
 mode 666
--- a/tests/test.6/blocks/26
+++ b/tests/test.6/blocks/26
@@ -1,4 +1,4 @@
-Tdentry 21 3
+Tdentry qid.path 21 ver 3
 name root.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040332549828856
+mtime 1670040393603650856
 path 21
 version 0
 mode 444
--- a/tests/test.6/blocks/27
+++ b/tests/test.6/blocks/27
@@ -1,4 +1,4 @@
-Tdentry 21 2
+Tdentry qid.path 21 ver 2
 name root.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040331411896341
+mtime 1670040392464537399
 path 21
 version 0
 mode 444
--- a/tests/test.6/blocks/28
+++ b/tests/test.6/blocks/28
@@ -1,4 +1,4 @@
-Tdentry 5 7
+Tdentry qid.path 5 ver 7
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040332551286078
+mtime 1670040393605185717
 path 5
 version 0
 mode 444
--- a/tests/test.6/blocks/29
+++ b/tests/test.6/blocks/29
@@ -1,4 +1,4 @@
-Tdentry 5 8
+Tdentry qid.path 5 ver 8
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040333562213347
+mtime 1670040394614609259
 path 5
 version 0
 mode 444
--- a/tests/test.6/blocks/30
+++ b/tests/test.6/blocks/30
@@ -1,4 +1,4 @@
-Tdentry 3 1
+Tdentry qid.path 3 ver 1
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040331408946572
+mtime 1670040392461584751
 path 3
 version 0
 mode 444
--- a/tests/test.6/blocks/31
+++ b/tests/test.6/blocks/31
@@ -1,4 +1,4 @@
-Tdentry 3 2
+Tdentry qid.path 3 ver 2
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040331412429923
+mtime 1670040392465071389
 path 3
 version 0
 mode 444
--- a/tests/test.6/blocks/4
+++ b/tests/test.6/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 7
+Tdentry qid.path 4 ver 7
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040331408934857
+mtime 1670040392461572517
 path 4
 version 0
 mode 444
--- a/tests/test.6/blocks/5
+++ b/tests/test.6/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 6
+Tdentry qid.path 4 ver 6
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040331408934857
+mtime 1670040392461572517
 path 4
 version 0
 mode 444
--- a/tests/test.6/blocks/6
+++ b/tests/test.6/blocks/6
@@ -1,4 +1,4 @@
-Tdentry 6 1
+Tdentry qid.path 6 ver 1
 name adm
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040331410553323
+mtime 1670040392463212896
 path 6
 version 0
 mode 20000000777
--- a/tests/test.6/blocks/8
+++ b/tests/test.6/blocks/8
@@ -1,4 +1,4 @@
-Tdentry 8 1
+Tdentry qid.path 8 ver 1
 name users
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040331411090258
+mtime 1670040392463704562
 path 8
 version 0
 mode 20000000777
--- a/tests/test.7/blocks/0
+++ b/tests/test.7/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670038013856169212
+mtime 1670040509187542741
 path 1
 version 0
 mode 20000000777
--- a/tests/test.7/blocks/14
+++ b/tests/test.7/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 20
 pdblkno 6
 pqpath 6
-mtime 1670038017532032182
+mtime 1670040512864110465
 path 14
 version 0
 mode 444
--- a/tests/test.7/blocks/15
+++ b/tests/test.7/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670038017531743377
+mtime 1670040512863807097
 path 14
 version 0
 mode 444
--- a/tests/test.7/blocks/4
+++ b/tests/test.7/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 7
+Tdentry qid.path 4 ver 7
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670038013854505964
+mtime 1670040509185877457
 path 4
 version 0
 mode 444
--- a/tests/test.7/blocks/5
+++ b/tests/test.7/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 8
+Tdentry qid.path 4 ver 8
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670038013854505964
+mtime 1670040509185877457
 path 4
 version 0
 mode 444
--- a/tests/test.8/blocks/0
+++ b/tests/test.8/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040600182940267
+mtime 1670040613006194120
 path 1
 version 0
 mode 20000000777
--- a/tests/test.8/blocks/10
+++ b/tests/test.8/blocks/10
@@ -1,4 +1,4 @@
-Tdentry 10 1
+Tdentry qid.path 10 ver 1
 name bkp
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040600183422171
+mtime 1670040613006706214
 path 10
 version 0
 mode 20000000777
--- a/tests/test.8/blocks/12
+++ b/tests/test.8/blocks/12
@@ -1,4 +1,4 @@
-Tdentry 12 1
+Tdentry qid.path 12 ver 1
 name inuse
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 95
 pdblkno 8
 pqpath 8
-mtime 1670040600184205071
+mtime 1670040613007237580
 path 12
 version 0
 mode 444
--- a/tests/test.8/blocks/14
+++ b/tests/test.8/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040601311084284
+mtime 1670040614134134909
 path 14
 version 0
 mode 444
--- a/tests/test.8/blocks/15
+++ b/tests/test.8/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040601310689515
+mtime 1670040614133746213
 path 14
 version 0
 mode 444
--- a/tests/test.8/blocks/16
+++ b/tests/test.8/blocks/16
@@ -1,4 +1,4 @@
-Tdentry 16 1
+Tdentry qid.path 16 ver 1
 name ctl
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040600185447989
+mtime 1670040613008571178
 path 16
 version 0
 mode 444
--- a/tests/test.8/blocks/2
+++ b/tests/test.8/blocks/2
@@ -1,4 +1,4 @@
-Tdentry 2 1
+Tdentry qid.path 2 ver 1
 name config
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 105
 pdblkno 6
 pqpath 6
-mtime 1670040600184925113
+mtime 1670040613008040115
 path 2
 version 0
 mode 444
--- a/tests/test.8/blocks/22
+++ b/tests/test.8/blocks/22
@@ -1,4 +1,4 @@
-Tdentry 21 1
+Tdentry qid.path 21 ver 1
 name root.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040600182111179
+mtime 1670040613005367648
 path 21
 version 0
 mode 444
--- a/tests/test.8/blocks/23
+++ b/tests/test.8/blocks/23
@@ -1,4 +1,4 @@
-Tdentry 21 2
+Tdentry qid.path 21 ver 2
 name root.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040600184683991
+mtime 1670040613007772728
 path 21
 version 0
 mode 444
--- a/tests/test.8/blocks/24
+++ b/tests/test.8/blocks/24
@@ -1,4 +1,4 @@
-Tdentry 5 5
+Tdentry qid.path 5 ver 5
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040600188030111
+mtime 1670040613011108045
 path 5
 version 0
 mode 444
--- a/tests/test.8/blocks/25
+++ b/tests/test.8/blocks/25
@@ -1,4 +1,4 @@
-Tdentry 5 6
+Tdentry qid.path 5 ver 6
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040601310311322
+mtime 1670040614133356728
 path 5
 version 0
 mode 444
--- a/tests/test.8/blocks/4
+++ b/tests/test.8/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 5
+Tdentry qid.path 4 ver 5
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040600181574358
+mtime 1670040613004832200
 path 4
 version 0
 mode 444
--- a/tests/test.8/blocks/5
+++ b/tests/test.8/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 4
+Tdentry qid.path 4 ver 4
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040600181574358
+mtime 1670040613004832200
 path 4
 version 0
 mode 444
--- a/tests/test.8/blocks/6
+++ b/tests/test.8/blocks/6
@@ -1,4 +1,4 @@
-Tdentry 6 1
+Tdentry qid.path 6 ver 1
 name adm
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040600183187838
+mtime 1670040613006438752
 path 6
 version 0
 mode 20000000777
--- a/tests/test.8/blocks/8
+++ b/tests/test.8/blocks/8
@@ -1,4 +1,4 @@
-Tdentry 8 1
+Tdentry qid.path 8 ver 1
 name users
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040600183638900
+mtime 1670040613006965536
 path 8
 version 0
 mode 20000000777
--- a/tests/test.9/blocks/0
+++ b/tests/test.9/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040707400703375
+mtime 1670377222488083385
 path 1
 version 0
 mode 20000000777
--- a/tests/test.9/blocks/10
+++ b/tests/test.9/blocks/10
@@ -1,4 +1,4 @@
-Tdentry 10 1
+Tdentry qid.path 10 ver 1
 name bkp
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040707401386982
+mtime 1670377222488522594
 path 10
 version 0
 mode 20000000777
--- a/tests/test.9/blocks/12
+++ b/tests/test.9/blocks/12
@@ -1,4 +1,4 @@
-Tdentry 12 1
+Tdentry qid.path 12 ver 1
 name inuse
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 95
 pdblkno 8
 pqpath 8
-mtime 1670040707401983120
+mtime 1670377222489027191
 path 12
 version 0
 mode 444
--- a/tests/test.9/blocks/14
+++ b/tests/test.9/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 19
 pdblkno 6
 pqpath 6
-mtime 1670040710356201977
+mtime 1670377417044734859
 path 14
 version 0
 mode 444
--- a/tests/test.9/blocks/15
+++ b/tests/test.9/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040710355887991
+mtime 1670377417044407611
 path 14
 version 0
 mode 444
--- a/tests/test.9/blocks/16
+++ b/tests/test.9/blocks/16
@@ -1,4 +1,4 @@
-Tdentry 16 1
+Tdentry qid.path 16 ver 1
 name ctl
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040707403337519
+mtime 1670377222490300642
 path 16
 version 0
 mode 444
--- a/tests/test.9/blocks/18
+++ b/tests/test.9/blocks/18
@@ -1,4 +1,4 @@
-Tdentry 18 1
+Tdentry qid.path 18 ver 1
 name staging
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 8
 pqpath 8
-mtime 1670040707403876138
+mtime 1670377222490814877
 path 18
 version 0
 mode 444
--- a/tests/test.9/blocks/2
+++ b/tests/test.9/blocks/2
@@ -1,4 +1,4 @@
-Tdentry 2 1
+Tdentry qid.path 2 ver 1
 name config
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 124
 pdblkno 6
 pqpath 6
-mtime 1670040707402786029
+mtime 1670377222489795564
 path 2
 version 0
 mode 444
--- a/tests/test.9/blocks/20
+++ b/tests/test.9/blocks/20
@@ -1,4 +1,4 @@
-Tdentry 20 5
+Tdentry qid.path 20 ver 5
 name /
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 0
 pqpath 0
-mtime 1670040707402245612
+mtime 1670377222489271847
 path 20
 version 0
 mode 20000000777
--- a/tests/test.9/blocks/21
+++ b/tests/test.9/blocks/21
@@ -1,4 +1,4 @@
-Tdentry 20 4
+Tdentry qid.path 20 ver 4
 name /
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 0
 pqpath 0
-mtime 1670040707402245612
+mtime 1670377222489271847
 path 20
 version 0
 mode 20000000777
--- a/tests/test.9/blocks/22
+++ b/tests/test.9/blocks/22
@@ -1,4 +1,4 @@
-Tdentry 64 1
+Tdentry qid.path 64 ver 1
 name dir1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040708540714648
+mtime 1670377223627556210
 path 64
 version 0
 mode 20000000777
--- a/tests/test.9/blocks/23
+++ b/tests/test.9/blocks/23
@@ -1,4 +1,4 @@
-Tdentry 64 2
+Tdentry qid.path 64 ver 2
 name dir1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040708540714648
+mtime 1670377223627556210
 path 64
 version 0
 mode 20000000777
--- a/tests/test.9/blocks/24
+++ b/tests/test.9/blocks/24
@@ -1,4 +1,4 @@
-Tdentry 65 3
+Tdentry qid.path 65 ver 3
 name file1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 5
 pdblkno 22
 pqpath 64
-mtime 1670040708545497391
+mtime 1670377223632535785
 path 65
 version 0
 mode 666
--- a/tests/test.9/blocks/25
+++ b/tests/test.9/blocks/25
@@ -1,4 +1,4 @@
-Tdentry 65 2
+Tdentry qid.path 65 ver 2
 name file1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 22
 pqpath 64
-mtime 1670040708000000000
+mtime 1670377223000000000
 path 65
 version 0
 mode 666
--- a/tests/test.9/blocks/26
+++ b/tests/test.9/blocks/26
@@ -1,4 +1,4 @@
-Tdentry 66 3
+Tdentry qid.path 66 ver 3
 name dir2
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040708546497015
+mtime 1670377223633495236
 path 66
 version 0
 mode 20000000777
--- a/tests/test.9/blocks/27
+++ b/tests/test.9/blocks/27
@@ -1,4 +1,4 @@
-Tdentry 66 2
+Tdentry qid.path 66 ver 2
 name dir2
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040708546497015
+mtime 1670377223633495236
 path 66
 version 0
 mode 20000000777
--- a/tests/test.9/blocks/28
+++ b/tests/test.9/blocks/28
@@ -1,4 +1,4 @@
-Tdentry 67 3
+Tdentry qid.path 67 ver 3
 name file1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 5
 pdblkno 26
 pqpath 66
-mtime 1670040708550630863
+mtime 1670377223637516785
 path 67
 version 0
 mode 666
--- a/tests/test.9/blocks/29
+++ b/tests/test.9/blocks/29
@@ -1,4 +1,4 @@
-Tdentry 67 2
+Tdentry qid.path 67 ver 2
 name file1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 26
 pqpath 66
-mtime 1670040708000000000
+mtime 1670377223000000000
 path 67
 version 0
 mode 666
--- a/tests/test.9/blocks/30
+++ b/tests/test.9/blocks/30
@@ -1,4 +1,4 @@
-Tdentry 68 3
+Tdentry qid.path 68 ver 3
 name file2
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 5
 pdblkno 26
 pqpath 66
-mtime 1670040708553638168
+mtime 1670377223640291128
 path 68
 version 0
 mode 666
--- a/tests/test.9/blocks/31
+++ b/tests/test.9/blocks/31
@@ -1,4 +1,4 @@
-Tdentry 68 2
+Tdentry qid.path 68 ver 2
 name file2
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 26
 pqpath 66
-mtime 1670040708000000000
+mtime 1670377223000000000
 path 68
 version 0
 mode 666
--- a/tests/test.9/blocks/34
+++ b/tests/test.9/blocks/34
@@ -1,9 +1,9 @@
-Tdentry 70 5
+Tdentry qid.path 70 ver 5
 name 2MB.file
 uid 10006
 gid -1
 muid 10006
-size 1048556
+size 2056192
 pdblkno 32
 pqpath 69
 mtime 1665294406000000000
@@ -12,7 +12,7 @@
 mode 664
 direct blocks
 	0 36
-	1 0
+	1 2084
 	2 0
 	3 0
 	4 0
--- a/tests/test.9/blocks/35
+++ b/tests/test.9/blocks/35
@@ -1,9 +1,9 @@
-Tdentry 70 6
+Tdentry qid.path 70 ver 4
 name 2MB.file
 uid 10006
 gid -1
 muid 10006
-size 2056192
+size 1048556
 pdblkno 32
 pqpath 69
 mtime 1665294406000000000
@@ -12,7 +12,7 @@
 mode 664
 direct blocks
 	0 36
-	1 2084
+	1 0
 	2 0
 	3 0
 	4 0
--- a/tests/test.9/blocks/36
+++ b/tests/test.9/blocks/36
@@ -1,4 +1,4 @@
-Tdata 70 34 2048
+Tdata qid.path 70 dblkno 34 len 2048
 0 0123456789
 1 0123456789
 2 0123456789
--- a/tests/test.9/blocks/4
+++ b/tests/test.9/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 13
+Tdentry qid.path 4 ver 13
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040707375300958
+mtime 1670377222486497797
 path 4
 version 0
 mode 444
--- a/tests/test.9/blocks/5
+++ b/tests/test.9/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 14
+Tdentry qid.path 4 ver 14
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040707375300958
+mtime 1670377222486497797
 path 4
 version 0
 mode 444
--- a/tests/test.9/blocks/6
+++ b/tests/test.9/blocks/6
@@ -1,4 +1,4 @@
-Tdentry 6 1
+Tdentry qid.path 6 ver 1
 name adm
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040707401064620
+mtime 1670377222488270016
 path 6
 version 0
 mode 20000000777
--- a/tests/test.9/blocks/8
+++ b/tests/test.9/blocks/8
@@ -1,4 +1,4 @@
-Tdentry 8 1
+Tdentry qid.path 8 ver 1
 name users
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040707401679585
+mtime 1670377222488774919
 path 8
 version 0
 mode 20000000777
--- a/tests/test.a/blocks/14
+++ b/tests/test.a/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
--- a/tests/test.a/blocks/15
+++ b/tests/test.a/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
--- a/tests/test.a/blocks/190490
+++ b/tests/test.a/blocks/190490
@@ -1,4 +1,4 @@
-Tdata 64 22 2048
+Tdata qid.path 64 dblkno 22 len 2048
 06 0123456789
 4.47884e+06 0123456789
 4.47885e+06 0123456789
--- a/tests/test.a/blocks/192538
+++ b/tests/test.a/blocks/192538
@@ -1,4 +1,4 @@
-Tind1 64 9 22
+Tind1 qid.path 64 ver 9 dblkno 22
 	0 192540
 	1 0
 	2 0
--- a/tests/test.a/blocks/192539
+++ b/tests/test.a/blocks/192539
@@ -1,4 +1,4 @@
-Tind1 64 8 22
+Tind1 qid.path 64 ver 8 dblkno 22
 	0 192540
 	1 0
 	2 0
--- a/tests/test.a/blocks/192540
+++ b/tests/test.a/blocks/192540
@@ -1,4 +1,4 @@
-Tind0 64 9 22
+Tind0 qid.path 64 ver 9 dblkno 22
 	0 190490
 	1 192542
 	2 194590
--- a/tests/test.a/blocks/22
+++ b/tests/test.a/blocks/22
@@ -1,4 +1,4 @@
-Tdentry 0 107
+Tdentry qid.path 0 ver 107
 name 
 uid 0
 gid 0
--- a/tests/test.a/blocks/23
+++ b/tests/test.a/blocks/23
@@ -1,4 +1,4 @@
-Tdentry 64 106
+Tdentry qid.path 64 ver 106
 name big.file
 uid 10006
 gid -1
--- a/tests/test.a/blocks/24
+++ b/tests/test.a/blocks/24
@@ -1,4 +1,4 @@
-Tdata 64 22 2048
+Tdata qid.path 64 dblkno 22 len 2048
 0 0123456789
 1 0123456789
 2 0123456789
--- a/tests/test.a/blocks/4
+++ b/tests/test.a/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 5
+Tdentry qid.path 4 ver 5
 name super
 uid -1
 gid -1
--- a/tests/test.a/blocks/5
+++ b/tests/test.a/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 6
+Tdentry qid.path 4 ver 6
 name super
 uid -1
 gid -1
--- a/tests/test.a/blocks/65560
+++ b/tests/test.a/blocks/65560
@@ -1,4 +1,4 @@
-Tdata 64 22 2048
+Tdata qid.path 64 dblkno 22 len 2048
  0123456789
 1.68439e+06 0123456789
 1.68439e+06 0123456789
--- a/tests/test.a/blocks/67608
+++ b/tests/test.a/blocks/67608
@@ -1,4 +1,4 @@
-Tind0 64 61 22
+Tind0 qid.path 64 ver 61 dblkno 22
 	0 65560
 	1 67610
 	2 69658
--- a/tests/test.a/blocks/67609
+++ b/tests/test.a/blocks/67609
@@ -1,4 +1,4 @@
-Tind0 64 60 22
+Tind0 qid.path 64 ver 60 dblkno 22
 	0 65560
 	1 67610
 	2 69658
--- a/tests/test.b/blocks/0
+++ b/tests/test.b/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040886328562364
+mtime 1670040896167684472
 path 1
 version 0
 mode 20000000777
--- a/tests/test.b/blocks/10
+++ b/tests/test.b/blocks/10
@@ -1,4 +1,4 @@
-Tdentry 10 1
+Tdentry qid.path 10 ver 1
 name bkp
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040886329076311
+mtime 1670040896168222202
 path 10
 version 0
 mode 20000000777
--- a/tests/test.b/blocks/12
+++ b/tests/test.b/blocks/12
@@ -1,4 +1,4 @@
-Tdentry 12 1
+Tdentry qid.path 12 ver 1
 name inuse
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 95
 pdblkno 8
 pqpath 8
-mtime 1670040886329612150
+mtime 1670040896168735880
 path 12
 version 0
 mode 444
--- a/tests/test.b/blocks/14
+++ b/tests/test.b/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040887480838691
+mtime 1670040897319326906
 path 14
 version 0
 mode 444
--- a/tests/test.b/blocks/15
+++ b/tests/test.b/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040887480563350
+mtime 1670040897319044381
 path 14
 version 0
 mode 444
--- a/tests/test.b/blocks/18
+++ b/tests/test.b/blocks/18
@@ -1,4 +1,4 @@
-Tdentry 18 1
+Tdentry qid.path 18 ver 1
 name staging
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 8
 pqpath 8
-mtime 1670040886331491091
+mtime 1670040896170602145
 path 18
 version 0
 mode 444
--- a/tests/test.b/blocks/2
+++ b/tests/test.b/blocks/2
@@ -1,4 +1,4 @@
-Tdentry 2 1
+Tdentry qid.path 2 ver 1
 name config
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 105
 pdblkno 6
 pqpath 6
-mtime 1670040886330406378
+mtime 1670040896169520368
 path 2
 version 0
 mode 444
--- a/tests/test.b/blocks/20
+++ b/tests/test.b/blocks/20
@@ -1,4 +1,4 @@
-Tdentry 20 1
+Tdentry qid.path 20 ver 1
 name /
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 0
 pqpath 0
-mtime 1670040886329878633
+mtime 1670040896169018966
 path 20
 version 0
 mode 20000000777
--- a/tests/test.b/blocks/29
+++ b/tests/test.b/blocks/29
@@ -1,4 +1,4 @@
-Tdentry 5 8
+Tdentry qid.path 5 ver 8
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040887480275290
+mtime 1670040897318755401
 path 5
 version 0
 mode 444
--- a/tests/test.b/blocks/30
+++ b/tests/test.b/blocks/30
@@ -1,4 +1,4 @@
-Tdentry 3 1
+Tdentry qid.path 3 ver 1
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040886327209563
+mtime 1670040896166406022
 path 3
 version 0
 mode 444
--- a/tests/test.b/blocks/31
+++ b/tests/test.b/blocks/31
@@ -1,4 +1,4 @@
-Tdentry 3 2
+Tdentry qid.path 3 ver 2
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040886330672645
+mtime 1670040896169806864
 path 3
 version 0
 mode 444
--- a/tests/test.b/blocks/4
+++ b/tests/test.b/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 7
+Tdentry qid.path 4 ver 7
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040886327202852
+mtime 1670040896166392876
 path 4
 version 0
 mode 444
--- a/tests/test.b/blocks/5
+++ b/tests/test.b/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 6
+Tdentry qid.path 4 ver 6
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040886327202852
+mtime 1670040896166392876
 path 4
 version 0
 mode 444
--- a/tests/test.b/blocks/6
+++ b/tests/test.b/blocks/6
@@ -1,4 +1,4 @@
-Tdentry 6 1
+Tdentry qid.path 6 ver 1
 name adm
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040886328811622
+mtime 1670040896167898568
 path 6
 version 0
 mode 20000000777
--- a/tests/test.b/blocks/8
+++ b/tests/test.b/blocks/8
@@ -1,4 +1,4 @@
-Tdentry 8 1
+Tdentry qid.path 8 ver 1
 name users
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040886329346938
+mtime 1670040896168484114
 path 8
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/0
+++ b/tests/test.d/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040837384461257
+mtime 1670040857036680351
 path 1
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/10
+++ b/tests/test.d/blocks/10
@@ -1,4 +1,4 @@
-Tdentry 10 1
+Tdentry qid.path 10 ver 1
 name bkp
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040837384985579
+mtime 1670040857037199326
 path 10
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/12
+++ b/tests/test.d/blocks/12
@@ -1,4 +1,4 @@
-Tdentry 12 1
+Tdentry qid.path 12 ver 1
 name inuse
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 95
 pdblkno 8
 pqpath 8
-mtime 1670040837385513436
+mtime 1670040857037731497
 path 12
 version 0
 mode 444
--- a/tests/test.d/blocks/14
+++ b/tests/test.d/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040838550866528
+mtime 1670040858203019564
 path 14
 version 0
 mode 444
--- a/tests/test.d/blocks/15
+++ b/tests/test.d/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040838550587386
+mtime 1670040858202710086
 path 14
 version 0
 mode 444
--- a/tests/test.d/blocks/16
+++ b/tests/test.d/blocks/16
@@ -1,4 +1,4 @@
-Tdentry 16 1
+Tdentry qid.path 16 ver 1
 name ctl
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040837386850689
+mtime 1670040857039059792
 path 16
 version 0
 mode 444
--- a/tests/test.d/blocks/18
+++ b/tests/test.d/blocks/18
@@ -1,4 +1,4 @@
-Tdentry 18 1
+Tdentry qid.path 18 ver 1
 name staging
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 8
 pqpath 8
-mtime 1670040837387387580
+mtime 1670040857039589616
 path 18
 version 0
 mode 444
--- a/tests/test.d/blocks/2
+++ b/tests/test.d/blocks/2
@@ -1,4 +1,4 @@
-Tdentry 2 1
+Tdentry qid.path 2 ver 1
 name config
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 105
 pdblkno 6
 pqpath 6
-mtime 1670040837386314996
+mtime 1670040857038524586
 path 2
 version 0
 mode 444
--- a/tests/test.d/blocks/20
+++ b/tests/test.d/blocks/20
@@ -1,4 +1,4 @@
-Tdentry 20 1
+Tdentry qid.path 20 ver 1
 name /
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 0
 pqpath 0
-mtime 1670040837385775007
+mtime 1670040857037994115
 path 20
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/21
+++ b/tests/test.d/blocks/21
@@ -1,4 +1,4 @@
-Tdentry 20 2
+Tdentry qid.path 20 ver 2
 name /
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 0
 pqpath 0
-mtime 1670040837385775007
+mtime 1670040857037994115
 path 20
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/22
+++ b/tests/test.d/blocks/22
@@ -1,4 +1,4 @@
-Tdentry 64 1
+Tdentry qid.path 64 ver 1
 name a
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040838523329282
+mtime 1670040858175782384
 path 64
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/23
+++ b/tests/test.d/blocks/23
@@ -1,4 +1,4 @@
-Tdentry 64 2
+Tdentry qid.path 64 ver 2
 name a
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040838523329282
+mtime 1670040858175782384
 path 64
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/24
+++ b/tests/test.d/blocks/24
@@ -1,4 +1,4 @@
-Tdentry 65 1
+Tdentry qid.path 65 ver 1
 name b
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 22
 pqpath 64
-mtime 1670040838525109956
+mtime 1670040858177745445
 path 65
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/25
+++ b/tests/test.d/blocks/25
@@ -1,4 +1,4 @@
-Tdentry 65 2
+Tdentry qid.path 65 ver 2
 name b
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 22
 pqpath 64
-mtime 1670040838525109956
+mtime 1670040858177745445
 path 65
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/26
+++ b/tests/test.d/blocks/26
@@ -1,4 +1,4 @@
-Tdentry 66 1
+Tdentry qid.path 66 ver 1
 name c
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 24
 pqpath 65
-mtime 1670040838526498242
+mtime 1670040858179176641
 path 66
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/27
+++ b/tests/test.d/blocks/27
@@ -1,4 +1,4 @@
-Tdentry 66 2
+Tdentry qid.path 66 ver 2
 name c
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 24
 pqpath 65
-mtime 1670040838526498242
+mtime 1670040858179176641
 path 66
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/28
+++ b/tests/test.d/blocks/28
@@ -1,4 +1,4 @@
-Tdentry 67 1
+Tdentry qid.path 67 ver 1
 name d
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 26
 pqpath 66
-mtime 1670040838527903407
+mtime 1670040858180565949
 path 67
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/29
+++ b/tests/test.d/blocks/29
@@ -1,4 +1,4 @@
-Tdentry 67 2
+Tdentry qid.path 67 ver 2
 name d
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 26
 pqpath 66
-mtime 1670040838527903407
+mtime 1670040858180565949
 path 67
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/30
+++ b/tests/test.d/blocks/30
@@ -1,4 +1,4 @@
-Tdentry 68 1
+Tdentry qid.path 68 ver 1
 name e
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 28
 pqpath 67
-mtime 1670040838529304684
+mtime 1670040858181970667
 path 68
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/32
+++ b/tests/test.d/blocks/32
@@ -1,4 +1,4 @@
-Tdentry 21 3
+Tdentry qid.path 21 ver 3
 name root.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040838524487361
+mtime 1670040858177118835
 path 21
 version 0
 mode 444
--- a/tests/test.d/blocks/33
+++ b/tests/test.d/blocks/33
@@ -1,4 +1,4 @@
-Tdentry 21 2
+Tdentry qid.path 21 ver 2
 name root.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040837386046731
+mtime 1670040857038258703
 path 21
 version 0
 mode 444
--- a/tests/test.d/blocks/34
+++ b/tests/test.d/blocks/34
@@ -1,4 +1,4 @@
-Tdentry 5 11
+Tdentry qid.path 5 ver 11
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040838550266923
+mtime 1670040858202436119
 path 5
 version 0
 mode 444
--- a/tests/test.d/blocks/35
+++ b/tests/test.d/blocks/35
@@ -1,4 +1,4 @@
-Tdentry 5 10
+Tdentry qid.path 5 ver 10
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040838529562621
+mtime 1670040858182222712
 path 5
 version 0
 mode 444
--- a/tests/test.d/blocks/36
+++ b/tests/test.d/blocks/36
@@ -1,4 +1,4 @@
-Tdentry 3 1
+Tdentry qid.path 3 ver 1
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040837383099729
+mtime 1670040857035320562
 path 3
 version 0
 mode 444
--- a/tests/test.d/blocks/37
+++ b/tests/test.d/blocks/37
@@ -1,4 +1,4 @@
-Tdentry 3 2
+Tdentry qid.path 3 ver 2
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670040837386579427
+mtime 1670040857038785729
 path 3
 version 0
 mode 444
--- a/tests/test.d/blocks/4
+++ b/tests/test.d/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 9
+Tdentry qid.path 4 ver 9
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040837383093037
+mtime 1670040857035311665
 path 4
 version 0
 mode 444
--- a/tests/test.d/blocks/5
+++ b/tests/test.d/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 10
+Tdentry qid.path 4 ver 10
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040837383093037
+mtime 1670040857035311665
 path 4
 version 0
 mode 444
--- a/tests/test.d/blocks/6
+++ b/tests/test.d/blocks/6
@@ -1,4 +1,4 @@
-Tdentry 6 1
+Tdentry qid.path 6 ver 1
 name adm
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040837384712886
+mtime 1670040857036936718
 path 6
 version 0
 mode 20000000777
--- a/tests/test.d/blocks/8
+++ b/tests/test.d/blocks/8
@@ -1,4 +1,4 @@
-Tdentry 8 1
+Tdentry qid.path 8 ver 1
 name users
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040837385244860
+mtime 1670040857037459929
 path 8
 version 0
 mode 20000000777
--- a/tests/test.e/blocks/0
+++ b/tests/test.e/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040807822604354
+mtime 1670040862370045235
 path 1
 version 0
 mode 20000000777
--- a/tests/test.e/blocks/10
+++ b/tests/test.e/blocks/10
@@ -1,4 +1,4 @@
-Tdentry 10 1
+Tdentry qid.path 10 ver 1
 name bkp
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040807823133079
+mtime 1670040862370575690
 path 10
 version 0
 mode 20000000777
--- a/tests/test.e/blocks/12
+++ b/tests/test.e/blocks/12
@@ -1,4 +1,4 @@
-Tdentry 12 1
+Tdentry qid.path 12 ver 1
 name inuse
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 95
 pdblkno 8
 pqpath 8
-mtime 1670040807823675424
+mtime 1670040862371112376
 path 12
 version 0
 mode 444
--- a/tests/test.e/blocks/14
+++ b/tests/test.e/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 3
+Tdentry qid.path 14 ver 3
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040809001031214
+mtime 1670040863548765235
 path 14
 version 0
 mode 444
--- a/tests/test.e/blocks/15
+++ b/tests/test.e/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 2
+Tdentry qid.path 14 ver 2
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670040809000738912
+mtime 1670040863548415550
 path 14
 version 0
 mode 444
--- a/tests/test.e/blocks/18
+++ b/tests/test.e/blocks/18
@@ -1,4 +1,4 @@
-Tdentry 18 1
+Tdentry qid.path 18 ver 1
 name staging
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 8
 pqpath 8
-mtime 1670040807825538325
+mtime 1670040862372975592
 path 18
 version 0
 mode 444
--- a/tests/test.e/blocks/2
+++ b/tests/test.e/blocks/2
@@ -1,4 +1,4 @@
-Tdentry 2 1
+Tdentry qid.path 2 ver 1
 name config
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 105
 pdblkno 6
 pqpath 6
-mtime 1670040807824470102
+mtime 1670040862371909950
 path 2
 version 0
 mode 444
--- a/tests/test.e/blocks/20
+++ b/tests/test.e/blocks/20
@@ -1,4 +1,4 @@
-Tdentry 20 1
+Tdentry qid.path 20 ver 1
 name /
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 0
 pqpath 0
-mtime 1670040807823934619
+mtime 1670040862371373758
 path 20
 version 0
 mode 20000000777
--- a/tests/test.e/blocks/28
+++ b/tests/test.e/blocks/28
@@ -1,4 +1,4 @@
-Tdentry 0 3
+Tdentry qid.path 0 ver 3
 name 
 uid 0
 gid 0
--- a/tests/test.e/blocks/29
+++ b/tests/test.e/blocks/29
@@ -1,4 +1,4 @@
-Tdentry 67 2
+Tdentry qid.path 67 ver 2
 name 1.txt
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 22
 pqpath 64
-mtime 1670040808000000000
+mtime 1670040863000000000
 path 67
 version 0
 mode 666
--- a/tests/test.e/blocks/30
+++ b/tests/test.e/blocks/30
@@ -1,4 +1,4 @@
-Tdentry 68 1
+Tdentry qid.path 68 ver 1
 name 2.txt
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 22
 pqpath 64
-mtime 1670040808969080822
+mtime 1670040863516832558
 path 68
 version 0
 mode 666
--- a/tests/test.e/blocks/31
+++ b/tests/test.e/blocks/31
@@ -1,4 +1,4 @@
-Tdentry 68 2
+Tdentry qid.path 68 ver 2
 name 2.txt
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 22
 pqpath 64
-mtime 1670040808000000000
+mtime 1670040863000000000
 path 68
 version 0
 mode 666
--- a/tests/test.e/blocks/4
+++ b/tests/test.e/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 9
+Tdentry qid.path 4 ver 9
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040807821210394
+mtime 1670040862368668292
 path 4
 version 0
 mode 444
--- a/tests/test.e/blocks/5
+++ b/tests/test.e/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 10
+Tdentry qid.path 4 ver 10
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670040807821210394
+mtime 1670040862368668292
 path 4
 version 0
 mode 444
--- a/tests/test.e/blocks/6
+++ b/tests/test.e/blocks/6
@@ -1,4 +1,4 @@
-Tdentry 6 1
+Tdentry qid.path 6 ver 1
 name adm
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670040807822886866
+mtime 1670040862370305429
 path 6
 version 0
 mode 20000000777
--- a/tests/test.e/blocks/8
+++ b/tests/test.e/blocks/8
@@ -1,4 +1,4 @@
-Tdentry 8 1
+Tdentry qid.path 8 ver 1
 name users
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670040807823402588
+mtime 1670040862370842374
 path 8
 version 0
 mode 20000000777
--- a/tests/test.f/blocks/0
+++ b/tests/test.f/blocks/0
@@ -1,4 +1,4 @@
-Tdentry 1 1
+Tdentry qid.path 1 ver 1
 name magic
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670041125085388737
+mtime 1670264223264295577
 path 1
 version 0
 mode 20000000777
--- a/tests/test.f/blocks/10
+++ b/tests/test.f/blocks/10
@@ -1,4 +1,4 @@
-Tdentry 10 1
+Tdentry qid.path 10 ver 1
 name bkp
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670041125085899033
+mtime 1670264223264771448
 path 10
 version 0
 mode 20000000777
--- a/tests/test.f/blocks/12
+++ b/tests/test.f/blocks/12
@@ -1,4 +1,4 @@
-Tdentry 12 1
+Tdentry qid.path 12 ver 1
 name inuse
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 95
 pdblkno 8
 pqpath 8
-mtime 1670041125086435987
+mtime 1670264223265280153
 path 12
 version 0
 mode 444
--- a/tests/test.f/blocks/14
+++ b/tests/test.f/blocks/14
@@ -1,4 +1,4 @@
-Tdentry 14 5
+Tdentry qid.path 14 ver 5
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670041135095027406
+mtime 1670264226273681812
 path 14
 version 0
 mode 444
--- a/tests/test.f/blocks/15
+++ b/tests/test.f/blocks/15
@@ -1,4 +1,4 @@
-Tdentry 14 6
+Tdentry qid.path 14 ver 6
 name frees
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 8
 pdblkno 6
 pqpath 6
-mtime 1670041135095462782
+mtime 1670264226274073981
 path 14
 version 0
 mode 444
--- a/tests/test.f/blocks/16
+++ b/tests/test.f/blocks/16
@@ -1,4 +1,4 @@
-Tdentry 16 1
+Tdentry qid.path 16 ver 1
 name ctl
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 6
 pqpath 6
-mtime 1670041125087767026
+mtime 1670264223266569017
 path 16
 version 0
 mode 444
--- a/tests/test.f/blocks/18
+++ b/tests/test.f/blocks/18
@@ -1,4 +1,4 @@
-Tdentry 18 1
+Tdentry qid.path 18 ver 1
 name staging
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 8
 pqpath 8
-mtime 1670041125088312478
+mtime 1670264223267049611
 path 18
 version 0
 mode 444
--- a/tests/test.f/blocks/2
+++ b/tests/test.f/blocks/2
@@ -1,4 +1,4 @@
-Tdentry 2 1
+Tdentry qid.path 2 ver 1
 name config
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 105
 pdblkno 6
 pqpath 6
-mtime 1670041125087229831
+mtime 1670264223266056157
 path 2
 version 0
 mode 444
--- a/tests/test.f/blocks/20
+++ b/tests/test.f/blocks/20
@@ -1,4 +1,4 @@
-Tdentry 20 1
+Tdentry qid.path 20 ver 1
 name /
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 0
 pqpath 0
-mtime 1670041125086700829
+mtime 1670264223265548744
 path 20
 version 0
 mode 20000000777
--- a/tests/test.f/blocks/21
+++ b/tests/test.f/blocks/21
@@ -1,4 +1,4 @@
-Tdentry 20 2
+Tdentry qid.path 20 ver 2
 name /
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 0
 pqpath 0
-mtime 1670041125086700829
+mtime 1670264223265548744
 path 20
 version 0
 mode 20000000777
--- a/tests/test.f/blocks/22
+++ b/tests/test.f/blocks/22
@@ -1,4 +1,4 @@
-Tdentry 64 1
+Tdentry qid.path 64 ver 1
 name file1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670041126222733180
+mtime 1670264224401286566
 path 64
 version 0
 mode 666
--- a/tests/test.f/blocks/23
+++ b/tests/test.f/blocks/23
@@ -1,4 +1,4 @@
-Tdentry 64 2
+Tdentry qid.path 64 ver 2
 name file1
 uid 10006
 gid -1
@@ -6,7 +6,7 @@
 size 5
 pdblkno 20
 pqpath 20
-mtime 1670041126225930800
+mtime 1670264224404353170
 path 64
 version 0
 mode 666
--- a/tests/test.f/blocks/26
+++ b/tests/test.f/blocks/26
@@ -1,4 +1,4 @@
-Tdentry 21 3
+Tdentry qid.path 21 ver 3
 name root.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670041126223952941
+mtime 1670264224402384592
 path 21
 version 0
 mode 444
--- a/tests/test.f/blocks/27
+++ b/tests/test.f/blocks/27
@@ -1,4 +1,4 @@
-Tdentry 21 2
+Tdentry qid.path 21 ver 2
 name root.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670041125086961681
+mtime 1670264223265788611
 path 21
 version 0
 mode 444
--- a/tests/test.f/blocks/28
+++ b/tests/test.f/blocks/28
@@ -1,4 +1,4 @@
-Tdentry 5 9
+Tdentry qid.path 5 ver 9
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670041135094635130
+mtime 1670264226273312528
 path 5
 version 0
 mode 444
--- a/tests/test.f/blocks/29
+++ b/tests/test.f/blocks/29
@@ -1,4 +1,4 @@
-Tdentry 5 8
+Tdentry qid.path 5 ver 8
 name super.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670041126232846328
+mtime 1670264224411577264
 path 5
 version 0
 mode 444
--- a/tests/test.f/blocks/30
+++ b/tests/test.f/blocks/30
@@ -1,4 +1,4 @@
-Tdentry 3 1
+Tdentry qid.path 3 ver 1
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670041125084038118
+mtime 1670264223263077308
 path 3
 version 0
 mode 444
--- a/tests/test.f/blocks/31
+++ b/tests/test.f/blocks/31
@@ -1,4 +1,4 @@
-Tdentry 3 2
+Tdentry qid.path 3 ver 2
 name config.0
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 10
 pqpath 10
-mtime 1670041125087496924
+mtime 1670264223266297005
 path 3
 version 0
 mode 444
--- a/tests/test.f/blocks/4
+++ b/tests/test.f/blocks/4
@@ -1,4 +1,4 @@
-Tdentry 4 7
+Tdentry qid.path 4 ver 7
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670041125084023673
+mtime 1670264223263067606
 path 4
 version 0
 mode 444
--- a/tests/test.f/blocks/5
+++ b/tests/test.f/blocks/5
@@ -1,4 +1,4 @@
-Tdentry 4 8
+Tdentry qid.path 4 ver 8
 name super
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 16
 pdblkno 6
 pqpath 6
-mtime 1670041125084023673
+mtime 1670264223263067606
 path 4
 version 0
 mode 444
--- a/tests/test.f/blocks/6
+++ b/tests/test.f/blocks/6
@@ -1,4 +1,4 @@
-Tdentry 6 1
+Tdentry qid.path 6 ver 1
 name adm
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 0
 pdblkno 20
 pqpath 20
-mtime 1670041125085617273
+mtime 1670264223264528959
 path 6
 version 0
 mode 20000000777
--- a/tests/test.f/blocks/8
+++ b/tests/test.f/blocks/8
@@ -1,4 +1,4 @@
-Tdentry 8 1
+Tdentry qid.path 8 ver 1
 name users
 uid -1
 gid -1
@@ -6,7 +6,7 @@
 size 96
 pdblkno 6
 pqpath 6
-mtime 1670041125086159347
+mtime 1670264223265028275
 path 8
 version 0
 mode 20000000777
--- a/unused.c
+++ b/unused.c
@@ -53,9 +53,6 @@
 void *emalloc(u32);
 s8 *estrdup(s8 *);
 void show(Stream * s);
-s8 find(Extents *es, u64 bno);
-void common(Stream *u, Stream *f);
-void missing(u64 nblocks, Stream *u, Stream *f);
 
 static void
 usage(void)
@@ -69,7 +66,7 @@
 {
 	Stream u;	/* u = used */
 	struct Extents unused;
-	u64 nblocks, i;
+	u64 nblocks;
 	int listblocks = 0;
 
 	ARGBEGIN{
--- a/used.c
+++ b/used.c
@@ -8,6 +8,9 @@
 	go through all the blocks and write out all the used block numbers
 	to be used by the checker
 	Starting from root, walk down each dentry printing out the linked blocks with invalid tags
+
+	TODO
+		check that the file size is matched by the number of blocks
  */
 
 Extents useds = {0};
@@ -88,7 +91,7 @@
 
 /* not checking the ending path as it would take too long */
 void
-walkindir(u64 blkno, u16 tag, u16 bottomtag, u64 qpath)
+walkindir(u64 blkno, u16 tag, u16 bottomtag, u64 qpath, u64 *nblocksp)
 {
 	u8 buf[Metadatablocksize], cbuf[Metadatablocksize];
 	u64 ebuf[Nu64perblock];
@@ -116,6 +119,7 @@
 				}else{
 					devread(cblkno, cbuf, 1);
 					da = (Data*)cbuf;
+					*nblocksp += da->len;
 					devread(cblkno+da->len-1, ebuf, 1);
 					path = ebuf[Dpathidx];
 					checkvalid(cblkno, da->tag, path, Tdata, qpath, da->len);
@@ -126,7 +130,7 @@
 				cblkno = t->bufa[i];
 				if(cblkno == 0)
 					return;
-				walkindir(cblkno, tag-1,  bottomtag, qpath);
+				walkindir(cblkno, tag-1,  bottomtag, qpath, nblocksp);
 			}
 		}
 	}
@@ -178,7 +182,7 @@
 		devread(cblkno, cbuf, Metadataunits);
 		recentmetadata(cbuf, &it, nil);
 		if(it->tagi == Tind0+i){
-			walkindir(cblkno, Tind0+i, Tdentry, d->qpath);
+			walkindir(cblkno, Tind0+i, Tdentry, d->qpath, nil);
 		}else{
 			fprint(2, "invalid indir tag %llud\n", cblkno);
 			fprint(2, "%llud\n", cblkno);
@@ -187,12 +191,11 @@
 	return;
 }
 
-/* not checking the ending path as it would take too long */
 void
 walkfile(u64 blkno)
 {
 	u8 buf[Metadatablocksize], cbuf[Metadatablocksize];
-	u64 ebuf[Nu64perblock];
+	u64 ebuf[Nu64perblock], nblocks;
 	Dentry *d;
 	Data *ct;
 	Indirect *it;
@@ -220,6 +223,7 @@
 	if(d->size <= Ddatasize)
 		return;
 
+	nblocks = 0;
 	for(i = 0; i<Ndblock; i++){
 		cblkno = d->dblocks[i];
 		if(cblkno == 0)
@@ -226,6 +230,7 @@
 			return;
 		devread(cblkno, cbuf, 1);
 		ct = (Data*)cbuf;
+		nblocks += ct->len;
 		devread(cblkno+ct->len-1, ebuf, 1);
 		path = ebuf[Dpathidx];
 		checkvalid(cblkno, ct->tag, path, Tdata, d->qpath, ct->len);
@@ -237,7 +242,7 @@
 		devread(cblkno, cbuf, Metadataunits);
 		recentmetadata(cbuf, &it, nil);
 		if(it->tagi == Tind0+i){
-			walkindir(cblkno, Tind0+i, Tdata, d->qpath);
+			walkindir(cblkno, Tind0+i, Tdata, d->qpath, &nblocks);
 		}else{
 			fprint(2, "invalid indir tag of block %llud %d %s\n",
 					cblkno, it->tagi, tagnames[it->tagi]);
@@ -244,5 +249,9 @@
 			fprint(2, "%llud\n", cblkno);
 		}
 	}
+	if(d->size/Maxdatablocksize != nblocks/Maxdatablockunits ||
+		nlastdatablocks(d->size%Maxdatablocksize) != nblocks%Maxdatablockunits)
+		fprint(2, "file name %s size %llud is using %llud blocks\n",
+				d->name, d->size, nblocks);
 	return;
 }