diff options
author | aiju <devnull@localhost> | 2012-09-27 15:06:42 +0200 |
---|---|---|
committer | aiju <devnull@localhost> | 2012-09-27 15:06:42 +0200 |
commit | 45f76d6191e5b46f755b16395ee9beeccbc144fc (patch) | |
tree | 81b3a6f073f3395e50c46360fc0ad13a5a66a2cc /sys/src/cmd/hjfs/cons.c | |
parent | 72061412ce729feb672fc5fac14385527c4d5fa8 (diff) |
hjfs: statw command
Diffstat (limited to 'sys/src/cmd/hjfs/cons.c')
-rw-r--r-- | sys/src/cmd/hjfs/cons.c | 31 |
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}, }; |