svn commit: r201970 -
user/kmacy/releng_8_fcs_buf_xen/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Kip Macy
kmacy at FreeBSD.org
Sun Jan 10 02:33:34 UTC 2010
Author: kmacy
Date: Sun Jan 10 02:33:34 2010
New Revision: 201970
URL: http://svn.freebsd.org/changeset/base/201970
Log:
- clear buf after it is removed
- set object root to NULL if bp being removed is the last one
Modified:
user/kmacy/releng_8_fcs_buf_xen/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_bio.c
Modified: user/kmacy/releng_8_fcs_buf_xen/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_bio.c
==============================================================================
--- user/kmacy/releng_8_fcs_buf_xen/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_bio.c Sun Jan 10 02:31:06 2010 (r201969)
+++ user/kmacy/releng_8_fcs_buf_xen/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_bio.c Sun Jan 10 02:33:34 2010 (r201970)
@@ -571,6 +571,9 @@ zio_buf_blkno_remove_locked(vm_object_t
state->zss_resident_count--;
state->zss_generation++;
+ if (bp == state->zss_blkno_root)
+ state->zss_blkno_root = NULL;
+
#ifdef INVARIANTS
bp->b_right = bp->b_left = NULL;
#endif
@@ -756,13 +759,14 @@ zio_buf_evict_overlap(vm_object_t object
TAILQ_REMOVE(&clh, tmpbp, b_cluster.cluster_entry);
evict:
zio_buf_vm_object_evict(tmpbp);
- tmpbp->b_bufobj = NULL;
- tmpbp->b_flags &= ~B_VMIO;
- tmpbp->b_blkno = tmpbp->b_lblkno = 0;
/*
* move buffer to the unmanaged tree
*/
zio_buf_blkno_remove_locked(object, tmpbp);
+ tmpbp->b_bufobj = NULL;
+ tmpbp->b_flags &= ~(B_VMIO|B_CACHE);
+ tmpbp->b_blkno = tmpbp->b_lblkno = 0;
+ tmpbp->b_state = NULL;
}
done:
if (!(collisions == 1 && tmpbp != NULL && tmpbp->b_blkno == blkno &&
More information about the svn-src-user
mailing list