summaryrefslogtreecommitdiff
path: root/libnandfs/getblockstatus.c
blob: 7cf59e38f56ec000c4c250625e14848811556694 (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
25
26
27
#include "logfsos.h"
#include "logfs.h"
#include "nandfs.h"
#include "local.h"

char *
nandfsgetblockstatus(Nandfs *nandfs, long absblock, int *magicfound, void **llsavep, LogfsLowLevelReadResult *result)
{
	NandfsTags tags;
	char *errmsg;
	ulong *llsave;

	errmsg = nandfsreadpageauxiliary(nandfs, &tags, absblock, 0, 1, result);

	*magicfound = tags.magic == LogfsMagic;

	if (llsavep) {
		llsave = nandfsrealloc(nil, sizeof(ulong));
		if (llsave == nil)
			return Enomem;
		*llsave = tags.nerase;
		*llsavep = llsave;
	}

	return errmsg;
}