last line botched (fix from Mike Laman, NCR Torrey Pines)
[unix-history] / usr / src / sys / ufs / ffs / ffs_subr.c
index 8f458cb..e472ea0 100644 (file)
@@ -1,4 +1,4 @@
-/*     ffs_subr.c      4.4     82/12/17        */
+/*     ffs_subr.c      6.2     84/02/07        */
 
 #ifdef KERNEL
 #include "../h/param.h"
 
 #ifdef KERNEL
 #include "../h/param.h"
@@ -68,7 +68,8 @@ update()
         * Write back each (modified) inode.
         */
        for (ip = inode; ip < inodeNINODE; ip++) {
         * Write back each (modified) inode.
         */
        for (ip = inode; ip < inodeNINODE; ip++) {
-               if ((ip->i_flag & ILOCKED) != 0 || ip->i_count == 0)
+               if ((ip->i_flag & ILOCKED) != 0 || ip->i_count == 0 ||
+                   (ip->i_flag & (IACC|IUPD|ICHG) == 0))
                        continue;
                ip->i_flag |= ILOCKED;
                ip->i_count++;
                        continue;
                ip->i_flag |= ILOCKED;
                ip->i_count++;
@@ -103,6 +104,8 @@ syncip(ip)
                blkno = fsbtodb(fs, bmap(ip, lbn, B_READ));
                blkflush(ip->i_dev, blkno, blksize(fs, ip, lbn));
        }
                blkno = fsbtodb(fs, bmap(ip, lbn, B_READ));
                blkflush(ip->i_dev, blkno, blksize(fs, ip, lbn));
        }
+       ip->i_flag |= ICHG;
+       iupdat(ip, &time, &time, 1);
 }
 #endif
 
 }
 #endif