summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorSaso Kiselkov <[email protected]>2013-08-01 13:02:10 -0700
committerBrian Behlendorf <[email protected]>2013-08-08 13:27:21 -0700
commit3a17a7a99a1a6332d0999f9be68e2b8dc3933de1 (patch)
tree6f926bc52a8ae98a69d4b258e66bde381fa691fa /include
parentc11a12bc3b2e5ee9a6bd74e26f1a396b6025fbd4 (diff)
Illumos #3137 L2ARC compression
3137 L2ARC compression Reviewed by: George Wilson <[email protected]> Reviewed by: Matthew Ahrens <[email protected]> Approved by: Dan McDonald <[email protected]> References: illumos/illumos-gate@aad02571bc59671aa3103bb070ae365f531b0b62 https://www.illumos.org/issues/3137 http://wiki.illumos.org/display/illumos/L2ARC+Compression Notes for Linux port: A l2arc_nocompress module option was added to prevent the compression of l2arc buffers regardless of how a dataset's compression property is set. This allows the legacy behavior to be preserved. Ported by: James H <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]> Closes #1379
Diffstat (limited to 'include')
-rw-r--r--include/sys/arc.h8
-rw-r--r--include/sys/dbuf.h4
-rw-r--r--include/sys/dmu_objset.h3
3 files changed, 12 insertions, 3 deletions
diff --git a/include/sys/arc.h b/include/sys/arc.h
index c88c31148..67882197a 100644
--- a/include/sys/arc.h
+++ b/include/sys/arc.h
@@ -21,6 +21,7 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
*/
#ifndef _SYS_ARC_H
@@ -78,6 +79,7 @@ typedef enum arc_buf_contents {
#define ARC_PREFETCH (1 << 3) /* I/O is a prefetch */
#define ARC_CACHED (1 << 4) /* I/O was already in cache */
#define ARC_L2CACHE (1 << 5) /* cache in L2ARC */
+#define ARC_L2COMPRESS (1 << 6) /* compress in L2ARC */
/*
* The following breakdows of arc_size exist for kstat only.
@@ -114,9 +116,9 @@ int arc_read(zio_t *pio, spa_t *spa, const blkptr_t *bp,
arc_done_func_t *done, void *private, int priority, int flags,
uint32_t *arc_flags, const zbookmark_t *zb);
zio_t *arc_write(zio_t *pio, spa_t *spa, uint64_t txg,
- blkptr_t *bp, arc_buf_t *buf, boolean_t l2arc, const zio_prop_t *zp,
- arc_done_func_t *ready, arc_done_func_t *done, void *private,
- int priority, int zio_flags, const zbookmark_t *zb);
+ blkptr_t *bp, arc_buf_t *buf, boolean_t l2arc, boolean_t l2arc_compress,
+ const zio_prop_t *zp, arc_done_func_t *ready, arc_done_func_t *done,
+ void *private, int priority, int zio_flags, const zbookmark_t *zb);
arc_prune_t *arc_add_prune_callback(arc_prune_func_t *func, void *private);
void arc_remove_prune_callback(arc_prune_t *p);
diff --git a/include/sys/dbuf.h b/include/sys/dbuf.h
index ef93eb54c..2fcf596b0 100644
--- a/include/sys/dbuf.h
+++ b/include/sys/dbuf.h
@@ -20,6 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
*/
#ifndef _SYS_DBUF_H
@@ -322,6 +323,9 @@ boolean_t dbuf_is_metadata(dmu_buf_impl_t *db);
(DBUF_IS_METADATA(_db) && \
((_db)->db_objset->os_secondary_cache == ZFS_CACHE_METADATA)))
+#define DBUF_IS_L2COMPRESSIBLE(_db) \
+ ((_db)->db_objset->os_compress != ZIO_COMPRESS_OFF)
+
#ifdef ZFS_DEBUG
/*
diff --git a/include/sys/dmu_objset.h b/include/sys/dmu_objset.h
index 013b6ec34..f42474429 100644
--- a/include/sys/dmu_objset.h
+++ b/include/sys/dmu_objset.h
@@ -20,6 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
*/
/* Portions Copyright 2010 Robert Milkowski */
@@ -129,6 +130,8 @@ 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)
+
/* called from zpl */
int dmu_objset_hold(const char *name, void *tag, objset_t **osp);
int dmu_objset_own(const char *name, dmu_objset_type_t type,