1 #include "logfsos.h"
2 #include "logfs.h"
3 #include "nandfs.h"
4 #include "local.h"
5
6 short
nandfsgettag(Nandfs * nandfs,long block)7 nandfsgettag(Nandfs *nandfs, long block)
8 {
9 if (nandfs->blockdata)
10 return nandfs->blockdata[block].tag;
11 return 0;
12 }
13
14 void
nandfssettag(Nandfs * nandfs,long block,short tag)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
nandfsgetpath(Nandfs * nandfs,long block)26 nandfsgetpath(Nandfs *nandfs, long block)
27 {
28 if (nandfs->blockdata)
29 return nandfs->blockdata[block].path;
30 return 0;
31 }
32
33 void
nandfssetpath(Nandfs * nandfs,long block,ulong path)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
nandfsgetnerase(Nandfs * nandfs,long block)43 nandfsgetnerase(Nandfs *nandfs, long block)
44 {
45 if (nandfs->blockdata)
46 return nandfs->blockdata[block].nerase;
47 return 0;
48 }
49
50 void
nandfssetnerase(Nandfs * nandfs,long block,ulong nerase)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
nandfsgetblockpartialformatstatus(Nandfs * nandfs,long block)60 nandfsgetblockpartialformatstatus(Nandfs *nandfs, long block)
61 {
62 if (nandfs->blockdata)
63 return nandfs->blockdata[block].partial;
64 return 0;
65 }
66
67 void
nandfssetblockpartialformatstatus(Nandfs * nandfs,long block,int partial)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
nandfsgetbaseblock(Nandfs * nandfs)77 nandfsgetbaseblock(Nandfs *nandfs)
78 {
79 return nandfs->baseblock;
80 }
81
82 int
nandfsgetblocksize(Nandfs * nandfs)83 nandfsgetblocksize(Nandfs *nandfs)
84 {
85 return 1 << (nandfs->ll.l2pagesperblock + NandfsL2PageSize);
86 }
87
88 ulong
nandfscalcrawaddress(Nandfs * nandfs,long pblock,int dataoffset)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
nandfsgetopenstatus(Nandfs * nandfs)98 nandfsgetopenstatus(Nandfs *nandfs)
99 {
100 return nandfs->blockdata != nil;
101 }
102