- (*bdevsw[major(rootdev)].d_open)(rootdev, 1);
- bp = bread(rootdev, SBLOCK, SBSIZE);
- if(u.u_error)
- panic("iinit");
- bp->b_flags |= B_LOCKED; /* block can never be re-used */
- brelse(bp);
- mount[0].m_dev = rootdev;
- mount[0].m_bufp = bp;
- fp = bp->b_un.b_fs;
- if (fp->fs_magic != FS_MAGIC)
- panic("root bad magic number");
- if (fp->fs_bsize > MAXBSIZE)
- panic("root fs_bsize too big");
- fp->fs_ronly = 0;
- fp->fs_fsmnt[0] = '/';
- for (i = 1; i < sizeof(fp->fs_fsmnt); i++)
- fp->fs_fsmnt[i] = 0;
- blks = howmany(fp->fs_cssize, fp->fs_fsize);
- for (i = 0; i < blks; i += fp->fs_frag) {
- bp = bread(rootdev, fsbtodb(fp, fp->fs_csaddr + i),
- blks - i < fp->fs_frag ?
- (blks - i) * fp->fs_fsize :
- fp->fs_bsize);
- if (u.u_error)
- panic("root can't read csum");
- fp->fs_csp[i / fp->fs_frag] = bp->b_un.b_cs;
- bp->b_flags |= B_LOCKED;
- brelse(bp);
- }
+ for (bp = bufhash, i = 0; i < BUFHSZ; i++, bp++)
+ bp->b_forw = bp->b_back = (struct buf *)bp;