ref: a0ba4c1f03a3f99fb17a9edf9b4448db49bb6c46
dir: /sys/src/cmd/venti/srv/zeropart.c/
#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); }