reformatblock.c 703 B

12345678910111213141516171819202122232425262728293031323334
  1. #include "logfsos.h"
  2. #include "logfs.h"
  3. #include "nandfs.h"
  4. #include "local.h"
  5. char *
  6. nandfsreformatblock(Nandfs *nandfs, long block, uchar tag, ulong path, int xcount, long *xdata, void *llsave, int *markedbad)
  7. {
  8. int bad;
  9. char *errmsg;
  10. NandfsBlockData *d;
  11. long nerase;
  12. if (nandfs->blockdata == nil)
  13. return Eperm;
  14. nerase = *(ulong *)llsave;
  15. errmsg = nandfsformatblock(nandfs, block, tag, path,
  16. nandfs->baseblock, nandfs->limitblock - nandfs->baseblock, xcount, xdata, &nerase, &bad);
  17. if (markedbad)
  18. *markedbad = bad;
  19. if (errmsg)
  20. return errmsg;
  21. d = &nandfs->blockdata[block];
  22. d->tag = bad ? LogfsTbad : tag;
  23. d->path = path;
  24. d->nerase = nerase;
  25. d->partial = 0;
  26. return nil;
  27. }