zeropart.c 707 B

123456789101112131415161718192021222324252627282930
  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 %s\n", part->name);
  11. b = alloczblock(MaxIoSize, 1, blocksize);
  12. w = 0;
  13. for(addr = PartBlank; addr + MaxIoSize <= part->size; addr += MaxIoSize){
  14. if(writepart(part, addr, b->data, MaxIoSize) < 0)
  15. sysfatal("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) < 0)
  20. sysfatal("can't initialize %s: %r", part->name);
  21. if(flushpart(part) < 0)
  22. sysfatal("can't flush writes to %s: %r", part->name);
  23. freezblock(b);
  24. }