ref: 1f6de2fe3823cc6e749b8254187e81e20589bae8
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; }