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)