ref: 3e3fb9c47e83f468119236f4db899d654bfbcc73
dir: /liblogfs/findfreeblock.c/
#include "logfsos.h" #include "logfs.h" #include "local.h" long logfsfindfreeblock(LogfsLowLevel *ll, AllocReason reason) { long b; long total; b = (*ll->findfreeblock)(ll, &total); if(b < 0) return b; switch(reason) { case AllocReasonReplace: break; case AllocReasonTransfer: if(total <= Replacements) return -1; break; case AllocReasonLogExtend: if(total <= Replacements + Transfers) return -1; break; case AllocReasonDataExtend: if(total <= Replacements + Transfers + LogSlack) return -1; break; } //print("allocated free block %ld\n", b); return b; }