ref: 164e81c696b9d564aac7661687cbf35ea7cabd15
parent: 55e8aede1428f255839815f0a8ef95c2896e6b5b
author: 9ferno <gophone2015@gmail.com>
date: Tue Aug 31 04:37:27 EDT 2021
added progress meter to superream
--- a/appl/cmd/disk/kfs64.b
+++ b/appl/cmd/disk/kfs64.b
@@ -409,6 +409,8 @@
consoleout: chan of string;
mainlock: ref Lock;
pids: list of int;
+stdout : ref Sys->FD;
+progresslen := 0;
noqid: Qid;
@@ -500,6 +502,8 @@
iobufinit(30); # initialize buffer pool of 30 buffers in groups of 5
if(ream){
+ if(debug)
+ sys->print("started reaming\n");
superream(thedevice, SUPERADDR);
rootream(thedevice, ROOTADDR);
wstatallow = writeallow = 1;
@@ -563,6 +567,15 @@
raise "panic";
}
+progress(s: string)
+{
+ bs := array[1] of { byte 16r8 };
+ for(i:=0; i<progresslen; i++)
+ sys->write(stdout,bs,1);
+ sys->print("%s",s);
+ progresslen = len s;
+}
+
syncproc(c: chan of int)
{
c <-= 0;
@@ -3155,6 +3168,7 @@
fsize := wrensize(dev);
if(fsize <= big 0)
panic("file system device size");
+ sys->print("kfs: ream %bd blocks ", fsize);
p := Iobuf.get(dev, addr, Bmod|Bimm);
p.iobuf[0:] = emptyblock;
p.settag(Tsuper, QPSUPER);
@@ -3167,10 +3181,16 @@
sb.fsok = 0;
sb.fbuf = p.iobuf[Super1size:];
put4(sb.fbuf, 0, 1); # nfree = 1
+ msg := "";
for(i := fsize-big 1; i>=addr+big 2; i--){
#sys->print("superream i %bd\n", i);
+ if(debug){
+ msg = sys->sprint(" %bd ", i);
+ progress(msg);
+ }
addfree(dev, i, sb); # what does this do?
}
+ sys->print("done\n");
sb.put();
}