svn commit: r199305 -
user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Kip Macy
kmacy at FreeBSD.org
Mon Nov 16 02:46:21 UTC 2009
Author: kmacy
Date: Mon Nov 16 02:46:21 2009
New Revision: 199305
URL: http://svn.freebsd.org/changeset/base/199305
Log:
fix logic for end of arc_gbincore_replace
Modified:
user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
Modified: user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
==============================================================================
--- user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Mon Nov 16 00:17:11 2009 (r199304)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Mon Nov 16 02:46:21 2009 (r199305)
@@ -1306,7 +1306,6 @@ arc_gbincore_replace(struct vnode *vp, o
{
struct buf *bp;
struct bufobj *bo;
- int associated = 0;
/*
* We need to be careful to handle the case where the buffer
@@ -1342,24 +1341,30 @@ arc_gbincore_replace(struct vnode *vp, o
bremfree(bp);
if (bp->b_bcount != size)
allocbuf_flags(bp, size, flags);
- associated = 1;
+ goto done;
}
}
}
- if (!associated) {
- if (newbp != NULL) {
- if (bp != NULL)
- BO_LOCK(bo);
- bgetvp(vp, newbp);
- BO_UNLOCK(bo);
- bp = newbp;
- } else {
+ /*
+ * !bp brelvp(bp) brelse(bp) associated
+ * !newbp unlock()/getblk getblk XXX no-op
+ *
+ * newbp bgetvp()/ul l/bgetvp()/ul l/bgetvp()/ul XXX
+ */
+ if (newbp != NULL) {
+ if (bp != NULL)
+ BO_LOCK(bo);
+ bgetvp(vp, newbp);
+ BO_UNLOCK(bo);
+ bp = newbp;
+ } else {
+ if (bp == NULL)
BO_UNLOCK(bo);
- bp = getblk(vp, blkno, size, 0, 0, flags);
- }
+ bp = getblk(vp, blkno, size, 0, 0, flags);
}
+done:
return (bp);
}
More information about the svn-src-user
mailing list