| #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); | 
 | } |