svn commit: r199555 - in
user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs:
. sys
Kip Macy
kmacy at FreeBSD.org
Thu Nov 19 21:48:01 UTC 2009
Author: kmacy
Date: Thu Nov 19 21:48:01 2009
New Revision: 199555
URL: http://svn.freebsd.org/changeset/base/199555
Log:
move buffer invalidation in to zio write functions
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/sys/arc.h
user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.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 Thu Nov 19 21:47:54 2009 (r199554)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Thu Nov 19 21:48:01 2009 (r199555)
@@ -1300,18 +1300,18 @@ arc_buf_add_ref(arc_buf_t *buf, void* ta
data, metadata, hits);
}
-static void
-arc_brelvp(arc_buf_hdr_t *hdr)
+void
+arc_binval(spa_t *spa, dva_t *dva)
{
- uint64_t blkno = hdr->b_dva.dva_word[1] & ~(1UL<<63);
- struct vnode *vp = spa_get_vnode(hdr->b_spa);
+ uint64_t blkno = dva->dva_word[1] & ~(1UL<<63);
+ struct vnode *vp = spa_get_vnode(spa);
struct bufobj *bo = &vp->v_bufobj;
struct buf *bp;
if (zfs_page_cache_disable)
return;
- if (blkno == 0 || hdr->b_birth == 0)
+ if (blkno == 0)
return;
BO_LOCK(bo);
@@ -2673,7 +2673,6 @@ arc_read_done(zio_t *zio)
buf = zio->io_private;
hdr = buf->b_hdr;
- arc_brelvp(hdr);
/*
* The hdr was inserted into hash-table and removed from lists
* prior to starting I/O. We should find this header, since
@@ -3406,7 +3405,6 @@ arc_write_done(zio_t *zio)
hdr->b_dva = *BP_IDENTITY(zio->io_bp);
hdr->b_birth = zio->io_bp->blk_birth;
hdr->b_cksum0 = zio->io_bp->blk_cksum.zc_word[0];
- arc_brelvp(hdr);
/*
* If the block to be written was all-zero, we may have
Modified: user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h
==============================================================================
--- user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h Thu Nov 19 21:47:54 2009 (r199554)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h Thu Nov 19 21:48:01 2009 (r199555)
@@ -112,6 +112,7 @@ int arc_tryread(spa_t *spa, blkptr_t *bp
void arc_set_callback(arc_buf_t *buf, arc_evict_func_t *func, void *private);
int arc_buf_evict(arc_buf_t *buf);
+void arc_binval(spa_t *spa, dva_t *dva);
void arc_flush(spa_t *spa);
void arc_tempreserve_clear(uint64_t reserve);
int arc_tempreserve_space(uint64_t reserve, uint64_t txg);
Modified: user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
==============================================================================
--- user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Nov 19 21:47:54 2009 (r199554)
+++ user/kmacy/releng_8_fcs_buf/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Thu Nov 19 21:48:01 2009 (r199555)
@@ -25,6 +25,7 @@
#include <sys/zfs_context.h>
#include <sys/fm/fs/zfs.h>
+#include <sys/arc.h>
#include <sys/spa.h>
#include <sys/txg.h>
#include <sys/spa_impl.h>
@@ -548,6 +549,7 @@ zio_write(zio_t *pio, spa_t *spa, uint64
zp->zp_ndvas <= spa_max_replication(spa));
ASSERT(ready != NULL);
+ arc_binval(spa, BP_IDENTITY(bp));
zio = zio_create(pio, spa, txg, bp, data, size, done, private,
ZIO_TYPE_WRITE, priority, flags, NULL, 0, zb,
ZIO_STAGE_OPEN, ZIO_WRITE_PIPELINE);
@@ -565,6 +567,7 @@ zio_rewrite(zio_t *pio, spa_t *spa, uint
{
zio_t *zio;
+ arc_binval(spa, BP_IDENTITY(bp));
zio = zio_create(pio, spa, txg, bp, data, size, done, private,
ZIO_TYPE_WRITE, priority, flags, NULL, 0, zb,
ZIO_STAGE_OPEN, ZIO_REWRITE_PIPELINE);
More information about the svn-src-user
mailing list