Blame


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