setget.c 1.7 KB

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