MFV r268121:
4924 LZ4 Compression for metadata illumos/illumos-gate@b8289d24d8 MFC after: 2 weeks
This commit is contained in:
commit
9cc8a15b2e
@ -23,7 +23,7 @@
|
|||||||
.\"
|
.\"
|
||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
.\"
|
.\"
|
||||||
.Dd June 30, 2014
|
.Dd July 1, 2014
|
||||||
.Dt ZPOOL-FEATURES 7
|
.Dt ZPOOL-FEATURES 7
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -235,14 +235,11 @@ administrator can turn on
|
|||||||
compression on any dataset on the
|
compression on any dataset on the
|
||||||
pool using the
|
pool using the
|
||||||
.Xr zfs 8
|
.Xr zfs 8
|
||||||
command. Please note that doing so will
|
command.
|
||||||
immediately activate the
|
Also, all newly written metadata
|
||||||
.Sy lz4_compress
|
will be compressed with
|
||||||
feature on the underlying
|
.Sy lz4
|
||||||
pool
|
algorithm.
|
||||||
.Pq even before any data is written ,
|
|
||||||
and the feature will not be
|
|
||||||
deactivated.
|
|
||||||
Since this feature is not read-only compatible, this
|
Since this feature is not read-only compatible, this
|
||||||
operation will render the pool unimportable on systems without support
|
operation will render the pool unimportable on systems without support
|
||||||
for the
|
for the
|
||||||
@ -251,6 +248,12 @@ feature.
|
|||||||
Booting off of
|
Booting off of
|
||||||
.Sy lz4
|
.Sy lz4
|
||||||
-compressed root pools is supported.
|
-compressed root pools is supported.
|
||||||
|
.Pp
|
||||||
|
This feature becomes
|
||||||
|
.Sy active
|
||||||
|
as soon as it is enabled and will
|
||||||
|
never return to being
|
||||||
|
.Sy enabled .
|
||||||
.It Sy multi_vdev_crash_dump
|
.It Sy multi_vdev_crash_dump
|
||||||
.Bl -column "READ\-ONLY COMPATIBLE" "com.joyent:multi_vdev_crash_dump"
|
.Bl -column "READ\-ONLY COMPATIBLE" "com.joyent:multi_vdev_crash_dump"
|
||||||
.It GUID Ta com.joyent:multi_vdev_crash_dump
|
.It GUID Ta com.joyent:multi_vdev_crash_dump
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
* Copyright (c) 2013 by Delphix. All rights reserved.
|
* Copyright (c) 2013 by Delphix. All rights reserved.
|
||||||
* Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
|
* Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
|
||||||
* Copyright (c) 2013, Joyent, Inc. All rights reserved.
|
* Copyright (c) 2013, Joyent, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2014, Nexenta Systems, Inc. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef _KERNEL
|
#ifdef _KERNEL
|
||||||
@ -168,7 +169,7 @@ zpool_feature_init(void)
|
|||||||
zfeature_register(SPA_FEATURE_LZ4_COMPRESS,
|
zfeature_register(SPA_FEATURE_LZ4_COMPRESS,
|
||||||
"org.illumos:lz4_compress", "lz4_compress",
|
"org.illumos:lz4_compress", "lz4_compress",
|
||||||
"LZ4 compression algorithm support.", B_FALSE, B_FALSE,
|
"LZ4 compression algorithm support.", B_FALSE, B_FALSE,
|
||||||
B_FALSE, NULL);
|
B_TRUE, NULL);
|
||||||
|
|
||||||
zfeature_register(SPA_FEATURE_MULTI_VDEV_CRASH_DUMP,
|
zfeature_register(SPA_FEATURE_MULTI_VDEV_CRASH_DUMP,
|
||||||
"com.joyent:multi_vdev_crash_dump", "multi_vdev_crash_dump",
|
"com.joyent:multi_vdev_crash_dump", "multi_vdev_crash_dump",
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
/* Copyright (c) 2013 by Saso Kiselkov. All rights reserved. */
|
/* Copyright (c) 2013 by Saso Kiselkov. All rights reserved. */
|
||||||
/* Copyright (c) 2013, Joyent, Inc. All rights reserved. */
|
/* Copyright (c) 2013, Joyent, Inc. All rights reserved. */
|
||||||
|
/* Copyright (c) 2014, Nexenta Systems, Inc. All rights reserved. */
|
||||||
|
|
||||||
#include <sys/dmu.h>
|
#include <sys/dmu.h>
|
||||||
#include <sys/dmu_impl.h>
|
#include <sys/dmu_impl.h>
|
||||||
@ -44,6 +45,7 @@
|
|||||||
#include <sys/zio_checksum.h>
|
#include <sys/zio_checksum.h>
|
||||||
#include <sys/zio_compress.h>
|
#include <sys/zio_compress.h>
|
||||||
#include <sys/sa.h>
|
#include <sys/sa.h>
|
||||||
|
#include <sys/zfeature.h>
|
||||||
#ifdef _KERNEL
|
#ifdef _KERNEL
|
||||||
#include <sys/vm.h>
|
#include <sys/vm.h>
|
||||||
#include <sys/zfs_znode.h>
|
#include <sys/zfs_znode.h>
|
||||||
@ -1705,8 +1707,16 @@ dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, zio_prop_t *zp)
|
|||||||
* XXX -- we should design a compression algorithm
|
* XXX -- we should design a compression algorithm
|
||||||
* that specializes in arrays of bps.
|
* that specializes in arrays of bps.
|
||||||
*/
|
*/
|
||||||
compress = zfs_mdcomp_disable ? ZIO_COMPRESS_EMPTY :
|
boolean_t lz4_ac = spa_feature_is_active(os->os_spa,
|
||||||
ZIO_COMPRESS_LZJB;
|
SPA_FEATURE_LZ4_COMPRESS);
|
||||||
|
|
||||||
|
if (zfs_mdcomp_disable) {
|
||||||
|
compress = ZIO_COMPRESS_EMPTY;
|
||||||
|
} else if (lz4_ac) {
|
||||||
|
compress = ZIO_COMPRESS_LZ4;
|
||||||
|
} else {
|
||||||
|
compress = ZIO_COMPRESS_LZJB;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Metadata always gets checksummed. If the data
|
* Metadata always gets checksummed. If the data
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright (c) 2011, 2014 by Delphix. All rights reserved.
|
* Copyright (c) 2011, 2014 by Delphix. All rights reserved.
|
||||||
* Copyright 2013 Nexenta Systems, Inc. All rights reserved.
|
* Copyright (c) 2013, 2014, Nexenta Systems, Inc. All rights reserved.
|
||||||
* Copyright (c) 2013 Martin Matuska <mm@FreeBSD.org>. All rights reserved.
|
* Copyright (c) 2013 Martin Matuska <mm@FreeBSD.org>. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -6425,6 +6425,22 @@ spa_sync_upgrades(spa_t *spa, dmu_tx_t *tx)
|
|||||||
spa->spa_uberblock.ub_version >= SPA_VERSION_FEATURES) {
|
spa->spa_uberblock.ub_version >= SPA_VERSION_FEATURES) {
|
||||||
spa_feature_create_zap_objects(spa, tx);
|
spa_feature_create_zap_objects(spa, tx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LZ4_COMPRESS feature's behaviour was changed to activate_on_enable
|
||||||
|
* when possibility to use lz4 compression for metadata was added
|
||||||
|
* Old pools that have this feature enabled must be upgraded to have
|
||||||
|
* this feature active
|
||||||
|
*/
|
||||||
|
if (spa->spa_uberblock.ub_version >= SPA_VERSION_FEATURES) {
|
||||||
|
boolean_t lz4_en = spa_feature_is_enabled(spa,
|
||||||
|
SPA_FEATURE_LZ4_COMPRESS);
|
||||||
|
boolean_t lz4_ac = spa_feature_is_active(spa,
|
||||||
|
SPA_FEATURE_LZ4_COMPRESS);
|
||||||
|
|
||||||
|
if (lz4_en && !lz4_ac)
|
||||||
|
spa_feature_incr(spa, SPA_FEATURE_LZ4_COMPRESS, tx);
|
||||||
|
}
|
||||||
rrw_exit(&dp->dp_config_rwlock, FTAG);
|
rrw_exit(&dp->dp_config_rwlock, FTAG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
* Copyright (c) 2013 by Delphix. All rights reserved.
|
* Copyright (c) 2013 by Delphix. All rights reserved.
|
||||||
* Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
|
* Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
|
||||||
* Copyright (c) 2013 Steven Hartland. All rights reserved.
|
* Copyright (c) 2013 Steven Hartland. All rights reserved.
|
||||||
|
* Copyright (c) 2014, Nexenta Systems, Inc. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2504,37 +2505,6 @@ zfs_prop_set_special(const char *dsname, zprop_source_t source,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ZFS_PROP_COMPRESSION:
|
|
||||||
{
|
|
||||||
if (intval == ZIO_COMPRESS_LZ4) {
|
|
||||||
spa_t *spa;
|
|
||||||
|
|
||||||
if ((err = spa_open(dsname, &spa, FTAG)) != 0)
|
|
||||||
return (err);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Setting the LZ4 compression algorithm activates
|
|
||||||
* the feature.
|
|
||||||
*/
|
|
||||||
if (!spa_feature_is_active(spa,
|
|
||||||
SPA_FEATURE_LZ4_COMPRESS)) {
|
|
||||||
if ((err = zfs_prop_activate_feature(spa,
|
|
||||||
SPA_FEATURE_LZ4_COMPRESS)) != 0) {
|
|
||||||
spa_close(spa, FTAG);
|
|
||||||
return (err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
spa_close(spa, FTAG);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* We still want the default set action to be performed in the
|
|
||||||
* caller, we only performed zfeature settings here.
|
|
||||||
*/
|
|
||||||
err = -1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
err = -1;
|
err = -1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user