aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/venti/zeropart.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/venti/zeropart.c')
-rw-r--r--src/cmd/venti/zeropart.c28
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);
+}