diff options
Diffstat (limited to 'src/cmd/venti/zeropart.c')
-rw-r--r-- | src/cmd/venti/zeropart.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/cmd/venti/zeropart.c b/src/cmd/venti/zeropart.c new file mode 100644 index 00000000..b24c98c6 --- /dev/null +++ b/src/cmd/venti/zeropart.c @@ -0,0 +1,28 @@ +#include "stdinc.h" +#include "dat.h" +#include "fns.h" + +void +zeropart(Part *part, int blocksize) +{ + ZBlock *b; + u64int addr; + int w; + + fprint(2, "clearing the partition\n"); + + b = alloczblock(MaxIoSize, 1); + + 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); + + freezblock(b); +} |