1*28942eadSforsyth #include "logfsos.h" 237da2899SCharles.Forsyth #include "logfs.h" 337da2899SCharles.Forsyth #include "nandfs.h" 437da2899SCharles.Forsyth #include "local.h" 537da2899SCharles.Forsyth 637da2899SCharles.Forsyth long nandfsfindfreeblock(Nandfs * nandfs,long * freeblocksp)737da2899SCharles.Forsythnandfsfindfreeblock(Nandfs *nandfs, long *freeblocksp) 837da2899SCharles.Forsyth { 937da2899SCharles.Forsyth long bestnewblock; 1037da2899SCharles.Forsyth long bestnerase; 1137da2899SCharles.Forsyth long i; 1237da2899SCharles.Forsyth 1337da2899SCharles.Forsyth if (freeblocksp) 1437da2899SCharles.Forsyth *freeblocksp = 0; 1537da2899SCharles.Forsyth for (i = 0, bestnewblock = -1, bestnerase = 0x7fffffff; i < nandfs->ll.blocks; i++) { 1637da2899SCharles.Forsyth long nerase; 1737da2899SCharles.Forsyth if (nandfsgettag(nandfs, i) == LogfsTnone) { 1837da2899SCharles.Forsyth if (freeblocksp) { 1937da2899SCharles.Forsyth (*freeblocksp)++; 2037da2899SCharles.Forsyth } 2137da2899SCharles.Forsyth if ((nerase = nandfsgetnerase(nandfs, i)) < bestnerase) { 2237da2899SCharles.Forsyth bestnewblock = i; 2337da2899SCharles.Forsyth bestnerase = nerase; 2437da2899SCharles.Forsyth } 2537da2899SCharles.Forsyth } 2637da2899SCharles.Forsyth } 2737da2899SCharles.Forsyth return bestnewblock; 2837da2899SCharles.Forsyth } 29