summaryrefslogtreecommitdiff
path: root/sys/src/cmd/hjfs/cons.c
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2012-09-27 15:06:42 +0200
committeraiju <devnull@localhost>2012-09-27 15:06:42 +0200
commit45f76d6191e5b46f755b16395ee9beeccbc144fc (patch)
tree81b3a6f073f3395e50c46360fc0ad13a5a66a2cc /sys/src/cmd/hjfs/cons.c
parent72061412ce729feb672fc5fac14385527c4d5fa8 (diff)
hjfs: statw command
Diffstat (limited to 'sys/src/cmd/hjfs/cons.c')
-rw-r--r--sys/src/cmd/hjfs/cons.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/sys/src/cmd/hjfs/cons.c b/sys/src/cmd/hjfs/cons.c
index 552173a02..a4fdf6534 100644
--- a/sys/src/cmd/hjfs/cons.c
+++ b/sys/src/cmd/hjfs/cons.c
@@ -166,6 +166,36 @@ cmdecho(int, char **argv)
return 1;
}
+int
+cmdstatw(int, char **)
+{
+ uvlong n;
+ uvlong i;
+ int j;
+ Buf *b, *sb;
+
+ wlock(fsmain);
+ sb = getbuf(fsmain->d, SUPERBLK, TSUPERBLOCK, 0);
+ if(sb == nil){
+ wunlock(fsmain);
+ return -1;
+ }
+ n = 0;
+ for(i = sb->sb.fstart; i < sb->sb.fend; i++){
+ b = getbuf(fsmain->d, i, TREF, 0);
+ if(b == nil)
+ continue;
+ for(j = 0; j < REFPERBLK; j++)
+ if(b->refs[j] == 0)
+ n++;
+ putbuf(b);
+ }
+ dprint("hjfs: free %uld, used %uld, total %uld\n", n, sb->sb.size, sb->sb.size - n);
+ putbuf(sb);
+ wunlock(fsmain);
+ return 1;
+}
+
extern int cmdnewuser(int, char **);
Cmd cmds[] = {
@@ -178,6 +208,7 @@ Cmd cmds[] = {
{"halt", 1, cmdhalt},
{"newuser", 0, cmdnewuser},
{"echo", 2, cmdecho},
+ {"statw", 1, cmdstatw},
};