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