|  | #include "stdinc.h" | 
|  | #include "dat.h" | 
|  | #include "fns.h" | 
|  |  | 
|  | void | 
|  | zeropart(Part *part, int blocksize) | 
|  | { | 
|  | ZBlock *b; | 
|  | u64int addr; | 
|  | int w; | 
|  |  | 
|  | fprint(2, "clearing %s\n", part->name); | 
|  | b = alloczblock(MaxIoSize, 1, blocksize); | 
|  |  | 
|  | w = 0; | 
|  | for(addr = PartBlank; addr + MaxIoSize <= part->size; addr += MaxIoSize){ | 
|  | if(writepart(part, addr, b->data, MaxIoSize) < 0) | 
|  | sysfatal("can't initialize %s, writing block %d failed: %r", part->name, w); | 
|  | w++; | 
|  | } | 
|  |  | 
|  | for(; addr + blocksize <= part->size; addr += blocksize) | 
|  | if(writepart(part, addr, b->data, blocksize) < 0) | 
|  | sysfatal("can't initialize %s: %r", part->name); | 
|  |  | 
|  | if(flushpart(part) < 0) | 
|  | sysfatal("can't flush writes to %s: %r", part->name); | 
|  |  | 
|  | freezblock(b); | 
|  | } |