Module Name: src
Committed By: ttoth
Date: Mon Aug 13 13:12:51 UTC 2012
Modified Files:
src/sys/ufs/chfs: chfs_readinode.c chfs_subr.c chfs_vnode.c
Log Message:
chfs fixes
1. nodes are obsoleted only once during truncating a file
2. frags don't stay in pool_cache
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/ufs/chfs/chfs_readinode.c
cvs rdiff -u -r1.5 -r1.6 src/sys/ufs/chfs/chfs_subr.c
cvs rdiff -u -r1.6 -r1.7 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_readinode.c
diff -u src/sys/ufs/chfs/chfs_readinode.c:1.3 src/sys/ufs/chfs/chfs_readinode.c:1.4
--- src/sys/ufs/chfs/chfs_readinode.c:1.3 Fri Aug 10 09:26:58 2012
+++ src/sys/ufs/chfs/chfs_readinode.c Mon Aug 13 13:12:51 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: chfs_readinode.c,v 1.3 2012/08/10 09:26:58 ttoth Exp $ */
+/* $NetBSD: chfs_readinode.c,v 1.4 2012/08/13 13:12:51 ttoth Exp $ */
/*-
* Copyright (c) 2010 Department of Software Engineering,
@@ -609,6 +609,7 @@ chfs_remove_frags_of_node(struct chfs_mo
next = frag_next(fragtree, this);
if (this->node->nref == nref) {
rb_tree_remove_node(fragtree, this);
+ chfs_free_node_frag(this);
}
this = next;
}
Index: src/sys/ufs/chfs/chfs_subr.c
diff -u src/sys/ufs/chfs/chfs_subr.c:1.5 src/sys/ufs/chfs/chfs_subr.c:1.6
--- src/sys/ufs/chfs/chfs_subr.c:1.5 Fri Aug 10 09:26:58 2012
+++ src/sys/ufs/chfs/chfs_subr.c Mon Aug 13 13:12:51 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: chfs_subr.c,v 1.5 2012/08/10 09:26:58 ttoth Exp $ */
+/* $NetBSD: chfs_subr.c,v 1.6 2012/08/13 13:12:51 ttoth Exp $ */
/*-
* Copyright (c) 2010 Department of Software Engineering,
@@ -299,7 +299,8 @@ chfs_chsize(struct vnode *vp, u_quad_t s
// remove from the list
mutex_enter(&chmp->chm_lock_vnocache);
chfs_remove_frags_of_node(chmp, &ip->fragtree, fd->nref);
- chfs_remove_and_obsolete(chmp, ip->chvc, fd->nref, &ip->chvc->dnode);
+ // don't obsolete here, because setattr will obsolete this node
+ chfs_remove_node_from_list(chmp, ip->chvc, fd->nref, &ip->chvc->dnode);
mutex_exit(&chmp->chm_lock_vnocache);
blknum = lastfrag->ofs / PAGE_SIZE;
Index: src/sys/ufs/chfs/chfs_vnode.c
diff -u src/sys/ufs/chfs/chfs_vnode.c:1.6 src/sys/ufs/chfs/chfs_vnode.c:1.7
--- src/sys/ufs/chfs/chfs_vnode.c:1.6 Fri Aug 10 09:26:58 2012
+++ src/sys/ufs/chfs/chfs_vnode.c Mon Aug 13 13:12:51 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: chfs_vnode.c,v 1.6 2012/08/10 09:26:58 ttoth Exp $ */
+/* $NetBSD: chfs_vnode.c,v 1.7 2012/08/13 13:12:51 ttoth Exp $ */
/*-
* Copyright (c) 2010 Department of Software Engineering,
@@ -83,7 +83,7 @@ chfs_readvnode(struct mount* mp, ino_t i
if (chvc && ino != CHFS_ROOTINO) {
/* debug... */
- printf("readvnode; offset: %" PRIu32 ", lnr: %d\n",
+ dbg("offset: %" PRIu32 ", lnr: %d\n",
CHFS_GET_OFS(chvc->v->nref_offset), chvc->v->nref_lnr);
KASSERT((void *)chvc != (void *)chvc->v);