aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/venti/srv/zeropart.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/venti/srv/zeropart.c')
-rw-r--r--src/cmd/venti/srv/zeropart.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/cmd/venti/srv/zeropart.c b/src/cmd/venti/srv/zeropart.c
new file mode 100644
index 00000000..fe75c81d
--- /dev/null
+++ b/src/cmd/venti/srv/zeropart.c
@@ -0,0 +1,31 @@
+#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");
+//fprint(2, "NOT!\n");
+//return;
+//b=alloczblock(MaxIoSize, 1, blocksize);
+//freezblock(b);
+ 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);
+
+ freezblock(b);
+}