From 4e59f475118b7081a3f950ebf7c70b5bfc7c9778 Mon Sep 17 00:00:00 2001 From: Saso Kiselkov Date: Thu, 8 Aug 2013 13:33:18 -0700 Subject: [PATCH] Illumos #3964 L2ARC should always compress metadata buffers 3964 L2ARC should always compress metadata buffers Reviewed by: Matthew Ahrens Reviewed by: Brian Behlendorf References: https://www.illumos.org/issues/3964 Ported-by: Brian Behlendorf Closes #1379 --- include/sys/dbuf.h | 3 ++- include/sys/dmu.h | 2 ++ include/sys/dmu_objset.h | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/include/sys/dbuf.h b/include/sys/dbuf.h index 2fcf596..394fdfb 100644 --- a/include/sys/dbuf.h +++ b/include/sys/dbuf.h @@ -324,7 +324,8 @@ boolean_t dbuf_is_metadata(dmu_buf_impl_t *db); ((_db)->db_objset->os_secondary_cache == ZFS_CACHE_METADATA))) #define DBUF_IS_L2COMPRESSIBLE(_db) \ - ((_db)->db_objset->os_compress != ZIO_COMPRESS_OFF) + ((_db)->db_objset->os_compress != ZIO_COMPRESS_OFF || \ + (dbuf_is_metadata(_db) && zfs_mdcomp_disable == B_FALSE)) #ifdef ZFS_DEBUG diff --git a/include/sys/dmu.h b/include/sys/dmu.h index 1785725..adaab4c 100644 --- a/include/sys/dmu.h +++ b/include/sys/dmu.h @@ -828,6 +828,8 @@ int dmu_diff(objset_t *tosnap, objset_t *fromsnap, struct vnode *vp, #define ZFS_CRC64_POLY 0xC96C5795D7870F42ULL /* ECMA-182, reflected form */ extern uint64_t zfs_crc64_table[256]; +extern int zfs_mdcomp_disable; + #ifdef __cplusplus } #endif diff --git a/include/sys/dmu_objset.h b/include/sys/dmu_objset.h index f424744..507f732 100644 --- a/include/sys/dmu_objset.h +++ b/include/sys/dmu_objset.h @@ -130,7 +130,7 @@ struct objset { ((os)->os_secondary_cache == ZFS_CACHE_ALL || \ (os)->os_secondary_cache == ZFS_CACHE_METADATA) -#define DMU_OS_IS_L2COMPRESSIBLE(os) ((os)->os_compress != ZIO_COMPRESS_OFF) +#define DMU_OS_IS_L2COMPRESSIBLE(os) (zfs_mdcomp_disable == B_FALSE) /* called from zpl */ int dmu_objset_hold(const char *name, void *tag, objset_t **osp); -- 1.8.3.1