code: 9ferno

ref: 6bb619c8db2867ddd9cd19c0aec05065f5ee0cae
dir: /libnandfs/calcformat.c/

View raw version
#include "logfsos.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;
}