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