zeropart.c (707B)
1 #include "stdinc.h" 2 #include "dat.h" 3 #include "fns.h" 4 5 void 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 }