xref: /plan9-contrib/sys/src/cmd/venti/srv/zeropart.c (revision 368c31ab13393dea083228fdd1c3445076f83a4b)
1 #include "stdinc.h"
2 #include "dat.h"
3 #include "fns.h"
4 
5 void
zeropart(Part * part,int blocksize)6 zeropart(Part *part, int blocksize)
7 {
8 	ZBlock *b;
9 	u64int addr;
10 	int w;
11 
12 	fprint(2, "clearing %s\n", part->name);
13 	b = alloczblock(MaxIoSize, 1, blocksize);
14 
15 	w = 0;
16 	for(addr = PartBlank; addr + MaxIoSize <= part->size; addr += MaxIoSize){
17 		if(writepart(part, addr, b->data, MaxIoSize) < 0)
18 			sysfatal("can't initialize %s, writing block %d failed: %r", part->name, w);
19 		w++;
20 	}
21 
22 	for(; addr + blocksize <= part->size; addr += blocksize)
23 		if(writepart(part, addr, b->data, blocksize) < 0)
24 			sysfatal("can't initialize %s: %r", part->name);
25 
26 	if(flushpart(part) < 0)
27 		sysfatal("can't flush writes to %s: %r", part->name);
28 
29 	freezblock(b);
30 }
31