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