summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaso Kiselkov <[email protected]>2013-08-08 13:33:18 -0700
committerBrian Behlendorf <[email protected]>2013-08-08 13:37:00 -0700
commit4e59f475118b7081a3f950ebf7c70b5bfc7c9778 (patch)
treed53d0a2fa90c100aa49d5a0397fe96bd249d481f
parent3a17a7a99a1a6332d0999f9be68e2b8dc3933de1 (diff)
Illumos #3964 L2ARC should always compress metadata buffers
3964 L2ARC should always compress metadata buffers Reviewed by: Matthew Ahrens <[email protected]> Reviewed by: Brian Behlendorf <[email protected]> References: https://www.illumos.org/issues/3964 Ported-by: Brian Behlendorf <[email protected]> Closes #1379
-rw-r--r--include/sys/dbuf.h3
-rw-r--r--include/sys/dmu.h2
-rw-r--r--include/sys/dmu_objset.h2
3 files changed, 5 insertions, 2 deletions
diff --git a/include/sys/dbuf.h b/include/sys/dbuf.h
index 2fcf596b0..394fdfb15 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 17857255e..adaab4c6b 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 f42474429..507f73222 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);