Print this page
4171 clean up spa_feature_*() interfaces
4172 implement extensible_dataset feature for use by other zpool features
Reviewed by: Max Grossman <max.grossman@delphix.com>
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>

@@ -20,11 +20,11 @@
  */
 
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  * Copyright (c) 2013, Joyent, Inc. All rights reserved.
  */
 
 #include <ctype.h>
 #include <errno.h>

@@ -411,14 +411,13 @@
                 const char *propname = nvpair_name(elem);
 
                 prop = zpool_name_to_prop(propname);
                 if (prop == ZPROP_INVAL && zpool_prop_feature(propname)) {
                         int err;
-                        zfeature_info_t *feature;
                         char *fname = strchr(propname, '@') + 1;
 
-                        err = zfeature_lookup_name(fname, &feature);
+                        err = zfeature_lookup_name(fname, NULL);
                         if (err != 0) {
                                 ASSERT3U(err, ==, ENOENT);
                                 zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
                                     "invalid feature '%s'"), fname);
                                 (void) zfs_error(hdl, EZFS_BADPROP, errbuf);

@@ -805,18 +804,18 @@
          * unecessary for unsupported@... properties because they already
          * use guids.
          */
         if (supported) {
                 int ret;
-                zfeature_info_t *fi;
+                spa_feature_t fid;
 
-                ret = zfeature_lookup_name(feature, &fi);
+                ret = zfeature_lookup_name(feature, &fid);
                 if (ret != 0) {
                         (void) strlcpy(buf, "-", len);
                         return (ENOTSUP);
                 }
-                feature = fi->fi_guid;
+                feature = spa_feature_table[fid].fi_guid;
         }
 
         if (nvlist_lookup_uint64(features, feature, &refcount) == 0)
                 found = B_TRUE;