Author: delphij
Date: Tue Jul  1 21:19:10 2014
New Revision: 268121
URL: http://svnweb.freebsd.org/changeset/base/268121

Log:
  4924 LZ4 Compression for metadata
  Reviewed by Matthew Ahrens <mahr...@delphix.com>
  Reviewed by Saso Kiselkov <skiselkov...@gmail.com>
  Approved by: Christopher Siden <christopher.si...@delphix.com>
  
  illumos/illumos-gate@b8289d24d866c1af02d7007348f7f057693c15d3

Modified:
  vendor-sys/illumos/dist/common/zfs/zfeature_common.c
  vendor-sys/illumos/dist/uts/common/fs/zfs/dmu.c
  vendor-sys/illumos/dist/uts/common/fs/zfs/spa.c
  vendor-sys/illumos/dist/uts/common/fs/zfs/zfs_ioctl.c

Changes in other areas also in this revision:
Modified:
  vendor/illumos/dist/man/man5/zpool-features.5

Modified: vendor-sys/illumos/dist/common/zfs/zfeature_common.c
==============================================================================
--- vendor-sys/illumos/dist/common/zfs/zfeature_common.c        Tue Jul  1 
21:16:27 2014        (r268120)
+++ vendor-sys/illumos/dist/common/zfs/zfeature_common.c        Tue Jul  1 
21:19:10 2014        (r268121)
@@ -23,6 +23,7 @@
  * Copyright (c) 2013 by Delphix. All rights reserved.
  * Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
  * Copyright (c) 2013, Joyent, Inc. All rights reserved.
+ * Copyright (c) 2014, Nexenta Systems, Inc. All rights reserved.
  */
 
 #ifdef _KERNEL
@@ -169,7 +170,7 @@ zpool_feature_init(void)
        zfeature_register(SPA_FEATURE_LZ4_COMPRESS,
            "org.illumos:lz4_compress", "lz4_compress",
            "LZ4 compression algorithm support.", B_FALSE, B_FALSE,
-           B_FALSE, NULL);
+           B_TRUE, NULL);
 
        zfeature_register(SPA_FEATURE_MULTI_VDEV_CRASH_DUMP,
            "com.joyent:multi_vdev_crash_dump", "multi_vdev_crash_dump",

Modified: vendor-sys/illumos/dist/uts/common/fs/zfs/dmu.c
==============================================================================
--- vendor-sys/illumos/dist/uts/common/fs/zfs/dmu.c     Tue Jul  1 21:16:27 
2014        (r268120)
+++ vendor-sys/illumos/dist/uts/common/fs/zfs/dmu.c     Tue Jul  1 21:19:10 
2014        (r268121)
@@ -24,6 +24,7 @@
  */
 /* Copyright (c) 2013 by Saso Kiselkov. 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_impl.h>
@@ -44,6 +45,7 @@
 #include <sys/zio_checksum.h>
 #include <sys/zio_compress.h>
 #include <sys/sa.h>
+#include <sys/zfeature.h>
 #ifdef _KERNEL
 #include <sys/vmsystm.h>
 #include <sys/zfs_znode.h>
@@ -1635,8 +1637,16 @@ dmu_write_policy(objset_t *os, dnode_t *
                 * XXX -- we should design a compression algorithm
                 * that specializes in arrays of bps.
                 */
-               compress = zfs_mdcomp_disable ? ZIO_COMPRESS_EMPTY :
-                   ZIO_COMPRESS_LZJB;
+               boolean_t lz4_ac = spa_feature_is_active(os->os_spa,
+                   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

Modified: vendor-sys/illumos/dist/uts/common/fs/zfs/spa.c
==============================================================================
--- vendor-sys/illumos/dist/uts/common/fs/zfs/spa.c     Tue Jul  1 21:16:27 
2014        (r268120)
+++ vendor-sys/illumos/dist/uts/common/fs/zfs/spa.c     Tue Jul  1 21:19:10 
2014        (r268121)
@@ -22,7 +22,7 @@
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. 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.
  */
 
 /*
@@ -6106,6 +6106,22 @@ spa_sync_upgrades(spa_t *spa, dmu_tx_t *
            spa->spa_uberblock.ub_version >= SPA_VERSION_FEATURES) {
                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);
 }
 

Modified: vendor-sys/illumos/dist/uts/common/fs/zfs/zfs_ioctl.c
==============================================================================
--- vendor-sys/illumos/dist/uts/common/fs/zfs/zfs_ioctl.c       Tue Jul  1 
21:16:27 2014        (r268120)
+++ vendor-sys/illumos/dist/uts/common/fs/zfs/zfs_ioctl.c       Tue Jul  1 
21:19:10 2014        (r268121)
@@ -27,6 +27,7 @@
  * Copyright (c) 2013 by Delphix. All rights reserved.
  * Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
  * Copyright (c) 2013 Steven Hartland. All rights reserved.
+ * Copyright (c) 2014, Nexenta Systems, Inc. All rights reserved.
  */
 
 /*
@@ -2453,37 +2454,6 @@ zfs_prop_set_special(const char *dsname,
                }
                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:
                err = -1;
        }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to