summaryrefslogtreecommitdiff
path: root/libnandfs/calcformat.c
blob: 498427f5754e2303f5492ac78ff6b3973fe7f056 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "lib9.h"
#include "logfs.h"
#include "nandfs.h"
#include "local.h"

int
nandfscalcformat(Nandfs *nandfs, long base, long limit, long bootsize, long *baseblock, long *limitblock, long *bootblocks)
{
	*baseblock = (base + nandfs->rawblocksize - 1) / nandfs->rawblocksize;
	if (limit == 0)
		*limitblock = nandfs->limitblock;	
	else
		*limitblock = limit / nandfs->rawblocksize;
	*bootblocks = (bootsize + nandfs->rawblocksize - 1) / nandfs->rawblocksize;
	if (*bootblocks < 3)
		*bootblocks = 3;
	/* sanity checks */	
	if (*limitblock > nandfs->limitblock
		|| *baseblock < nandfs->baseblock
		|| *bootblocks > nandfs->limitblock - nandfs->baseblock)
		return 0;
	return 1;
}