Commit Diff


commit - 4395d738f4f5a3a477e2a3a24b927e8a24ef4cc0
commit + fa3c8da1c01edc6559fa6ea71fdfb402cd9914b4
blob - fac419b149e35a2e4d5bd591c1f514fa3ea9228c
blob + 9ae5530e1121ac00e77fcc0ecf9d05d210a84150
--- src/cmd/vac/file.c
+++ src/cmd/vac/file.c
@@ -142,7 +142,14 @@ uvlong
 vacfilegetid(VacFile *f)
 {
 	/* immutable */
+fprint(2, "getid %s %lld+%lld = %lld\n", f->dir.elem, f->qidoffset, f->dir.qid, f->qidoffset+f->dir.qid);
 	return f->qidoffset + f->dir.qid;
+}
+
+uvlong
+vacfilegetqidoffset(VacFile *f)
+{
+	return f->qidoffset;
 }
 
 ulong
@@ -402,6 +409,7 @@ dirlookup(VacFile *f, char *elem)
 				filefree(ff);
 				goto Err;
 			}
+fprint(2, "offset %s %lld\n", ff->dir.elem, ff->dir.qidoffset);
 			ff->qidoffset = f->qidoffset + ff->dir.qidoffset;
 			vtfileunlock(meta);
 			vtblockput(b);
blob - 6716aa1dbf8d38d0ef7968055496bd1e432c769f
blob + e97951b882585f35d3310bd1455519879bd8fea2
--- src/cmd/vac/vac.c
+++ src/cmd/vac/vac.c
@@ -586,7 +586,9 @@ vacmergefile(VacFile *fp, VacFile *mp, VacDir *d, char
 		d->qidoffset = offset;
 		d->qidmax = max;
 	}
-	if(vacfilesetdir(f, d) < 0 || vacfilesetentries(f, &ed, &em) < 0){
+	if(vacfilesetdir(f, d) < 0
+	|| vacfilesetentries(f, &ed, &em) < 0
+	|| vacfilesetqidspace(f, d->qidoffset, d->qidmax) < 0){
 		warn("vacmergefile %s: %r", d->elem);
 		vacfiledecref(mf);
 		vacfiledecref(f);
blob - 610028f488fa44059c390193af4a6c5aa835fbd0
blob + 0b82d0ebf22965f92ad2d63a8320d1b229108fd2
--- src/cmd/vac/vac.h
+++ src/cmd/vac/vac.h
@@ -135,6 +135,7 @@ int		vacfilesetentries(VacFile *f, VtEntry *e, VtEntry
 void		vdcleanup(VacDir *dir);
 void		vdcopy(VacDir *dst, VacDir *src);
 int		vacfilesetqidspace(VacFile*, u64int, u64int);
+uvlong	vacfilegetqidoffset(VacFile*);
 
 VacDirEnum	*vdeopen(VacFile*);
 int			vderead(VacDirEnum*, VacDir *);
blob - 5ec17aec0ce4214e6fe5c727292c1f00d279c44d
blob + 5c65cf3b05086e9731982b17c99ccafefcfa29f2
--- src/cmd/vac/vacfs.c
+++ src/cmd/vac/vacfs.c
@@ -636,15 +636,12 @@ vacstat(VacFile *parent, VacDir *vd, uchar *p, int np)
 	uvlong size;
 	char *ext = nil;
 #endif
-
-	USED(parent);
 
 	memset(&dir, 0, sizeof(dir));
 
-	/*
-	 * Where do path and version come from
-	 */
-	dir.qid.path = vd->qid;
+	dir.qid.path = vd->qid + vacfilegetqidoffset(parent);
+	if(vd->qidspace)
+		dir.qid.path += vd->qidoffset;
 	dir.qid.vers = vd->mcount;
 	dir.mode = vd->mode & 0777;
 	if(vd->mode & ModeAppend){