Author: mjg
Date: Mon Jan 13 02:31:51 2020
New Revision: 356669
URL: https://svnweb.freebsd.org/changeset/base/356669

Log:
  ufs: add a setter for inode i_flag field
  
  This will be used later to add vnodes to the lazy list.
  
  Reviewed by:  kib (previous version), jeff
  Tested by:    pho (in a larger patch)
  Differential Revision:        https://reviews.freebsd.org/D22994

Modified:
  head/sys/ufs/ffs/ffs_alloc.c
  head/sys/ufs/ffs/ffs_balloc.c
  head/sys/ufs/ffs/ffs_inode.c
  head/sys/ufs/ffs/ffs_snapshot.c
  head/sys/ufs/ffs/ffs_softdep.c
  head/sys/ufs/ffs/ffs_vfsops.c
  head/sys/ufs/ffs/ffs_vnops.c
  head/sys/ufs/ufs/inode.h
  head/sys/ufs/ufs/ufs_acl.c
  head/sys/ufs/ufs/ufs_inode.c
  head/sys/ufs/ufs/ufs_lookup.c
  head/sys/ufs/ufs/ufs_vnops.c

Modified: head/sys/ufs/ffs/ffs_alloc.c
==============================================================================
--- head/sys/ufs/ffs/ffs_alloc.c        Sun Jan 12 23:52:16 2020        
(r356668)
+++ head/sys/ufs/ffs/ffs_alloc.c        Mon Jan 13 02:31:51 2020        
(r356669)
@@ -202,9 +202,9 @@ retry:
                delta = btodb(size);
                DIP_SET(ip, i_blocks, DIP(ip, i_blocks) + delta);
                if (flags & IO_EXT)
-                       ip->i_flag |= IN_CHANGE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                else
-                       ip->i_flag |= IN_CHANGE | IN_UPDATE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                *bnp = bno;
                return (0);
        }
@@ -329,9 +329,9 @@ retry:
                delta = btodb(nsize - osize);
                DIP_SET(ip, i_blocks, DIP(ip, i_blocks) + delta);
                if (flags & IO_EXT)
-                       ip->i_flag |= IN_CHANGE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                else
-                       ip->i_flag |= IN_CHANGE | IN_UPDATE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                allocbuf(bp, nsize);
                bp->b_flags |= B_DONE;
                vfs_bio_bzero_buf(bp, osize, nsize - osize);
@@ -413,9 +413,9 @@ retry:
                delta = btodb(nsize - osize);
                DIP_SET(ip, i_blocks, DIP(ip, i_blocks) + delta);
                if (flags & IO_EXT)
-                       ip->i_flag |= IN_CHANGE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                else
-                       ip->i_flag |= IN_CHANGE | IN_UPDATE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                allocbuf(bp, nsize);
                bp->b_flags |= B_DONE;
                vfs_bio_bzero_buf(bp, osize, nsize - osize);
@@ -743,7 +743,7 @@ ffs_reallocblks_ufs1(ap)
                else
                        bwrite(sbp);
        } else {
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                if (!doasyncfree)
                        ffs_update(vp, 1);
        }
@@ -1007,7 +1007,7 @@ ffs_reallocblks_ufs2(ap)
                else
                        bwrite(sbp);
        } else {
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                if (!doasyncfree)
                        ffs_update(vp, 1);
        }
@@ -1150,7 +1150,7 @@ retry:
                        ip = VTOI(*vpp);
                        if (ip->i_mode)
                                goto dup_alloc;
-                       ip->i_flag |= IN_MODIFIED;
+                       UFS_INODE_SET_FLAG(ip, IN_MODIFIED);
                        vput(*vpp);
                }
                return (error);
@@ -1185,7 +1185,7 @@ dup_alloc:
        (*vpp)->v_type = VNON;
        if (fs->fs_magic == FS_UFS2_MAGIC) {
                (*vpp)->v_op = &ffs_vnodeops2;
-               ip->i_flag |= IN_UFS2;
+               UFS_INODE_SET_FLAG(ip, IN_UFS2);
        } else {
                (*vpp)->v_op = &ffs_vnodeops1;
        }
@@ -3238,7 +3238,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
                ip->i_nlink += cmd.size;
                DIP_SET(ip, i_nlink, ip->i_nlink);
                ip->i_effnlink += cmd.size;
-               ip->i_flag |= IN_CHANGE | IN_MODIFIED;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_MODIFIED);
                error = ffs_update(vp, 1);
                if (DOINGSOFTDEP(vp))
                        softdep_change_linkcnt(ip);
@@ -3257,7 +3257,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
                        break;
                ip = VTOI(vp);
                DIP_SET(ip, i_blocks, DIP(ip, i_blocks) + cmd.size);
-               ip->i_flag |= IN_CHANGE | IN_MODIFIED;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_MODIFIED);
                error = ffs_update(vp, 1);
                vput(vp);
                break;
@@ -3274,7 +3274,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
                        break;
                ip = VTOI(vp);
                DIP_SET(ip, i_size, cmd.size);
-               ip->i_flag |= IN_CHANGE | IN_MODIFIED;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_MODIFIED);
                error = ffs_update(vp, 1);
                vput(vp);
                break;
@@ -3494,7 +3494,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS)
                        vput(vp);
                        break;
                }
-               ip->i_flag |= IN_CHANGE | IN_MODIFIED;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_MODIFIED);
                error = ffs_update(vp, 1);
                vput(vp);
                break;

Modified: head/sys/ufs/ffs/ffs_balloc.c
==============================================================================
--- head/sys/ufs/ffs/ffs_balloc.c       Sun Jan 12 23:52:16 2020        
(r356668)
+++ head/sys/ufs/ffs/ffs_balloc.c       Mon Jan 13 02:31:51 2020        
(r356669)
@@ -154,7 +154,7 @@ ffs_balloc_ufs1(struct vnode *vp, off_t startoffset, i
                        ip->i_size = smalllblktosize(fs, nb + 1);
                        dp->di_size = ip->i_size;
                        dp->di_db[nb] = dbtofsb(fs, bp->b_blkno);
-                       ip->i_flag |= IN_CHANGE | IN_UPDATE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                        if (flags & IO_SYNC)
                                bwrite(bp);
                        else if (DOINGASYNC(vp))
@@ -224,7 +224,7 @@ ffs_balloc_ufs1(struct vnode *vp, off_t startoffset, i
                                    nsize, 0, bp);
                }
                dp->di_db[lbn] = dbtofsb(fs, bp->b_blkno);
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                *bpp = bp;
                return (0);
        }
@@ -280,7 +280,7 @@ ffs_balloc_ufs1(struct vnode *vp, off_t startoffset, i
                }
                allocib = &dp->di_ib[indirs[0].in_off];
                *allocib = nb;
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
        }
        /*
         * Fetch through the indirect blocks, allocating as necessary.
@@ -542,7 +542,7 @@ fail:
                (void) chkdq(ip, -btodb(deallocated), cred, FORCE);
 #endif
                dp->di_blocks -= btodb(deallocated);
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
        }
        (void) ffs_syncvnode(vp, MNT_WAIT, 0);
        /*
@@ -645,7 +645,7 @@ ffs_balloc_ufs2(struct vnode *vp, off_t startoffset, i
                                dp->di_extsize = smalllblktosize(fs, nb + 1);
                                dp->di_extb[nb] = dbtofsb(fs, bp->b_blkno);
                                bp->b_xflags |= BX_ALTDATA;
-                               ip->i_flag |= IN_CHANGE;
+                               UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                                if (flags & IO_SYNC)
                                        bwrite(bp);
                                else
@@ -719,7 +719,7 @@ ffs_balloc_ufs2(struct vnode *vp, off_t startoffset, i
                                    nsize, 0, bp);
                }
                dp->di_extb[lbn] = dbtofsb(fs, bp->b_blkno);
-               ip->i_flag |= IN_CHANGE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                *bpp = bp;
                return (0);
        }
@@ -748,7 +748,7 @@ ffs_balloc_ufs2(struct vnode *vp, off_t startoffset, i
                        ip->i_size = smalllblktosize(fs, nb + 1);
                        dp->di_size = ip->i_size;
                        dp->di_db[nb] = dbtofsb(fs, bp->b_blkno);
-                       ip->i_flag |= IN_CHANGE | IN_UPDATE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                        if (flags & IO_SYNC)
                                bwrite(bp);
                        else
@@ -818,7 +818,7 @@ ffs_balloc_ufs2(struct vnode *vp, off_t startoffset, i
                                    nsize, 0, bp);
                }
                dp->di_db[lbn] = dbtofsb(fs, bp->b_blkno);
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                *bpp = bp;
                return (0);
        }
@@ -875,7 +875,7 @@ ffs_balloc_ufs2(struct vnode *vp, off_t startoffset, i
                }
                allocib = &dp->di_ib[indirs[0].in_off];
                *allocib = nb;
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
        }
        /*
         * Fetch through the indirect blocks, allocating as necessary.
@@ -1144,7 +1144,7 @@ fail:
                (void) chkdq(ip, -btodb(deallocated), cred, FORCE);
 #endif
                dp->di_blocks -= btodb(deallocated);
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
        }
        (void) ffs_syncvnode(vp, MNT_WAIT, 0);
        /*

Modified: head/sys/ufs/ffs/ffs_inode.c
==============================================================================
--- head/sys/ufs/ffs/ffs_inode.c        Sun Jan 12 23:52:16 2020        
(r356668)
+++ head/sys/ufs/ffs/ffs_inode.c        Mon Jan 13 02:31:51 2020        
(r356669)
@@ -275,7 +275,7 @@ ffs_truncate(vp, length, flags, cred)
                                oldblks[i] = ip->i_din2->di_extb[i];
                                ip->i_din2->di_extb[i] = 0;
                        }
-                       ip->i_flag |= IN_CHANGE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                        if ((error = ffs_update(vp, waitforupdate)))
                                return (error);
                        for (i = 0; i < UFS_NXADDR; i++) {
@@ -299,13 +299,13 @@ ffs_truncate(vp, length, flags, cred)
                bzero(SHORTLINK(ip), (u_int)ip->i_size);
                ip->i_size = 0;
                DIP_SET(ip, i_size, 0);
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                if (needextclean)
                        goto extclean;
                return (ffs_update(vp, waitforupdate));
        }
        if (ip->i_size == length) {
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                if (needextclean)
                        goto extclean;
                return (ffs_update(vp, 0));
@@ -339,7 +339,7 @@ ffs_truncate(vp, length, flags, cred)
                        bdwrite(bp);
                else
                        bawrite(bp);
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                return (ffs_update(vp, waitforupdate));
        }
        /*
@@ -405,7 +405,7 @@ ffs_truncate(vp, length, flags, cred)
                                softdep_setup_freeblocks(ip, length, flags);
                        ASSERT_VOP_LOCKED(vp, "ffs_truncate1");
                        if (journaltrunc == 0) {
-                               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+                               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                                error = ffs_update(vp, 0);
                        }
                        return (error);
@@ -489,7 +489,7 @@ ffs_truncate(vp, length, flags, cred)
                if (i > lastblock)
                        DIP_SET(ip, i_db[i], 0);
        }
-       ip->i_flag |= IN_CHANGE | IN_UPDATE;
+       UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
        allerror = ffs_update(vp, waitforupdate);
        
        /*
@@ -619,7 +619,7 @@ done:
                DIP_SET(ip, i_blocks, DIP(ip, i_blocks) - blocksreleased);
        else    /* sanity */
                DIP_SET(ip, i_blocks, 0);
-       ip->i_flag |= IN_CHANGE;
+       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
 #ifdef QUOTA
        (void) chkdq(ip, -blocksreleased, NOCRED, FORCE);
 #endif

Modified: head/sys/ufs/ffs/ffs_snapshot.c
==============================================================================
--- head/sys/ufs/ffs/ffs_snapshot.c     Sun Jan 12 23:52:16 2020        
(r356668)
+++ head/sys/ufs/ffs/ffs_snapshot.c     Mon Jan 13 02:31:51 2020        
(r356669)
@@ -319,7 +319,7 @@ restart:
                goto out;
        ip->i_size = lblktosize(fs, (off_t)numblks);
        DIP_SET(ip, i_size, ip->i_size);
-       ip->i_flag |= IN_CHANGE | IN_UPDATE;
+       UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
        error = readblock(vp, bp, numblks - 1);
        bawrite(bp);
        if (error != 0)
@@ -401,7 +401,7 @@ restart:
         */
        ip->i_flags |= SF_SNAPSHOT;
        DIP_SET(ip, i_flags, ip->i_flags);
-       ip->i_flag |= IN_CHANGE | IN_UPDATE;
+       UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
        /*
         * Ensure that the snapshot is completely on disk.
         * Since we have marked it as a snapshot it is safe to
@@ -1215,7 +1215,7 @@ snapacct_ufs1(vp, oldblkp, lastblkp, fs, lblkno, expun
                lbn = fragstoblks(fs, blkno);
                if (lbn < UFS_NDADDR) {
                        blkp = &ip->i_din1->di_db[lbn];
-                       ip->i_flag |= IN_CHANGE | IN_UPDATE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                } else {
                        error = ffs_balloc_ufs1(vp, lblktosize(fs, (off_t)lbn),
                            fs->fs_bsize, KERNCRED, BA_METAONLY, &ibp);
@@ -1501,7 +1501,7 @@ snapacct_ufs2(vp, oldblkp, lastblkp, fs, lblkno, expun
                lbn = fragstoblks(fs, blkno);
                if (lbn < UFS_NDADDR) {
                        blkp = &ip->i_din2->di_db[lbn];
-                       ip->i_flag |= IN_CHANGE | IN_UPDATE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                } else {
                        error = ffs_balloc_ufs2(vp, lblktosize(fs, (off_t)lbn),
                            fs->fs_bsize, KERNCRED, BA_METAONLY, &ibp);
@@ -1724,7 +1724,7 @@ ffs_snapremove(vp)
         */
        ip->i_flags &= ~SF_SNAPSHOT;
        DIP_SET(ip, i_flags, ip->i_flags);
-       ip->i_flag |= IN_CHANGE | IN_UPDATE;
+       UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
        /*
         * The dirtied indirects must be written out before
         * softdep_setup_freeblocks() is called.  Otherwise indir_trunc()
@@ -1830,7 +1830,7 @@ retry:
                                panic("snapblkfree: inconsistent block type");
                        if (lbn < UFS_NDADDR) {
                                DIP_SET(ip, i_db[lbn], BLK_NOCOPY);
-                               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+                               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                        } else if (I_IS_UFS1(ip)) {
                                ((ufs1_daddr_t *)(ibp->b_data))[indiroff] =
                                    BLK_NOCOPY;
@@ -1887,7 +1887,7 @@ retry:
                                bdwrite(ibp);
                        }
                        DIP_SET(ip, i_blocks, DIP(ip, i_blocks) + btodb(size));
-                       ip->i_flag |= IN_CHANGE | IN_UPDATE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                        lockmgr(vp->v_vnlock, LK_RELEASE, NULL);
                        return (1);
                }
@@ -2580,7 +2580,7 @@ process_deferred_inactive(struct mount *mp)
                ip = VTOI(vp);
                if ((ip->i_flag & IN_LAZYACCESS) != 0) {
                        ip->i_flag &= ~IN_LAZYACCESS;
-                       ip->i_flag |= IN_MODIFIED;
+                       UFS_INODE_SET_FLAG(ip, IN_MODIFIED);
                }
                VI_LOCK(vp);
                if ((vp->v_iflag & VI_OWEINACT) == 0 || vp->v_usecount > 0) {

Modified: head/sys/ufs/ffs/ffs_softdep.c
==============================================================================
--- head/sys/ufs/ffs/ffs_softdep.c      Sun Jan 12 23:52:16 2020        
(r356668)
+++ head/sys/ufs/ffs/ffs_softdep.c      Mon Jan 13 02:31:51 2020        
(r356669)
@@ -6656,7 +6656,7 @@ softdep_journal_freeblocks(ip, cred, length, flags)
                 * journaling.
                 */
                if (length != 0 && lastlbn >= UFS_NDADDR) {
-                       ip->i_flag |= IN_TRUNCATED;
+                       UFS_INODE_SET_FLAG(ip, IN_TRUNCATED);
                        newjtrunc(freeblks, length, 0);
                }
                ip->i_size = length;
@@ -6780,7 +6780,7 @@ softdep_journal_freeblocks(ip, cred, length, flags)
                }
                ip->i_size = length;
                DIP_SET(ip, i_size, length);
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                allocbuf(bp, frags);
                ffs_update(vp, 0);
                bawrite(bp);
@@ -7647,7 +7647,7 @@ softdep_freefile(pvp, ino, mode)
        WORKLIST_INSERT(&inodedep->id_inowait, &freefile->fx_list);
        FREE_LOCK(ump);
        if (ip->i_number == ino)
-               ip->i_flag |= IN_MODIFIED;
+               UFS_INODE_SET_FLAG(ip, IN_MODIFIED);
 }
 
 /*
@@ -8056,7 +8056,7 @@ handle_complete_freeblocks(freeblks, flags)
                        vgone(vp);
                } else if (DIP(ip, i_modrev) == freeblks->fb_modrev) {
                        DIP_SET(ip, i_blocks, DIP(ip, i_blocks) - spare);
-                       ip->i_flag |= IN_CHANGE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                        /*
                         * We must wait so this happens before the
                         * journal is reclaimed.
@@ -9873,7 +9873,7 @@ handle_workitem_remove(dirrem, flags)
                    "%ju negative i_nlink %d", (intmax_t)ip->i_number,
                    ip->i_nlink));
                DIP_SET(ip, i_nlink, ip->i_nlink);
-               ip->i_flag |= IN_CHANGE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                if (ip->i_nlink < ip->i_effnlink)
                        panic("handle_workitem_remove: bad file delta");
                if (ip->i_nlink == 0) 
@@ -9896,7 +9896,7 @@ handle_workitem_remove(dirrem, flags)
        KASSERT(ip->i_nlink >= 0, ("handle_workitem_remove: directory ino "
            "%ju negative i_nlink %d", (intmax_t)ip->i_number, ip->i_nlink));
        DIP_SET(ip, i_nlink, ip->i_nlink);
-       ip->i_flag |= IN_CHANGE;
+       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
        if (ip->i_nlink < ip->i_effnlink)
                panic("handle_workitem_remove: bad dir delta");
        if (ip->i_nlink == 0)
@@ -9938,7 +9938,7 @@ handle_workitem_remove(dirrem, flags)
        }
        WORKLIST_INSERT(&inodedep->id_inowait, &dirrem->dm_list);
        FREE_LOCK(ump);
-       ip->i_flag |= IN_CHANGE;
+       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
 out:
        ffs_update(vp, 0);
        vput(vp);

Modified: head/sys/ufs/ffs/ffs_vfsops.c
==============================================================================
--- head/sys/ufs/ffs/ffs_vfsops.c       Sun Jan 12 23:52:16 2020        
(r356668)
+++ head/sys/ufs/ffs/ffs_vfsops.c       Mon Jan 13 02:31:51 2020        
(r356669)
@@ -1816,7 +1816,7 @@ ffs_vgetf(mp, ino, flags, vpp, ffs_flags)
                while (ip->i_gen == 0)
                        ip->i_gen = arc4random();
                if ((vp->v_mount->mnt_flag & MNT_RDONLY) == 0) {
-                       ip->i_flag |= IN_MODIFIED;
+                       UFS_INODE_SET_FLAG(ip, IN_MODIFIED);
                        DIP_SET(ip, i_gen, ip->i_gen);
                }
        }

Modified: head/sys/ufs/ffs/ffs_vnops.c
==============================================================================
--- head/sys/ufs/ffs/ffs_vnops.c        Sun Jan 12 23:52:16 2020        
(r356668)
+++ head/sys/ufs/ffs/ffs_vnops.c        Mon Jan 13 02:31:51 2020        
(r356669)
@@ -668,7 +668,7 @@ ffs_read(ap)
            (vp->v_mount->mnt_flag & (MNT_NOATIME | MNT_RDONLY)) == 0 &&
            (ip->i_flag & IN_ACCESS) == 0) {
                VI_LOCK(vp);
-               ip->i_flag |= IN_ACCESS;
+               UFS_INODE_SET_FLAG(ip, IN_ACCESS);
                VI_UNLOCK(vp);
        }
        return (error);
@@ -853,7 +853,7 @@ ffs_write(ap)
                }
                if (error || xfersize == 0)
                        break;
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
        }
        /*
         * If we successfully wrote any data, and we are not the superuser
@@ -1096,7 +1096,7 @@ ffs_extwrite(struct vnode *vp, struct uio *uio, int io
                        bdwrite(bp);
                if (error || xfersize == 0)
                        break;
-               ip->i_flag |= IN_CHANGE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE);
        }
        /*
         * If we successfully wrote any data, and we are not the superuser
@@ -1203,11 +1203,11 @@ ffs_lock_ea(struct vnode *vp)
        ip = VTOI(vp);
        VI_LOCK(vp);
        while (ip->i_flag & IN_EA_LOCKED) {
-               ip->i_flag |= IN_EA_LOCKWAIT;
+               UFS_INODE_SET_FLAG(ip, IN_EA_LOCKWAIT);
                msleep(&ip->i_ea_refs, &vp->v_interlock, PINOD + 2, "ufs_ea",
                    0);
        }
-       ip->i_flag |= IN_EA_LOCKED;
+       UFS_INODE_SET_FLAG(ip, IN_EA_LOCKED);
        VI_UNLOCK(vp);
 }
 

Modified: head/sys/ufs/ufs/inode.h
==============================================================================
--- head/sys/ufs/ufs/inode.h    Sun Jan 12 23:52:16 2020        (r356668)
+++ head/sys/ufs/ufs/inode.h    Mon Jan 13 02:31:51 2020        (r356669)
@@ -138,6 +138,13 @@ struct inode {
        "\14b12\13is_ufs2\12truncated\11ea_lockwait\10ea_locked" \
        "\7lazyaccess\6lazymod\5needsync\4modified\3update\2change\1access"
 
+#define UFS_INODE_SET_FLAG(ip, flags) do {                     \
+       struct inode *_ip = (ip);                               \
+       int _flags = (flags);                                   \
+                                                               \
+       _ip->i_flag |= _flags;                                  \
+} while (0)
+
 #define        i_dirhash i_un.dirhash
 #define        i_snapblklist i_un.snapblklist
 #define        i_din1 dinode_u.din1

Modified: head/sys/ufs/ufs/ufs_acl.c
==============================================================================
--- head/sys/ufs/ufs/ufs_acl.c  Sun Jan 12 23:52:16 2020        (r356668)
+++ head/sys/ufs/ufs/ufs_acl.c  Mon Jan 13 02:31:51 2020        (r356669)
@@ -421,7 +421,7 @@ ufs_setacl_nfs4_internal(struct vnode *vp, struct acl 
        ip->i_mode &= ACL_PRESERVE_MASK;
        ip->i_mode |= mode;
        DIP_SET(ip, i_mode, ip->i_mode);
-       ip->i_flag |= IN_CHANGE;
+       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
 
        VN_KNOTE_UNLOCKED(vp, NOTE_ATTRIB);
 
@@ -594,7 +594,7 @@ ufs_setacl_posix1e(struct vop_setacl_args *ap)
                 * inode and mark it as changed.
                 */
                ufs_sync_inode_from_acl(ap->a_aclp, ip);
-               ip->i_flag |= IN_CHANGE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                error = UFS_UPDATE(ap->a_vp, 0);
        }
 

Modified: head/sys/ufs/ufs/ufs_inode.c
==============================================================================
--- head/sys/ufs/ufs/ufs_inode.c        Sun Jan 12 23:52:16 2020        
(r356668)
+++ head/sys/ufs/ufs/ufs_inode.c        Mon Jan 13 02:31:51 2020        
(r356669)
@@ -183,7 +183,7 @@ ufs_inactive(ap)
                mode = ip->i_mode;
                ip->i_mode = 0;
                DIP_SET(ip, i_mode, 0);
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                if (DOINGSOFTDEP(vp))
                        softdep_change_linkcnt(ip);
                UFS_VFREE(vp, ip->i_number, mode);
@@ -241,7 +241,7 @@ ufs_reclaim(ap)
 #endif
 
        if (ip->i_flag & IN_LAZYMOD)
-               ip->i_flag |= IN_MODIFIED;
+               UFS_INODE_SET_FLAG(ip, IN_MODIFIED);
        UFS_UPDATE(vp, 0);
        /*
         * Remove the inode from its hash chain.

Modified: head/sys/ufs/ufs/ufs_lookup.c
==============================================================================
--- head/sys/ufs/ufs/ufs_lookup.c       Sun Jan 12 23:52:16 2020        
(r356668)
+++ head/sys/ufs/ufs/ufs_lookup.c       Mon Jan 13 02:31:51 2020        
(r356669)
@@ -556,7 +556,7 @@ found:
                ufs_dirbad(dp, i_offset, "i_size too small");
                dp->i_size = i_offset + DIRSIZ(OFSFMT(vdp), ep);
                DIP_SET(dp, i_size, dp->i_size);
-               dp->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(dp, IN_CHANGE | IN_UPDATE);
        }
        brelse(bp);
 
@@ -918,7 +918,7 @@ ufs_direnter(dvp, tvp, dirp, cnp, newdirbp, isrename)
                dp->i_size = dp->i_offset + DIRBLKSIZ;
                DIP_SET(dp, i_size, dp->i_size);
                dp->i_endoff = dp->i_size;
-               dp->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(dp, IN_CHANGE | IN_UPDATE);
                dirp->d_reclen = DIRBLKSIZ;
                blkoff = dp->i_offset &
                    (VFSTOUFS(dvp->v_mount)->um_mountp->mnt_stat.f_iosize - 1);
@@ -946,7 +946,7 @@ ufs_direnter(dvp, tvp, dirp, cnp, newdirbp, isrename)
                        }
                        if (softdep_setup_directory_add(bp, dp, dp->i_offset,
                            dirp->d_ino, newdirbp, 1))
-                               dp->i_flag |= IN_NEEDSYNC;
+                               UFS_INODE_SET_FLAG(dp, IN_NEEDSYNC);
                        if (newdirbp)
                                bdwrite(newdirbp);
                        bdwrite(bp);
@@ -1118,7 +1118,7 @@ ufs_direnter(dvp, tvp, dirp, cnp, newdirbp, isrename)
                        error = bwrite(bp);
                }
        }
-       dp->i_flag |= IN_CHANGE | IN_UPDATE;
+       UFS_INODE_SET_FLAG(dp, IN_CHANGE | IN_UPDATE);
        /*
         * If all went well, and the directory can be shortened, proceed
         * with the truncation. Note that we have to unlock the inode for
@@ -1179,13 +1179,13 @@ ufs_dirremove(dvp, ip, flags, isrmdir)
         */
        if (ip) {
                ip->i_effnlink--;
-               ip->i_flag |= IN_CHANGE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                if (DOINGSOFTDEP(dvp)) {
                        softdep_setup_unlink(dp, ip);
                } else {
                        ip->i_nlink--;
                        DIP_SET(ip, i_nlink, ip->i_nlink);
-                       ip->i_flag |= IN_CHANGE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                }
        }
        if (flags & DOWHITEOUT)
@@ -1195,13 +1195,13 @@ ufs_dirremove(dvp, ip, flags, isrmdir)
        if ((error = UFS_BLKATOFF(dvp, offset, (char **)&ep, &bp)) != 0) {
                if (ip) {
                        ip->i_effnlink++;
-                       ip->i_flag |= IN_CHANGE;
+                       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                        if (DOINGSOFTDEP(dvp)) {
                                softdep_change_linkcnt(ip);
                        } else {
                                ip->i_nlink++;
                                DIP_SET(ip, i_nlink, ip->i_nlink);
-                               ip->i_flag |= IN_CHANGE;
+                               UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                        }
                }
                return (error);
@@ -1269,7 +1269,7 @@ out:
                else
                        error = bwrite(bp);
        }
-       dp->i_flag |= IN_CHANGE | IN_UPDATE;
+       UFS_INODE_SET_FLAG(dp, IN_CHANGE | IN_UPDATE);
        /*
         * If the last named reference to a snapshot goes away,
         * drop its snapshot reference so that it will be reclaimed
@@ -1303,13 +1303,13 @@ ufs_dirrewrite(dp, oip, newinum, newtype, isrmdir)
         * necessary.
         */
        oip->i_effnlink--;
-       oip->i_flag |= IN_CHANGE;
+       UFS_INODE_SET_FLAG(oip, IN_CHANGE);
        if (DOINGSOFTDEP(vdp)) {
                softdep_setup_unlink(dp, oip);
        } else {
                oip->i_nlink--;
                DIP_SET(oip, i_nlink, oip->i_nlink);
-               oip->i_flag |= IN_CHANGE;
+               UFS_INODE_SET_FLAG(oip, IN_CHANGE);
        }
 
        error = UFS_BLKATOFF(vdp, (off_t)dp->i_offset, (char **)&ep, &bp);
@@ -1320,13 +1320,13 @@ ufs_dirrewrite(dp, oip, newinum, newtype, isrmdir)
        }
        if (error) {
                oip->i_effnlink++;
-               oip->i_flag |= IN_CHANGE;
+               UFS_INODE_SET_FLAG(oip, IN_CHANGE);
                if (DOINGSOFTDEP(vdp)) {
                        softdep_change_linkcnt(oip);
                } else {
                        oip->i_nlink++;
                        DIP_SET(oip, i_nlink, oip->i_nlink);
-                       oip->i_flag |= IN_CHANGE;
+                       UFS_INODE_SET_FLAG(oip, IN_CHANGE);
                }
                return (error);
        }
@@ -1344,7 +1344,7 @@ ufs_dirrewrite(dp, oip, newinum, newtype, isrmdir)
                        error = bwrite(bp);
                }
        }
-       dp->i_flag |= IN_CHANGE | IN_UPDATE;
+       UFS_INODE_SET_FLAG(dp, IN_CHANGE | IN_UPDATE);
        /*
         * If the last named reference to a snapshot goes away,
         * drop its snapshot reference so that it will be reclaimed

Modified: head/sys/ufs/ufs/ufs_vnops.c
==============================================================================
--- head/sys/ufs/ufs/ufs_vnops.c        Sun Jan 12 23:52:16 2020        
(r356668)
+++ head/sys/ufs/ufs/ufs_vnops.c        Mon Jan 13 02:31:51 2020        
(r356669)
@@ -154,13 +154,13 @@ ufs_itimes_locked(struct vnode *vp)
                return;
 
        if ((vp->v_type == VBLK || vp->v_type == VCHR) && !DOINGSOFTDEP(vp))
-               ip->i_flag |= IN_LAZYMOD;
+               UFS_INODE_SET_FLAG(ip, IN_LAZYMOD);
        else if (((vp->v_mount->mnt_kern_flag &
                    (MNTK_SUSPENDED | MNTK_SUSPEND)) == 0) ||
                    (ip->i_flag & (IN_CHANGE | IN_UPDATE)))
-               ip->i_flag |= IN_MODIFIED;
+               UFS_INODE_SET_FLAG(ip, IN_MODIFIED);
        else if (ip->i_flag & IN_ACCESS)
-               ip->i_flag |= IN_LAZYACCESS;
+               UFS_INODE_SET_FLAG(ip, IN_LAZYACCESS);
        vfs_timestamp(&ts);
        if (ip->i_flag & IN_ACCESS) {
                DIP_SET(ip, i_atime, ts.tv_sec);
@@ -237,7 +237,7 @@ ufs_mknod(ap)
        if (error)
                return (error);
        ip = VTOI(*vpp);
-       ip->i_flag |= IN_ACCESS | IN_CHANGE | IN_UPDATE;
+       UFS_INODE_SET_FLAG(ip, IN_ACCESS | IN_CHANGE | IN_UPDATE);
        if (vap->va_rdev != VNOVAL) {
                /*
                 * Want to be able to use this to make badblock
@@ -550,7 +550,7 @@ ufs_setattr(ap)
                }
                ip->i_flags = vap->va_flags;
                DIP_SET(ip, i_flags, vap->va_flags);
-               ip->i_flag |= IN_CHANGE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                error = UFS_UPDATE(vp, 0);
                if (ip->i_flags & (IMMUTABLE | APPEND))
                        return (error);
@@ -619,7 +619,7 @@ ufs_setattr(ap)
                error = vn_utimes_perm(vp, vap, cred, td);
                if (error != 0)
                        return (error);
-               ip->i_flag |= IN_CHANGE | IN_MODIFIED;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_MODIFIED);
                if (vap->va_atime.tv_sec != VNOVAL) {
                        ip->i_flag &= ~IN_ACCESS;
                        DIP_SET(ip, i_atime, vap->va_atime.tv_sec);
@@ -690,7 +690,7 @@ ufs_markatime(ap)
        struct inode *ip = VTOI(vp);
 
        VI_LOCK(vp);
-       ip->i_flag |= IN_ACCESS;
+       UFS_INODE_SET_FLAG(ip, IN_ACCESS);
        VI_UNLOCK(vp);
        /*
         * XXXKIB No UFS_UPDATE(ap->a_vp, 0) there.
@@ -746,7 +746,7 @@ ufs_chmod(vp, mode, cred, td)
        ip->i_mode &= ~ALLPERMS;
        ip->i_mode |= (mode & ALLPERMS);
        DIP_SET(ip, i_mode, ip->i_mode);
-       ip->i_flag |= IN_CHANGE;
+       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
 #ifdef UFS_ACL
        if ((vp->v_mount->mnt_flag & MNT_NFS4ACLS) != 0)
                error = ufs_update_nfs4_acl_after_mode_change(vp, mode, 
ip->i_uid, cred, td);
@@ -865,7 +865,7 @@ good:
        if (getinoquota(ip))
                panic("ufs_chown: lost quota");
 #endif /* QUOTA */
-       ip->i_flag |= IN_CHANGE;
+       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
        if ((ip->i_mode & (ISUID | ISGID)) && (ouid != uid || ogid != gid)) {
                if (priv_check_cred(cred, PRIV_VFS_RETAINSUGID)) {
                        ip->i_mode &= ~(ISUID | ISGID);
@@ -979,7 +979,7 @@ ufs_link(ap)
        ip->i_effnlink++;
        ip->i_nlink++;
        DIP_SET(ip, i_nlink, ip->i_nlink);
-       ip->i_flag |= IN_CHANGE;
+       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
        if (DOINGSOFTDEP(vp))
                softdep_setup_link(VTOI(tdvp), ip);
        error = UFS_UPDATE(vp, !DOINGSOFTDEP(vp) && !DOINGASYNC(vp));
@@ -992,7 +992,7 @@ ufs_link(ap)
                ip->i_effnlink--;
                ip->i_nlink--;
                DIP_SET(ip, i_nlink, ip->i_nlink);
-               ip->i_flag |= IN_CHANGE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                if (DOINGSOFTDEP(vp))
                        softdep_revert_link(VTOI(tdvp), ip);
        }
@@ -1323,7 +1323,7 @@ relock:
        fip->i_effnlink++;
        fip->i_nlink++;
        DIP_SET(fip, i_nlink, fip->i_nlink);
-       fip->i_flag |= IN_CHANGE;
+       UFS_INODE_SET_FLAG(fip, IN_CHANGE);
        if (DOINGSOFTDEP(fvp))
                softdep_setup_link(tdp, fip);
        error = UFS_UPDATE(fvp, !DOINGSOFTDEP(fvp) && !DOINGASYNC(fvp));
@@ -1441,11 +1441,11 @@ relock:
                        if (!newparent) {
                                tdp->i_nlink--;
                                DIP_SET(tdp, i_nlink, tdp->i_nlink);
-                               tdp->i_flag |= IN_CHANGE;
+                               UFS_INODE_SET_FLAG(tdp, IN_CHANGE);
                        }
                        tip->i_nlink--;
                        DIP_SET(tip, i_nlink, tip->i_nlink);
-                       tip->i_flag |= IN_CHANGE;
+                       UFS_INODE_SET_FLAG(tip, IN_CHANGE);
                }
        }
 
@@ -1476,7 +1476,7 @@ relock:
                        tdp->i_effnlink++;
                        tdp->i_nlink++;
                        DIP_SET(tdp, i_nlink, tdp->i_nlink);
-                       tdp->i_flag |= IN_CHANGE;
+                       UFS_INODE_SET_FLAG(tdp, IN_CHANGE);
                        if (DOINGSOFTDEP(tdvp))
                                softdep_setup_dotdot_link(tdp, fip);
                        error = UFS_UPDATE(tdvp, !DOINGSOFTDEP(tdvp) &&
@@ -1546,7 +1546,7 @@ bad:
        fip->i_effnlink--;
        fip->i_nlink--;
        DIP_SET(fip, i_nlink, fip->i_nlink);
-       fip->i_flag |= IN_CHANGE;
+       UFS_INODE_SET_FLAG(fip, IN_CHANGE);
        if (DOINGSOFTDEP(fvp))
                softdep_revert_link(tdp, fip);
        goto unlockout;
@@ -1861,7 +1861,7 @@ ufs_mkdir(ap)
        }
 #endif
 #endif /* !SUIDDIR */
-       ip->i_flag |= IN_ACCESS | IN_CHANGE | IN_UPDATE;
+       UFS_INODE_SET_FLAG(ip, IN_ACCESS | IN_CHANGE | IN_UPDATE);
        ip->i_mode = dmode;
        DIP_SET(ip, i_mode, dmode);
        tvp->v_type = VDIR;     /* Rest init'd in getnewvnode(). */
@@ -1882,7 +1882,7 @@ ufs_mkdir(ap)
        dp->i_effnlink++;
        dp->i_nlink++;
        DIP_SET(dp, i_nlink, dp->i_nlink);
-       dp->i_flag |= IN_CHANGE;
+       UFS_INODE_SET_FLAG(dp, IN_CHANGE);
        if (DOINGSOFTDEP(dvp))
                softdep_setup_mkdir(dp, ip);
        error = UFS_UPDATE(dvp, !DOINGSOFTDEP(dvp) && !DOINGASYNC(dvp));
@@ -1926,7 +1926,7 @@ ufs_mkdir(ap)
                goto bad;
        ip->i_size = DIRBLKSIZ;
        DIP_SET(ip, i_size, DIRBLKSIZ);
-       ip->i_flag |= IN_CHANGE | IN_UPDATE;
+       UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
        bcopy((caddr_t)&dirtemplate, (caddr_t)bp->b_data, sizeof dirtemplate);
        if (DOINGSOFTDEP(tvp)) {
                /*
@@ -1972,7 +1972,7 @@ bad:
                dp->i_effnlink--;
                dp->i_nlink--;
                DIP_SET(dp, i_nlink, dp->i_nlink);
-               dp->i_flag |= IN_CHANGE;
+               UFS_INODE_SET_FLAG(dp, IN_CHANGE);
                /*
                 * No need to do an explicit VOP_TRUNCATE here, vrele will
                 * do this for us because we set the link count to 0.
@@ -1980,7 +1980,7 @@ bad:
                ip->i_effnlink = 0;
                ip->i_nlink = 0;
                DIP_SET(ip, i_nlink, 0);
-               ip->i_flag |= IN_CHANGE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE);
                if (DOINGSOFTDEP(tvp))
                        softdep_revert_mkdir(dp, ip);
 
@@ -2069,11 +2069,11 @@ ufs_rmdir(ap)
        if (!DOINGSOFTDEP(vp)) {
                dp->i_nlink--;
                DIP_SET(dp, i_nlink, dp->i_nlink);
-               dp->i_flag |= IN_CHANGE;
+               UFS_INODE_SET_FLAG(dp, IN_CHANGE);
                error = UFS_UPDATE(dvp, 0);
                ip->i_nlink--;
                DIP_SET(ip, i_nlink, ip->i_nlink);
-               ip->i_flag |= IN_CHANGE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE);
        }
        cache_purge(vp);
 #ifdef UFS_DIRHASH
@@ -2113,7 +2113,7 @@ ufs_symlink(ap)
                bcopy(ap->a_target, SHORTLINK(ip), len);
                ip->i_size = len;
                DIP_SET(ip, i_size, len);
-               ip->i_flag |= IN_CHANGE | IN_UPDATE;
+               UFS_INODE_SET_FLAG(ip, IN_CHANGE | IN_UPDATE);
                error = UFS_UPDATE(vp, 0);
        } else
                error = vn_rdwr(UIO_WRITE, vp, __DECONST(void *, ap->a_target),
@@ -2629,7 +2629,7 @@ ufs_makeinode(mode, dvp, vpp, cnp, callfunc)
        }
 #endif
 #endif /* !SUIDDIR */
-       ip->i_flag |= IN_ACCESS | IN_CHANGE | IN_UPDATE;
+       UFS_INODE_SET_FLAG(ip, IN_ACCESS | IN_CHANGE | IN_UPDATE);
        ip->i_mode = mode;
        DIP_SET(ip, i_mode, mode);
        tvp->v_type = IFTOVT(mode);     /* Rest init'd in getnewvnode(). */
@@ -2691,7 +2691,7 @@ bad:
        ip->i_effnlink = 0;
        ip->i_nlink = 0;
        DIP_SET(ip, i_nlink, 0);
-       ip->i_flag |= IN_CHANGE;
+       UFS_INODE_SET_FLAG(ip, IN_CHANGE);
        if (DOINGSOFTDEP(tvp))
                softdep_revert_create(VTOI(dvp), ip);
        vput(tvp);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to