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);