6713916 scrub/resilver needlessly decompress data
authorJeff Bonwick <Jeff.Bonwick@Sun.COM>
Thu, 04 Dec 2008 16:47:42 -0800
changeset 8274 846b39508aff
parent 8273 d0d5ed42ab47
child 8275 7c223a798022
6713916 scrub/resilver needlessly decompress data
usr/src/uts/common/fs/zfs/dsl_scrub.c
usr/src/uts/common/fs/zfs/sys/zio.h
usr/src/uts/common/fs/zfs/zio.c
--- a/usr/src/uts/common/fs/zfs/dsl_scrub.c	Thu Dec 04 15:57:36 2008 -0800
+++ b/usr/src/uts/common/fs/zfs/dsl_scrub.c	Thu Dec 04 16:47:42 2008 -0800
@@ -918,10 +918,10 @@
 dsl_pool_scrub_clean_cb(dsl_pool_t *dp,
     const blkptr_t *bp, const zbookmark_t *zb)
 {
-	size_t size = BP_GET_LSIZE(bp);
+	size_t size = BP_GET_PSIZE(bp);
 	spa_t *spa = dp->dp_spa;
 	boolean_t needs_io;
-	int zio_flags = ZIO_FLAG_SCRUB_THREAD | ZIO_FLAG_CANFAIL;
+	int zio_flags = ZIO_FLAG_SCRUB_THREAD | ZIO_FLAG_RAW | ZIO_FLAG_CANFAIL;
 	int zio_priority;
 
 	ASSERT(bp->blk_birth > dp->dp_scrub_min_txg);
--- a/usr/src/uts/common/fs/zfs/sys/zio.h	Thu Dec 04 15:57:36 2008 -0800
+++ b/usr/src/uts/common/fs/zfs/sys/zio.h	Thu Dec 04 16:47:42 2008 -0800
@@ -139,6 +139,7 @@
 
 #define	ZIO_FLAG_PROBE			0x10000
 #define	ZIO_FLAG_GANG_CHILD		0x20000
+#define	ZIO_FLAG_RAW			0x40000
 
 #define	ZIO_FLAG_GANG_INHERIT		\
 	(ZIO_FLAG_CANFAIL |		\
--- a/usr/src/uts/common/fs/zfs/zio.c	Thu Dec 04 15:57:36 2008 -0800
+++ b/usr/src/uts/common/fs/zfs/zio.c	Thu Dec 04 16:47:42 2008 -0800
@@ -767,7 +767,8 @@
 {
 	blkptr_t *bp = zio->io_bp;
 
-	if (BP_GET_COMPRESS(bp) != ZIO_COMPRESS_OFF && zio->io_logical == zio) {
+	if (BP_GET_COMPRESS(bp) != ZIO_COMPRESS_OFF &&
+	    zio->io_logical == zio && !(zio->io_flags & ZIO_FLAG_RAW)) {
 		uint64_t csize = BP_GET_PSIZE(bp);
 		void *cbuf = zio_buf_alloc(csize);