Hi

Can we replace these manual loops with a FOREACH?

bluhm

Index: kern/vfs_subr.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/kern/vfs_subr.c,v
retrieving revision 1.254
diff -u -p -r1.254 vfs_subr.c
--- kern/vfs_subr.c     28 Sep 2016 22:22:52 -0000      1.254
+++ kern/vfs_subr.c     10 Jan 2017 16:00:13 -0000
@@ -380,8 +380,7 @@ getnewvnode(enum vtagtype tag, struct mo
                TAILQ_INIT(&vp->v_cache_dst);
                numvnodes++;
        } else {
-               for (vp = TAILQ_FIRST(listhd); vp != NULLVP;
-                   vp = TAILQ_NEXT(vp, v_freelist)) {
+               TAILQ_FOREACH(vp, listhd, v_freelist) {
                        if (VOP_ISLOCKED(vp) == 0)
                                break;
                }
@@ -836,10 +835,9 @@ vfs_mount_foreach_vnode(struct mount *mp
        int error = 0;
 
 loop:
-       for (vp = LIST_FIRST(&mp->mnt_vnodelist); vp != NULL; vp = nvp) {
+       LIST_FOREACH_SAFE(vp , &mp->mnt_vnodelist, v_mntvnodes, nvp) {
                if (vp->v_mount != mp)
                        goto loop;
-               nvp = LIST_NEXT(vp, v_mntvnodes);
 
                error = func(vp, arg);
 
@@ -1873,8 +1871,7 @@ vflushbuf(struct vnode *vp, int sync)
 
 loop:
        s = splbio();
-       for (bp = LIST_FIRST(&vp->v_dirtyblkhd); bp != NULL; bp = nbp) {
-               nbp = LIST_NEXT(bp, b_vnbufs);
+       LIST_FOREACH_SAFE(bp, &vp->v_dirtyblkhd, b_vnbufs, nbp) {
                if ((bp->b_flags & B_BUSY))
                        continue;
                if ((bp->b_flags & B_DELWRI) == 0)

Reply via email to