Module Name:    src
Committed By:   hannken
Date:           Sun Jan 11 17:28:22 UTC 2015

Modified Files:
        src/sys/ufs/chfs: chfs_gc.c chfs_vnode.c

Log Message:
Convert a bogus mnt_vnodelist traversal to vfs_vnode_iterator.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/ufs/chfs/chfs_gc.c
cvs rdiff -u -r1.12 -r1.13 src/sys/ufs/chfs/chfs_vnode.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/ufs/chfs/chfs_gc.c
diff -u src/sys/ufs/chfs/chfs_gc.c:1.7 src/sys/ufs/chfs/chfs_gc.c:1.8
--- src/sys/ufs/chfs/chfs_gc.c:1.7	Mon Sep  8 17:41:11 2014
+++ src/sys/ufs/chfs/chfs_gc.c	Sun Jan 11 17:28:22 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: chfs_gc.c,v 1.7 2014/09/08 17:41:11 joerg Exp $	*/
+/*	$NetBSD: chfs_gc.c,v 1.8 2015/01/11 17:28:22 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2010 Department of Software Engineering,
@@ -251,6 +251,7 @@ chfs_gc_fetch_inode(struct chfs_mount *c
 	dbg_gc("vp to ip\n");
 	ip = VTOI(vp);
 	KASSERT(ip);
+	vrele(vp);
 
 	return ip;
 }
@@ -970,6 +971,7 @@ chfs_gcollect_dirent(struct chfs_mount *
 	}
 
 	ip = VTOI(vnode);
+	vrele(vnode);
 
 	/* Remove and obsolete the previous version. */
 	mutex_enter(&chmp->chm_lock_vnocache);
@@ -1006,7 +1008,7 @@ chfs_gcollect_deletion_dirent(struct chf
 
 	nref_len = chfs_nref_len(chmp, cheb, fd->nref);
 
-	(void)chfs_vnode_lookup(chmp, fd->vno);
+	/* XXX This was a noop  (void)chfs_vnode_lookup(chmp, fd->vno); */
 
 	/* Find it in parent dirents. */
 	for (nref = parent->chvc->dirents;

Index: src/sys/ufs/chfs/chfs_vnode.c
diff -u src/sys/ufs/chfs/chfs_vnode.c:1.12 src/sys/ufs/chfs/chfs_vnode.c:1.13
--- src/sys/ufs/chfs/chfs_vnode.c:1.12	Sun Nov  9 18:23:28 2014
+++ src/sys/ufs/chfs/chfs_vnode.c	Sun Jan 11 17:28:22 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: chfs_vnode.c,v 1.12 2014/11/09 18:23:28 maxv Exp $	*/
+/*	$NetBSD: chfs_vnode.c,v 1.13 2015/01/11 17:28:22 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2010 Department of Software Engineering,
@@ -42,18 +42,24 @@
 #include <miscfs/genfs/genfs.h>
 
 /* chfs_vnode_lookup - lookup for a vnode */
+static bool
+chfs_vnode_lookup_selector(void *ctx, struct vnode *vp)
+{
+	ino_t *ino = ctx;
+
+	return (VTOI(vp) != NULL && VTOI(vp)->ino == *ino);
+}
 struct vnode *
 chfs_vnode_lookup(struct chfs_mount *chmp, ino_t vno)
 {
+	struct vnode_iterator *marker;
 	struct vnode *vp;
-	struct chfs_inode *ip;
 
-	TAILQ_FOREACH(vp, &chmp->chm_fsmp->mnt_vnodelist, v_mntvnodes) {
-		ip = VTOI(vp);
-		if (ip && ip->ino == vno)
-			return vp;
-	}
-	return NULL;
+	vfs_vnode_iterator_init(chmp->chm_fsmp, &marker);
+	vp = vfs_vnode_iterator_next(marker, chfs_vnode_lookup_selector, &vno);
+	vfs_vnode_iterator_destroy(marker);
+
+	return vp;
 }
 
 /* chfs_readvnode - reads a vnode from the flash and setups its inode */

Reply via email to