xref: /inferno-os/libnandfs/setget.c (revision cd03a2dc3bfa8e793b2e4702966706c10d69b314)
1 #include "logfsos.h"
2 #include "logfs.h"
3 #include "nandfs.h"
4 #include "local.h"
5 
6 short
7 nandfsgettag(Nandfs *nandfs, long block)
8 {
9 	if (nandfs->blockdata)
10 		return nandfs->blockdata[block].tag;
11 	return 0;
12 }
13 
14 void
15 nandfssettag(Nandfs *nandfs, long block, short tag)
16 {
17 	if (nandfs->blockdata) {
18 		nandfs->blockdata[block].tag = tag;
19 		if (tag == LogfsTworse)
20 			nandfs->worseblocks = 1;
21 		return;
22 	}
23 }
24 
25 long
26 nandfsgetpath(Nandfs *nandfs, long block)
27 {
28 	if (nandfs->blockdata)
29 		return nandfs->blockdata[block].path;
30 	return 0;
31 }
32 
33 void
34 nandfssetpath(Nandfs *nandfs, long block, ulong path)
35 {
36 	if (nandfs->blockdata) {
37 		nandfs->blockdata[block].path = path;
38 		return;
39 	}
40 }
41 
42 long
43 nandfsgetnerase(Nandfs *nandfs, long block)
44 {
45 	if (nandfs->blockdata)
46 		return nandfs->blockdata[block].nerase;
47 	return 0;
48 }
49 
50 void
51 nandfssetnerase(Nandfs *nandfs, long block, ulong nerase)
52 {
53 	if (nandfs->blockdata) {
54 		nandfs->blockdata[block].nerase = nerase;
55 		return;
56 	}
57 }
58 
59 int
60 nandfsgetblockpartialformatstatus(Nandfs *nandfs, long block)
61 {
62 	if (nandfs->blockdata)
63 		return nandfs->blockdata[block].partial;
64 	return 0;
65 }
66 
67 void
68 nandfssetblockpartialformatstatus(Nandfs *nandfs, long block, int partial)
69 {
70 	if (nandfs->blockdata) {
71 		nandfs->blockdata[block].partial = partial;
72 		return;
73 	}
74 }
75 
76 long
77 nandfsgetbaseblock(Nandfs *nandfs)
78 {
79 	return nandfs->baseblock;
80 }
81 
82 int
83 nandfsgetblocksize(Nandfs *nandfs)
84 {
85 	return 1 << (nandfs->ll.l2pagesperblock + NandfsL2PageSize);
86 }
87 
88 ulong
89 nandfscalcrawaddress(Nandfs *nandfs, long pblock, int dataoffset)
90 {
91 	int lpage, pageoffset;
92 	lpage = dataoffset / NandfsPageSize;
93 	pageoffset = dataoffset % NandfsPageSize;
94 	return nandfs->rawblocksize * pblock + lpage * NandfsFullSize + pageoffset;
95 }
96 
97 int
98 nandfsgetopenstatus(Nandfs *nandfs)
99 {
100 	return nandfs->blockdata != nil;
101 }
102