xref: /inferno-os/libnandfs/calcformat.c (revision 68c71d4caea0ad74b14fc837a1b3b595fcfdc1d7)
1 #include "logfsos.h"
2 #include "logfs.h"
3 #include "nandfs.h"
4 #include "local.h"
5 
6 int
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