Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include "stdinc.h"
#include "dat.h"
#include "fns.h"

void
zeropart(Part *part, int blocksize)
{
        ZBlock *b;
        u64int addr;
        int w;

        fprint(2, "clearing %s\n", part->name);
        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);

        if(flushpart(part) < 0)
                sysfatal("can't flush writes to %s: %r", part->name);

        freezblock(b);
}