1 #include "logfsos.h" 2 #include "logfs.h" 3 #include "local.h" 4 5 long logfsfindfreeblock(LogfsLowLevel * ll,AllocReason reason)6logfsfindfreeblock(LogfsLowLevel *ll, AllocReason reason) 7 { 8 long b; 9 long total; 10 b = (*ll->findfreeblock)(ll, &total); 11 if(b < 0) 12 return b; 13 switch(reason) { 14 case AllocReasonReplace: 15 break; 16 case AllocReasonTransfer: 17 if(total <= Replacements) 18 return -1; 19 break; 20 case AllocReasonLogExtend: 21 if(total <= Replacements + Transfers) 22 return -1; 23 break; 24 case AllocReasonDataExtend: 25 if(total <= Replacements + Transfers + LogSlack) 26 return -1; 27 break; 28 } 29 //print("allocated free block %ld\n", b); 30 return b; 31 } 32