Annotation of xinu/sys/LSI/dumkfs.c, revision 1.1.1.1

1.1       root        1: /* dumkfs.c - dumkfs, dumkdl, dumkil */
                      2: 
                      3: #include <conf.h>
                      4: #include <kernel.h>
                      5: #include <disk.h>
                      6: #include <lfile.h>
                      7: #include <dir.h>
                      8: 
                      9: /*------------------------------------------------------------------------
                     10:  *  dumkfs  --  make a fresh file system on a disk
                     11:  *------------------------------------------------------------------------
                     12:  */
                     13: dumkfs(diskdev, niblks, nblocks, diskid, verbose)
                     14: int    diskdev;
                     15: int    niblks;
                     16: unsigned nblocks;
                     17: int    diskid;
                     18: Bool   verbose;
                     19: {
                     20:        DBADDR  firstdb, lastdb;
                     21:        struct  dir     *dirptr;
                     22: 
                     23:        if (verbose)
                     24:                kprintf("Clearing directory block...\n");
                     25:        dirptr = dsdirec(diskdev);
                     26:        firstdb = (DBADDR) (ibtodb(niblks-1) + 1);
                     27:        lastdb = (DBADDR) (nblocks - 1);
                     28:        dirptr->d_iblks = niblks;
                     29:        dirptr->d_fblst = firstdb;
                     30:        dirptr->d_filst = (IBADDR) niblks-1;
                     31:        dirptr->d_id = diskid;
                     32:        dirptr->d_nfiles = 0;
                     33:        write(diskdev, dskbcpy(dirptr), DIRBLK);
                     34:        dumkil(diskdev, niblks, verbose);
                     35:        dumkdl(diskdev, firstdb, lastdb, verbose);      
                     36:        if (verbose)
                     37:                kprintf("Done initializing disk...\n");
                     38:        return(OK);
                     39: }
                     40: 
                     41: 
                     42: /*------------------------------------------------------------------------
                     43:  *  dumkdl  --  link all data blocks into free list to init. file system
                     44:  *------------------------------------------------------------------------
                     45:  */
                     46: dumkdl(diskdev, firstfb, lastfb, verbose)
                     47: int    diskdev;
                     48: DBADDR firstfb, lastfb;
                     49: Bool   verbose;
                     50: {
                     51:        struct  freeblk *buff;
                     52:        DBADDR  dba;
                     53:        char    *bptr;
                     54:        int     i;
                     55: 
                     56:        if (verbose)
                     57:                kprintf("Linking %u free blocks from %u through %u...\n",
                     58:                        lastfb - firstfb + (DBADDR)1, firstfb, lastfb);
                     59:        bptr = buff = (struct freeblk *) getbuf(dskdbp);
                     60:        for (i=0 ; i<DBUFSIZ ; i++)
                     61:                *bptr++ = '\000';
                     62:        for (dba=firstfb ; dba < lastfb ; dba++) {
                     63:                buff->fbnext = (DBADDR) (dba+1);
                     64:                write(diskdev, dskbcpy(buff), dba);
                     65:                if (verbose && (dba%500 == 0))
                     66:                        kprintf("%5u\r",dba);
                     67:        }
                     68:        buff->fbnext = (DBADDR) DIRBLK;
                     69:        write(diskdev, buff, dba);
                     70:        if (verbose)
                     71:                kprintf("\nDone linking data blocks...\n");
                     72:        return(OK);
                     73: }
                     74: 
                     75: 
                     76: 
                     77: /*------------------------------------------------------------------------
                     78:  *  dumkil  --  link ALL i-blocks onto a free list
                     79:  *------------------------------------------------------------------------
                     80:  */
                     81: dumkil(diskdev, niblks, verbose)
                     82: int    diskdev;
                     83: int    niblks;
                     84: Bool   verbose;
                     85: {
                     86:        struct  iblk    iblock;
                     87:        IBADDR  ibnum;
                     88:        int     i;
                     89: 
                     90:        if (verbose)
                     91:                kprintf("Linking %d i-blocks together...\n", niblks);
                     92:        ibclear(&iblock, 0L);
                     93:        for (ibnum=niblks-1 ; ibnum>0 ; ibnum--) {
                     94:                iblock.ib_next = ibnum-1;
                     95:                ibput(diskdev, ibnum, &iblock);
                     96:        }
                     97:        iblock.ib_next = IBNULL;
                     98:        ibput(diskdev, 0, &iblock);
                     99:        if (verbose)
                    100:                kprintf("Done linking i-blocks...\n");
                    101:        return(OK);
                    102: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.