calcformat.c 687 B

123456789101112131415161718192021222324
  1. #include "logfsos.h"
  2. #include "logfs.h"
  3. #include "nandfs.h"
  4. #include "local.h"
  5. int
  6. nandfscalcformat(Nandfs *nandfs, long base, long limit, long bootsize, long *baseblock, long *limitblock, long *bootblocks)
  7. {
  8. *baseblock = (base + nandfs->rawblocksize - 1) / nandfs->rawblocksize;
  9. if (limit == 0)
  10. *limitblock = nandfs->limitblock;
  11. else
  12. *limitblock = limit / nandfs->rawblocksize;
  13. *bootblocks = (bootsize + nandfs->rawblocksize - 1) / nandfs->rawblocksize;
  14. if (*bootblocks < 3)
  15. *bootblocks = 3;
  16. /* sanity checks */
  17. if (*limitblock > nandfs->limitblock
  18. || *baseblock < nandfs->baseblock
  19. || *bootblocks > nandfs->limitblock - nandfs->baseblock)
  20. return 0;
  21. return 1;
  22. }