changeset 7030:b81089449d53

6721869 zil needs to pass block birth txg to zil_rewrite()
author perrin
date Thu, 03 Jul 2008 15:08:19 -0700
parents 31421ec8c2cb
children 2738a61b5fd9
files usr/src/uts/common/fs/zfs/sys/zio.h usr/src/uts/common/fs/zfs/zil.c usr/src/uts/common/fs/zfs/zio.c
diffstat 3 files changed, 13 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/fs/zfs/sys/zio.h	Thu Jul 03 15:07:35 2008 -0700
+++ b/usr/src/uts/common/fs/zfs/sys/zio.h	Thu Jul 03 15:08:19 2008 -0700
@@ -300,10 +300,9 @@
     zio_done_func_t *ready, zio_done_func_t *done, void *private, int priority,
     int flags, zbookmark_t *zb);
 
-extern zio_t *zio_rewrite(zio_t *pio, spa_t *spa, int checksum,
-    uint64_t txg, blkptr_t *bp, void *data, uint64_t size,
-    zio_done_func_t *done, void *private, int priority, int flags,
-    zbookmark_t *zb);
+extern zio_t *zio_rewrite(zio_t *pio, spa_t *spa, int checksum, blkptr_t *bp,
+    void *data, uint64_t size, zio_done_func_t *done, void *private,
+    int priority, int flags, zbookmark_t *zb);
 
 extern zio_t *zio_free(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp,
     zio_done_func_t *done, void *private);
--- a/usr/src/uts/common/fs/zfs/zil.c	Thu Jul 03 15:07:35 2008 -0700
+++ b/usr/src/uts/common/fs/zfs/zil.c	Thu Jul 03 15:08:19 2008 -0700
@@ -658,7 +658,7 @@
 	}
 	if (lwb->lwb_zio == NULL) {
 		lwb->lwb_zio = zio_rewrite(zilog->zl_root_zio, zilog->zl_spa,
-		    ZIO_CHECKSUM_ZILOG, 0, &lwb->lwb_blk, lwb->lwb_buf,
+		    ZIO_CHECKSUM_ZILOG, &lwb->lwb_blk, lwb->lwb_buf,
 		    lwb->lwb_sz, zil_lwb_write_done, lwb,
 		    ZIO_PRIORITY_LOG_WRITE, ZIO_FLAG_CANFAIL, &zb);
 	}
--- a/usr/src/uts/common/fs/zfs/zio.c	Thu Jul 03 15:07:35 2008 -0700
+++ b/usr/src/uts/common/fs/zfs/zio.c	Thu Jul 03 15:08:19 2008 -0700
@@ -527,14 +527,13 @@
 }
 
 zio_t *
-zio_rewrite(zio_t *pio, spa_t *spa, int checksum,
-    uint64_t txg, blkptr_t *bp, void *data, uint64_t size,
-    zio_done_func_t *done, void *private, int priority, int flags,
-    zbookmark_t *zb)
+zio_rewrite(zio_t *pio, spa_t *spa, int checksum, blkptr_t *bp, void *data,
+    uint64_t size, zio_done_func_t *done, void *private, int priority,
+    int flags, zbookmark_t *zb)
 {
 	zio_t *zio;
 
-	zio = zio_create(pio, spa, txg, bp, data, size, done, private,
+	zio = zio_create(pio, spa, bp->blk_birth, bp, data, size, done, private,
 	    ZIO_TYPE_WRITE, priority, flags | ZIO_FLAG_USER,
 	    ZIO_STAGE_OPEN, ZIO_REWRITE_PIPELINE(bp));
 
@@ -1506,10 +1505,10 @@
 		ASSERT(i < SPA_GBH_NBLKPTRS);
 		ASSERT(!BP_IS_HOLE(gbp));
 
-		zio_nowait(zio_rewrite(zio, zio->io_spa, zio->io_checksum,
-		    zio->io_txg, gbp, (char *)zio->io_data + loff, lsize,
-		    NULL, NULL, zio->io_priority,
-		    zio->io_flags & ZIO_FLAG_GANG_INHERIT, &zio->io_bookmark));
+		zio_nowait(zio_rewrite(zio, zio->io_spa, zio->io_checksum, gbp,
+		    (char *)zio->io_data + loff, lsize, NULL, NULL,
+		    zio->io_priority, zio->io_flags & ZIO_FLAG_GANG_INHERIT,
+		    &zio->io_bookmark));
 	}
 
 	zio_push_transform(zio, gbh, gsize, gbufsize);
@@ -1655,8 +1654,7 @@
 			BP_SET_PSIZE(gbp, lsize);
 			BP_SET_COMPRESS(gbp, ZIO_COMPRESS_OFF);
 			gbp->blk_birth = txg;
-			zio_nowait(zio_rewrite(zio, spa,
-			    zio->io_checksum, txg, gbp,
+			zio_nowait(zio_rewrite(zio, spa, zio->io_checksum, gbp,
 			    (char *)zio->io_data + loff, lsize,
 			    zio_write_allocate_gang_member_done, NULL,
 			    zio->io_priority,