|
|
1.1 ! root 1: /* lfsdfree.c - lfsdfree */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <disk.h> ! 6: #include <lfile.h> ! 7: #include <dir.h> ! 8: ! 9: /*------------------------------------------------------------------------ ! 10: * lfsdfree -- free a data block given its address ! 11: *------------------------------------------------------------------------ ! 12: */ ! 13: lfsdfree(diskdev, dba) ! 14: int diskdev; ! 15: DBADDR dba; ! 16: { ! 17: struct dir *dirptr; ! 18: int dirsem; ! 19: struct freeblk *buf; ! 20: ! 21: dirptr = dsdirec(diskdev); ! 22: dirsem = devtab[diskdev].dvioblk->dflsem; ! 23: buf = (struct freeblk *)getbuf(dskdbp); ! 24: wait(dirsem); ! 25: buf->fbnext = dirptr->d_fblst; ! 26: dirptr->d_fblst = dba; ! 27: write(diskdev, buf, dba); ! 28: write(diskdev, dskbcpy(dirptr), DIRBLK); ! 29: signal(dirsem); ! 30: return(OK); ! 31: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.