1 6f4d00ee 2013-09-23 0intro #include "stdinc.h"
2 6f4d00ee 2013-09-23 0intro #include <bio.h>
3 6f4d00ee 2013-09-23 0intro #include "dat.h"
4 6f4d00ee 2013-09-23 0intro #include "fns.h"
6 6f4d00ee 2013-09-23 0intro Biobuf bout;
9 6f4d00ee 2013-09-23 0intro static void
10 6f4d00ee 2013-09-23 0intro usage(void)
12 6f4d00ee 2013-09-23 0intro fprint(2, "usage: %s [-c cachesize] [-h host] file\n", argv0);
13 4b576658 2013-09-23 0intro threadexitsall("usage");
16 6f4d00ee 2013-09-23 0intro #pragma varargck argpos flprint 1
18 6f4d00ee 2013-09-23 0intro static int
19 6f4d00ee 2013-09-23 0intro flprint(char *fmt, ...)
22 6f4d00ee 2013-09-23 0intro va_list arg;
24 6f4d00ee 2013-09-23 0intro va_start(arg, fmt);
25 6f4d00ee 2013-09-23 0intro n = Bvprint(&bout, fmt, arg);
26 6f4d00ee 2013-09-23 0intro va_end(arg);
30 6f4d00ee 2013-09-23 0intro static void
31 b32de4ae 2013-09-26 0intro flclre(Fsck *chk, Block *b, int o)
33 b32de4ae 2013-09-26 0intro USED(chk);
34 6f4d00ee 2013-09-23 0intro Bprint(&bout, "# clre 0x%ux %d\n", b->addr, o);
37 6f4d00ee 2013-09-23 0intro static void
38 b32de4ae 2013-09-26 0intro flclrp(Fsck *chk, Block *b, int o)
40 b32de4ae 2013-09-26 0intro USED(chk);
41 6f4d00ee 2013-09-23 0intro Bprint(&bout, "# clrp 0x%ux %d\n", b->addr, o);
44 6f4d00ee 2013-09-23 0intro static void
45 b32de4ae 2013-09-26 0intro flclri(Fsck *chk, char *name, MetaBlock *mb, int i, Block *b)
47 b32de4ae 2013-09-26 0intro USED(chk);
51 6f4d00ee 2013-09-23 0intro Bprint(&bout, "# clri %s\n", name);
54 6f4d00ee 2013-09-23 0intro static void
55 b32de4ae 2013-09-26 0intro flclose(Fsck *chk, Block *b, u32int epoch)
57 b32de4ae 2013-09-26 0intro USED(chk);
58 6f4d00ee 2013-09-23 0intro Bprint(&bout, "# bclose 0x%ux %ud\n", b->addr, epoch);
62 4b576658 2013-09-23 0intro threadmain(int argc, char *argv[])
64 6f4d00ee 2013-09-23 0intro int csize = 1000;
65 4b576658 2013-09-23 0intro VtConn *z;
66 6f4d00ee 2013-09-23 0intro char *host = nil;
68 6f4d00ee 2013-09-23 0intro fsck.useventi = 1;
69 6f4d00ee 2013-09-23 0intro Binit(&bout, 1, OWRITE);
74 6f4d00ee 2013-09-23 0intro csize = atoi(ARGF());
75 6f4d00ee 2013-09-23 0intro if(csize <= 0)
79 6f4d00ee 2013-09-23 0intro fsck.useventi = 0;
82 6f4d00ee 2013-09-23 0intro host = ARGF();
85 6f4d00ee 2013-09-23 0intro fsck.printdirs = 1;
89 6f4d00ee 2013-09-23 0intro if(argc != 1)
92 6f4d00ee 2013-09-23 0intro fmtinstall('L', labelFmt);
93 6f4d00ee 2013-09-23 0intro fmtinstall('V', scoreFmt);
96 6f4d00ee 2013-09-23 0intro * Connect to Venti.
98 4b576658 2013-09-23 0intro z = vtdial(host);
99 6f4d00ee 2013-09-23 0intro if(z == nil){
100 6f4d00ee 2013-09-23 0intro if(fsck.useventi)
101 4b576658 2013-09-23 0intro sysfatal("could not connect to server: %r");
102 4b576658 2013-09-23 0intro }else if(vtconnect(z) < 0)
103 4b576658 2013-09-23 0intro sysfatal("vtconnect: %r");
106 6f4d00ee 2013-09-23 0intro * Initialize file system.
108 6f4d00ee 2013-09-23 0intro fsck.fs = fsOpen(argv[0], z, csize, OReadOnly);
109 6f4d00ee 2013-09-23 0intro if(fsck.fs == nil)
110 4b576658 2013-09-23 0intro sysfatal("could not open file system: %r");
112 6f4d00ee 2013-09-23 0intro fsck.print = flprint;
113 6f4d00ee 2013-09-23 0intro fsck.clre = flclre;
114 6f4d00ee 2013-09-23 0intro fsck.clrp = flclrp;
115 6f4d00ee 2013-09-23 0intro fsck.close = flclose;
116 6f4d00ee 2013-09-23 0intro fsck.clri = flclri;
118 6f4d00ee 2013-09-23 0intro fsCheck(&fsck);
120 4b576658 2013-09-23 0intro threadexitsall(0);