ref: 0a2bc153ff335f97546a6e4ea7d0c6de74f40776
parent: 4671a19b2f46d007ef991cdd3d2190096eb326f7
author: 9ferno <gophone2015@gmail.com>
date: Fri Dec 2 08:20:34 EST 2022
streamlining the recovery process after a crash
--- a/docs/mafs.ms
+++ b/docs/mafs.ms
@@ -1230,9 +1230,9 @@
Find the total number of blocks on a disk.
.sp
.nf
- dd -if /dev/sdF1/fs -bs 512 -iseek 1 -count 1 -quiet 1 | awk '$1 == "nblocks" { print $2 }'
+ dd -if /dev/sdF1/fs -bs 512 -iseek 2 -count 1 -quiet 1 | awk '$1 == "nblocks" { print $2 }'
- disk/block /dev/sdF1/fs 1 | awk '$1 == "nblocks" { print $2 }'
+ disk/block /dev/sdF1/fs 2 | awk '$1 == "nblocks" { print $2 }'
.fi
.sp
.ne 5
@@ -1239,8 +1239,8 @@
Build the list of free blocks. This should match the contents of /adm/frees.
.sp
.nf
- disk/unused <{disk/used /dev/sdF1/fs} 11721040049 # 11721040049 = total number of disk blocks
- disk/unused <{disk/used test.0/disk} 32 # 32 = total number of disk blocks
+ disk/unused 11721040049 <{disk/used /dev/sdF1/fs} # 11721040049 = total number of disk blocks
+ disk/unused 32 <{disk/used test.0/disk} # 32 = total number of disk blocks
.fi
.sp
.ne 5
@@ -1247,8 +1247,8 @@
Change the contents of /adm/frees.
.sp
.nf
- disk/updatefrees tests/test.0/disk <{disk/unused <{disk/used tests/test.0/disk} 32}
- disk/updatefrees /dev/sdF1/fs <{disk/unused <{disk/used /dev/sdF1/fs} 11721040049}
+ disk/updatefrees tests/test.0/disk <{disk/unused 32 <{disk/used tests/test.0/disk}}
+ disk/updatefrees /dev/sdF1/fs <{disk/unused 11721040049 <{disk/used /dev/sdF1/fs}}
.fi
.sp
.ne 5
@@ -1255,7 +1255,16 @@
A sanity check that the file system is not corrupt by comparing that the unused blocks and free blocks match up. $nblocks is the total number of disk blocks. $disk is the disk.
.sp
.nf
- diff <{disk/unused -l <{disk/used tests/test.0/disk} 32}} <{disk/free tests/test.0/disk}
+ diff <{disk/unused -l 32 <{disk/used tests/test.0/disk}}} <{disk/free tests/test.0/disk}
+.fi
+.sp
+.ne 5
+Check and correct a crashed filesystem.
+.sp
+.nf
+ nblocks=`{disk/block /dev/sdF1/fs 2 | awk '$1 == "nblocks"{ print $2 }'}
+ disk/updatefrees /dev/sdF1/fs <{disk/unused $nblocks <{disk/used /dev/sdF1/fs}
+ disk/fsok /dev/sdF1/fs
.fi
\".sp
\"Changing the service name without a ream.
--- /dev/null
+++ b/fsok.c
@@ -1,0 +1,60 @@
+#include <u.h>
+#include <libc.h>
+#include "dat.h"
+#include "fns.h"
+
+/*
+ do Super.fsok = 1
+ disk/fsok fsfile
+ */
+
+int debug = 0;
+char *devfile = nil, *freesfile = nil;
+
+static void
+usage(void)
+{
+ fprint(2, "usage: fsok [-D] fsfile\n");
+ exits("usage");
+}
+
+void
+main(int argc, char *argv[])
+{
+ u64 size;
+ s8 buf[Metadatablocksize];
+ Dentry *d;
+
+ ARGBEGIN{
+ default: usage();
+ case 'D': debug++; break;
+ }ARGEND
+
+ if(argc != 1)
+ usage();
+
+ devfile = argv[0];
+ if(devfile == nil)
+ sysfatal("no disk file");
+
+ if (access(devfile, AREAD|AWRITE) == -1)
+ sysfatal("%s cannot access device", devfile);
+
+ size = devinit(devfile);
+ if(size == 0)
+ panic("null size %s", devfile);
+
+ devread(Bdsuper, buf, Metadataunits);
+ // showblock(1, buf);
+ recentmetadata(buf, &d, nil);
+
+ if(d->fsok)
+ fprint(2, "fsok: %s fsok %llud != 0\n", devfile, d->fsok);
+ else{
+ d->fsok = 1;
+ d->mtime = nsec();
+ devwrite(Bdsuper, buf, Metadataunits);
+ }
+ close(devfd);
+ exits(0);
+}
--- a/mkfile
+++ b/mkfile
@@ -1,6 +1,6 @@
</$objtype/mkfile
-TARG=mafs used reconcile block find free unused updatefrees # mfs
+TARG=mafs used reconcile block find free unused updatefrees fsok # mfs
OFILES=\
9p.$O\
@@ -34,6 +34,9 @@
</sys/src/cmd/mkmany
# LDFLAGS=-p
+
+$O.fsok: blk.$O dat.$O dev.$O misc.$O tag.$O fsok.$O
+ $LD $LDFLAGS -o $target $prereq
$O.updatefrees: blk.$O dat.$O dev.$O misc.$O tag.$O updatefrees.$O
$LD $LDFLAGS -o $target $prereq
--- a/tests/check.rc
+++ b/tests/check.rc
@@ -31,5 +31,5 @@
echo reconcile $disk $nblocks
disk/reconcile -u <{disk/used $disk} -F <{disk/free $disk} $nblocks
-diff <{disk/unused <{disk/used $disk} $nblocks} \
+diff <{disk/unused $nblocks <{disk/used $disk}} \
<{disk/free $disk} || echo unused and free do not match up
--- a/tests/test.0/blocks/14
+++ b/tests/test.0/blocks/14
@@ -1,13 +1,12 @@
-Tdentry 14 4
+Tdentry 14 2
name frees
uid -1
gid -1
muid -1
-size 9
+size 0
pdblkno 6
pqpath 6
-mtime 1669266782968974477
+mtime 1670008664059460719
path 14
version 0
mode 444
-22 25 4
--- a/tests/test.0/blocks/15
+++ b/tests/test.0/blocks/15
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 9
+size 8
pdblkno 6
pqpath 6
-mtime 1669266782968974477
+mtime 1670008664059856827
path 14
version 0
mode 444
--- a/tests/test.0/blocks/4
+++ b/tests/test.0/blocks/4
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669266781839844790
+mtime 1670008662930114801
path 4
version 0
mode 444
--- a/tests/test.0/blocks/5
+++ b/tests/test.0/blocks/5
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669266781839844790
+mtime 1670008662930114801
path 4
version 0
mode 444
--- a/tests/test.1/blocks/14
+++ b/tests/test.1/blocks/14
@@ -1,12 +1,12 @@
-Tdentry 14 4
+Tdentry 14 2
name frees
uid -1
gid -1
muid -1
-size 1
+size 0
pdblkno 6
pqpath 6
-mtime 1669260494838816085
+mtime 1670008681951018721
path 14
version 0
mode 444
--- a/tests/test.1/blocks/15
+++ b/tests/test.1/blocks/15
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 1
+size 0
pdblkno 6
pqpath 6
-mtime 1669260494838816085
+mtime 1670008681951252665
path 14
version 0
mode 444
--- a/tests/test.1/blocks/4
+++ b/tests/test.1/blocks/4
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669260493689548915
+mtime 1670008680799949060
path 4
version 0
mode 444
--- a/tests/test.1/blocks/5
+++ b/tests/test.1/blocks/5
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669260493689548915
+mtime 1670008680799949060
path 4
version 0
mode 444
--- a/tests/test.2/blocks/14
+++ b/tests/test.2/blocks/14
@@ -1,13 +1,12 @@
-Tdentry 14 4
+Tdentry 14 2
name frees
uid -1
gid -1
muid -1
-size 10
+size 0
pdblkno 6
pqpath 6
-mtime 1669260591462739301
+mtime 1670008687664901315
path 14
version 0
mode 444
-24 41 18
--- a/tests/test.2/blocks/15
+++ b/tests/test.2/blocks/15
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 10
+size 9
pdblkno 6
pqpath 6
-mtime 1669260591462739301
+mtime 1670008687665148772
path 14
version 0
mode 444
--- a/tests/test.2/blocks/4
+++ b/tests/test.2/blocks/4
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669260590166214698
+mtime 1670008686344249396
path 4
version 0
mode 444
--- a/tests/test.2/blocks/5
+++ b/tests/test.2/blocks/5
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669260590166214698
+mtime 1670008686344249396
path 4
version 0
mode 444
--- /dev/null
+++ b/tests/test.3/blocks/14
@@ -1,0 +1,12 @@
+Tdentry 14 2
+name frees
+uid -1
+gid -1
+muid -1
+size 0
+pdblkno 6
+pqpath 6
+mtime 1670008722643155240
+path 14
+version 0
+mode 444
--- /dev/null
+++ b/tests/test.3/blocks/15
@@ -1,0 +1,13 @@
+Tdentry 14 3
+name frees
+uid -1
+gid -1
+muid -1
+size 15
+pdblkno 6
+pqpath 6
+mtime 1670008722643427274
+path 14
+version 0
+mode 444
+24 40953 40930
--- a/tests/test.3/blocks/4
+++ b/tests/test.3/blocks/4
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669260676578886629
+mtime 1670008717603682736
path 4
version 0
mode 444
--- a/tests/test.3/blocks/5
+++ b/tests/test.3/blocks/5
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669260676578886629
+mtime 1670008717603682736
path 4
version 0
mode 444
--- /dev/null
+++ b/tests/test.4/blocks/14
@@ -1,0 +1,12 @@
+Tdentry 14 2
+name frees
+uid -1
+gid -1
+muid -1
+size 0
+pdblkno 6
+pqpath 6
+mtime 1670008727487619615
+path 14
+version 0
+mode 444
--- /dev/null
+++ b/tests/test.4/blocks/15
@@ -1,0 +1,13 @@
+Tdentry 14 3
+name frees
+uid -1
+gid -1
+muid -1
+size 9
+pdblkno 6
+pqpath 6
+mtime 1670008727487897160
+path 14
+version 0
+mode 444
+32 57 26
--- /dev/null
+++ b/tests/test.4/blocks/4
@@ -1,0 +1,14 @@
+Tdentry 4 9
+name super
+uid -1
+gid -1
+muid -1
+size 16
+pdblkno 6
+pqpath 6
+mtime 1670008726307650582
+path 4
+version 0
+mode 444
+qidgen 69
+fsok 0
--- /dev/null
+++ b/tests/test.4/blocks/5
@@ -1,0 +1,14 @@
+Tdentry 4 10
+name super
+uid -1
+gid -1
+muid -1
+size 16
+pdblkno 6
+pqpath 6
+mtime 1670008726307650582
+path 4
+version 0
+mode 444
+qidgen 69
+fsok 1
--- /dev/null
+++ b/tests/test.5/blocks/14
@@ -1,0 +1,12 @@
+Tdentry 14 2
+name frees
+uid -1
+gid -1
+muid -1
+size 0
+pdblkno 6
+pqpath 6
+mtime 1670008738271038609
+path 14
+version 0
+mode 444
--- /dev/null
+++ b/tests/test.5/blocks/15
@@ -1,0 +1,13 @@
+Tdentry 14 3
+name frees
+uid -1
+gid -1
+muid -1
+size 15
+pdblkno 6
+pqpath 6
+mtime 1670008738271344073
+path 14
+version 0
+mode 444
+5434 9993 4560
--- /dev/null
+++ b/tests/test.5/blocks/4
@@ -1,0 +1,14 @@
+Tdentry 4 7
+name super
+uid -1
+gid -1
+muid -1
+size 16
+pdblkno 6
+pqpath 6
+mtime 1670008736927423369
+path 4
+version 0
+mode 444
+qidgen 66
+fsok 1
--- /dev/null
+++ b/tests/test.5/blocks/5
@@ -1,0 +1,14 @@
+Tdentry 4 6
+name super
+uid -1
+gid -1
+muid -1
+size 16
+pdblkno 6
+pqpath 6
+mtime 1670008736927423369
+path 4
+version 0
+mode 444
+qidgen 66
+fsok 0
--- a/tests/test.6/blocks/14
+++ b/tests/test.6/blocks/14
@@ -1,12 +1,12 @@
-Tdentry 14 4
+Tdentry 14 2
name frees
uid -1
gid -1
muid -1
-size 1
+size 0
pdblkno 6
pqpath 6
-mtime 1669260831377850683
+mtime 1670008745661281171
path 14
version 0
mode 444
--- a/tests/test.6/blocks/15
+++ b/tests/test.6/blocks/15
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 1
+size 0
pdblkno 6
pqpath 6
-mtime 1669260831377850683
+mtime 1670008745661500420
path 14
version 0
mode 444
--- a/tests/test.6/blocks/4
+++ b/tests/test.6/blocks/4
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669260829228461718
+mtime 1670008743505826948
path 4
version 0
mode 444
--- a/tests/test.6/blocks/5
+++ b/tests/test.6/blocks/5
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669260829228461718
+mtime 1670008743505826948
path 4
version 0
mode 444
--- /dev/null
+++ b/tests/test.7/blocks/14
@@ -1,0 +1,12 @@
+Tdentry 14 2
+name frees
+uid -1
+gid -1
+muid -1
+size 0
+pdblkno 6
+pqpath 6
+mtime 1670008842829094738
+path 14
+version 0
+mode 444
--- /dev/null
+++ b/tests/test.7/blocks/15
@@ -1,0 +1,13 @@
+Tdentry 14 3
+name frees
+uid -1
+gid -1
+muid -1
+size 20
+pdblkno 6
+pqpath 6
+mtime 1670008842829368405
+path 14
+version 0
+mode 444
+48223 163833 115611
--- /dev/null
+++ b/tests/test.7/blocks/4
@@ -1,0 +1,14 @@
+Tdentry 4 7
+name super
+uid -1
+gid -1
+muid -1
+size 16
+pdblkno 6
+pqpath 6
+mtime 1670008838567924755
+path 4
+version 0
+mode 444
+qidgen 67
+fsok 0
--- /dev/null
+++ b/tests/test.7/blocks/5
@@ -1,0 +1,14 @@
+Tdentry 4 8
+name super
+uid -1
+gid -1
+muid -1
+size 16
+pdblkno 6
+pqpath 6
+mtime 1670008838567924755
+path 4
+version 0
+mode 444
+qidgen 67
+fsok 1
--- a/tests/test.8/blocks/14
+++ b/tests/test.8/blocks/14
@@ -1,12 +1,12 @@
-Tdentry 14 4
+Tdentry 14 2
name frees
uid -1
gid -1
muid -1
-size 1
+size 0
pdblkno 6
pqpath 6
-mtime 1669308925316454025
+mtime 1670008887600477443
path 14
version 0
mode 444
--- a/tests/test.8/blocks/15
+++ b/tests/test.8/blocks/15
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 1
+size 0
pdblkno 6
pqpath 6
-mtime 1669308925316454025
+mtime 1670008887600800598
path 14
version 0
mode 444
--- a/tests/test.8/blocks/4
+++ b/tests/test.8/blocks/4
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669308924185162962
+mtime 1670008886470441051
path 4
version 0
mode 444
--- a/tests/test.8/blocks/5
+++ b/tests/test.8/blocks/5
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669308924185162962
+mtime 1670008886470441051
path 4
version 0
mode 444
--- a/tests/test.9/blocks/14
+++ b/tests/test.9/blocks/14
@@ -1,13 +1,12 @@
-Tdentry 14 4
+Tdentry 14 2
name frees
uid -1
gid -1
muid -1
-size 20
+size 0
pdblkno 6
pqpath 6
-mtime 1669915444179031863
+mtime 1670008973422513478
path 14
version 0
mode 444
-55259 131065 75807
--- a/tests/test.9/blocks/15
+++ b/tests/test.9/blocks/15
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 20
+size 19
pdblkno 6
pqpath 6
-mtime 1669915444179031863
+mtime 1670008973422762006
path 14
version 0
mode 444
--- a/tests/test.9/blocks/4
+++ b/tests/test.9/blocks/4
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669339401162547192
+mtime 1670008970514353437
path 4
version 0
mode 444
--- a/tests/test.9/blocks/5
+++ b/tests/test.9/blocks/5
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669339401162547192
+mtime 1670008970514353437
path 4
version 0
mode 444
--- /dev/null
+++ b/tests/test.a/blocks/14
@@ -1,0 +1,12 @@
+Tdentry 14 2
+name frees
+uid -1
+gid -1
+muid -1
+size 0
+pdblkno 6
+pqpath 6
+mtime 1670009903056438056
+path 14
+version 0
+mode 444
--- /dev/null
+++ b/tests/test.a/blocks/15
@@ -1,0 +1,13 @@
+Tdentry 14 3
+name frees
+uid -1
+gid -1
+muid -1
+size 17
+pdblkno 6
+pqpath 6
+mtime 1670009903056710705
+path 14
+version 0
+mode 444
+24 239993 239970
--- /dev/null
+++ b/tests/test.a/blocks/4
@@ -1,0 +1,14 @@
+Tdentry 4 5
+name super
+uid -1
+gid -1
+muid -1
+size 16
+pdblkno 6
+pqpath 6
+mtime 1670009432882214979
+path 4
+version 0
+mode 444
+qidgen 65
+fsok 0
--- /dev/null
+++ b/tests/test.a/blocks/5
@@ -1,0 +1,14 @@
+Tdentry 4 6
+name super
+uid -1
+gid -1
+muid -1
+size 16
+pdblkno 6
+pqpath 6
+mtime 1670009432882214979
+path 4
+version 0
+mode 444
+qidgen 65
+fsok 1
--- /dev/null
+++ b/tests/test.b/blocks/14
@@ -1,0 +1,12 @@
+Tdentry 14 2
+name frees
+uid -1
+gid -1
+muid -1
+size 0
+pdblkno 6
+pqpath 6
+mtime 1670009907755394973
+path 14
+version 0
+mode 444
--- /dev/null
+++ b/tests/test.b/blocks/15
@@ -1,0 +1,12 @@
+Tdentry 14 3
+name frees
+uid -1
+gid -1
+muid -1
+size 0
+pdblkno 6
+pqpath 6
+mtime 1670009907755691693
+path 14
+version 0
+mode 444
--- a/tests/test.b/blocks/4
+++ b/tests/test.b/blocks/4
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669271948706262551
+mtime 1670009906599643058
path 4
version 0
mode 444
--- a/tests/test.b/blocks/5
+++ b/tests/test.b/blocks/5
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669271948706262551
+mtime 1670009906599643058
path 4
version 0
mode 444
--- a/tests/test.d/blocks/14
+++ b/tests/test.d/blocks/14
@@ -1,12 +1,12 @@
-Tdentry 14 4
+Tdentry 14 2
name frees
uid -1
gid -1
muid -1
-size 1
+size 0
pdblkno 6
pqpath 6
-mtime 1669307059197302332
+mtime 1670009913043098798
path 14
version 0
mode 444
--- a/tests/test.d/blocks/15
+++ b/tests/test.d/blocks/15
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 1
+size 0
pdblkno 6
pqpath 6
-mtime 1669307059197302332
+mtime 1670009913043349146
path 14
version 0
mode 444
--- a/tests/test.d/blocks/4
+++ b/tests/test.d/blocks/4
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669307058020360539
+mtime 1670009911871179873
path 4
version 0
mode 444
--- a/tests/test.d/blocks/5
+++ b/tests/test.d/blocks/5
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669307058020360539
+mtime 1670009911871179873
path 4
version 0
mode 444
--- a/tests/test.e/blocks/14
+++ b/tests/test.e/blocks/14
@@ -1,12 +1,12 @@
-Tdentry 14 4
+Tdentry 14 2
name frees
uid -1
gid -1
muid -1
-size 1
+size 0
pdblkno 6
pqpath 6
-mtime 1669308212473004071
+mtime 1670009918329825490
path 14
version 0
mode 444
--- a/tests/test.e/blocks/15
+++ b/tests/test.e/blocks/15
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 1
+size 0
pdblkno 6
pqpath 6
-mtime 1669308212473004071
+mtime 1670009918330104800
path 14
version 0
mode 444
--- a/tests/test.e/blocks/4
+++ b/tests/test.e/blocks/4
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669308211304908901
+mtime 1670009917145115806
path 4
version 0
mode 444
--- a/tests/test.e/blocks/5
+++ b/tests/test.e/blocks/5
@@ -3,10 +3,10 @@
uid -1
gid -1
muid -1
-size 18
+size 16
pdblkno 6
pqpath 6
-mtime 1669308211304908901
+mtime 1670009917145115806
path 4
version 0
mode 444
--- a/tests/test.f/blocks/14
+++ b/tests/test.f/blocks/14
@@ -6,7 +6,7 @@
size 8
pdblkno 6
pqpath 6
-mtime 1670008436782391613
+mtime 1670009933383849710
path 14
version 0
mode 444
--- a/tests/test.f/blocks/15
+++ b/tests/test.f/blocks/15
@@ -6,7 +6,7 @@
size 0
pdblkno 6
pqpath 6
-mtime 1670008436780964127
+mtime 1670009933383458278
path 14
version 0
mode 444
--- a/tests/test.f/blocks/4
+++ b/tests/test.f/blocks/4
@@ -6,7 +6,7 @@
size 16
pdblkno 6
pqpath 6
-mtime 1670008426769907217
+mtime 1670009923372524820
path 4
version 0
mode 444
--- a/tests/test.f/blocks/5
+++ b/tests/test.f/blocks/5
@@ -6,7 +6,7 @@
size 16
pdblkno 6
pqpath 6
-mtime 1670008426769907217
+mtime 1670009923372524820
path 4
version 0
mode 444
--- a/unused.c
+++ b/unused.c
@@ -8,7 +8,7 @@
indentify block numbers that are not used.
These blocks can be used to update /adm/frees as they are free to use.
- watch -e '6\.unused' 'date; ./6.unused -D <{seq 1 1 3; seq 5 1 6} 7 '
+ watch -e '6\.unused' 'date; ./6.unused -D 7 <{seq 1 1 3; seq 5 1 6} '
disk/unused -D <{seq 1 1 3; seq 5 1 6} 7
collect used +1 +2 +3 +5 +6
@@ -18,17 +18,18 @@
show unused
3 .. 5
- disk/unused `{disk/used /dev/sdF1/fs} \
- `{dd -if /dev/sdF1/fs -bs 512 -iseek 1 -count 1 -quiet 1 | awk '$1 == "nblocks" { print $2 }'}
+ disk/unused \
+ `{dd -if /dev/sdF1/fs -bs 512 -iseek 1 -count 1 -quiet 1 | awk '$1 == "nblocks" { print $2 }'} \
+ <`{disk/used /dev/sdF1/fs}
# this crashes the rc window, too much memory?
- disk/unused `{disk/used /dev/sdF1/fs} 11721040049
+ disk/unused 11721040049 `{disk/used /dev/sdF1/fs}
disk/used /dev/sdF1/fs > /mnt/term/tmp/used.blocks
sort -n /mnt/term/tmp/used.blocks -o /mnt/term/tmp/used.blocks.sorted
- disk/unused /mnt/term/tmp/used.blocks.sorted 11721040049
+ disk/unused 11721040049 /mnt/term/tmp/used.blocks.sorted
- diff <{ disk/unused -l <{disk/used tests/test.0/disk} 32} <{ disk/free tests/test.0/disk }
+ diff <{ disk/unused -l 32 <{disk/used tests/test.0/disk}} <{ disk/free tests/test.0/disk }
*/
enum {
@@ -60,7 +61,7 @@
static void
usage(void)
{
- fprint(2, "usage: unused -l [-D ] list_of_used_blocks_file nblocks\n");
+ fprint(2, "usage: unused -l [-D ] nblocks list_of_used_blocks_file\n");
exits("usage");
}
@@ -81,8 +82,8 @@
if(argc != 2)
usage();
- u.file = estrdup(argv[0]);
- nblocks = atoll(argv[1]);
+ nblocks = atoll(argv[0]);
+ u.file = estrdup(argv[1]);
if(u.file == nil)
sysfatal("no used file");