- for (mp = &mount[0]; mp < &mount[NMOUNT]; mp++)
- if (mp->m_bufp != NULL) {
- fs = mp->m_bufp->b_un.b_fs;
- if (fs->fs_fmod == 0)
- continue;
- if (fs->fs_ronly != 0)
- panic("update: rofs mod");
- bp = getblk(mp->m_dev, SBLOCK, SBSIZE);
- fs->fs_fmod = 0;
- fs->fs_time = TIME;
- if (bp->b_un.b_fs != fs)
- panic("update: bad b_fs");
+ for (mp = &mount[0]; mp < &mount[NMOUNT]; mp++) {
+ if (mp->m_bufp == NULL)
+ continue;
+ fs = mp->m_bufp->b_un.b_fs;
+ if (fs->fs_fmod == 0)
+ continue;
+ if (fs->fs_ronly != 0) {
+ printf("fs = %s\n", fs->fs_fsmnt);
+ panic("update: rofs mod");
+ }
+ bp = getblk(mp->m_dev, SBLOCK, SBSIZE);
+ if (bp->b_un.b_fs != fs || fs->fs_magic != FS_MAGIC) {
+ printf("fs = %s\n", fs->fs_fsmnt);
+ panic("update: bad b_fs");
+ }
+ fs->fs_fmod = 0;
+ fs->fs_time = time;
+ bwrite(bp);
+ blks = howmany(fs->fs_cssize, fs->fs_fsize);
+ for (i = 0; i < blks; i += fs->fs_frag) {
+ bp = getblk(mp->m_dev,
+ fsbtodb(fs, fs->fs_csaddr + i),
+ blks - i < fs->fs_frag ?
+ (blks - i) * fs->fs_fsize :
+ fs->fs_bsize);