zeropart.c 602 B

12345678910111213141516171819202122232425262728
  1. #include "stdinc.h"
  2. #include "dat.h"
  3. #include "fns.h"
  4. void
  5. zeroPart(Part *part, int blockSize)
  6. {
  7. ZBlock *b;
  8. u64int addr;
  9. int w;
  10. fprint(2, "clearing the partition\n");
  11. b = allocZBlock(MaxIoSize, 1);
  12. w = 0;
  13. for(addr = PartBlank; addr + MaxIoSize <= part->size; addr += MaxIoSize){
  14. if(!writePart(part, addr, b->data, MaxIoSize))
  15. fatal("can't initialize %s, writing block %d failed: %r", part->name, w);
  16. w++;
  17. }
  18. for(; addr + blockSize <= part->size; addr += blockSize)
  19. if(!writePart(part, addr, b->data, blockSize))
  20. fatal("can't initialize %s: %r", part->name);
  21. freeZBlock(b);
  22. }