ref: e0fffa8ae9627363f518cc7077e5e8e204135db5
dir: /blk.c/
#include <u.h>
#include <libc.h>
#include "dat.h"
#include "fns.h"
Blk*
newblk(int t)
{
Blk *b;
b = emalloc(sizeof(Blk));
b->flag |= Bdirty;
b->type = t;
return b;
}
Blk*
getblk(uvlong bp, uvlong bh)
{
Blk *b;
b = (Blk*)bp;
if(blkhash(b) != bh){
werrstr("corrupt block %llx\n", bp);
fprint(2, "corrupt block %llx\n", bp);
// abort();
}
return b;
}
void
freeblk(Blk *b)
{
b->refs--;
if(b->refs == 0)
free(b);
}
uvlong
blkhash(Blk *b)
{
return siphash(b->data, Blksz);
}
ushort
blkfill(Blk *b)
{
switch(b->type){
case Pivot:
return 2*b->nmsg + b->bufsz + 2*b->nent + b->valsz;
case Leaf:
return 2*b->nent + b->valsz;
default:
abort();
return 0; // shut up kencc
}
}
int
putblk(Blk *b)
{
USED(b);
/* TODO: unref. */
return 0;
}