Print this page
usr/src/cmd/zpool/zpool_util.c

*** 16,34 **** * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012, 2014 by Delphix. All rights reserved. * Copyright (c) 2014 Integros [integros.com] */ #include <sys/zio.h> #include <sys/spa.h> #include <sys/zfs_acl.h> #include <sys/zfs_ioctl.h> #include <sys/fs/zfs.h> #include "zfs_prop.h" --- 16,36 ---- * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ + /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2014 by Delphix. All rights reserved. * Copyright (c) 2014 Integros [integros.com] + * Copyright 2017 Nexenta Systems, Inc. */ #include <sys/zio.h> #include <sys/spa.h> + #include <sys/special.h> #include <sys/zfs_acl.h> #include <sys/zfs_ioctl.h> #include <sys/fs/zfs.h> #include "zfs_prop.h"
*** 56,72 **** --- 58,96 ---- { "off", 0}, { "on", 1}, { NULL } }; + static zprop_index_t meta_placement_table[] = { + { "off", META_PLACEMENT_OFF}, + { "on", META_PLACEMENT_ON}, + { "dual", META_PLACEMENT_DUAL}, + { NULL } + }; + static zprop_index_t failuremode_table[] = { { "wait", ZIO_FAILURE_MODE_WAIT }, { "continue", ZIO_FAILURE_MODE_CONTINUE }, { "panic", ZIO_FAILURE_MODE_PANIC }, { NULL } }; + static zprop_index_t sync_to_special_table[] = { + { "disabled", SYNC_TO_SPECIAL_DISABLED }, + { "standard", SYNC_TO_SPECIAL_STANDARD }, + { "balanced", SYNC_TO_SPECIAL_BALANCED }, + { "always", SYNC_TO_SPECIAL_ALWAYS}, + { NULL } + }; + + /* + * NOTE: When either adding or changing a property make sure + * to update the zfs-tests zpool_get configuration file + * at usr/src/test/zfs-tests/tests/functional/cli_root/zpool_get/ + * zpool_get.cfg + */ + /* string properties */ zprop_register_string(ZPOOL_PROP_ALTROOT, "altroot", NULL, PROP_DEFAULT, ZFS_TYPE_POOL, "<path>", "ALTROOT"); zprop_register_string(ZPOOL_PROP_BOOTFS, "bootfs", NULL, PROP_DEFAULT, ZFS_TYPE_POOL, "<filesystem>", "BOOTFS");
*** 97,106 **** --- 121,133 ---- zprop_register_number(ZPOOL_PROP_HEALTH, "health", 0, PROP_READONLY, ZFS_TYPE_POOL, "<state>", "HEALTH"); zprop_register_number(ZPOOL_PROP_DEDUPRATIO, "dedupratio", 0, PROP_READONLY, ZFS_TYPE_POOL, "<1.00x or higher if deduped>", "DEDUP"); + zprop_register_index(ZPOOL_PROP_DDTCAPPED, "ddt_capped", 0, + PROP_READONLY, ZFS_TYPE_POOL, "off | on", "DDT_CAPPED", + boolean_table); /* system partition size */ zprop_register_number(ZPOOL_PROP_BOOTSIZE, "bootsize", 0, PROP_ONETIME, ZFS_TYPE_POOL, "<size>", "BOOTSIZE");
*** 107,136 **** /* default number properties */ zprop_register_number(ZPOOL_PROP_VERSION, "version", SPA_VERSION, PROP_DEFAULT, ZFS_TYPE_POOL, "<version>", "VERSION"); zprop_register_number(ZPOOL_PROP_DEDUPDITTO, "dedupditto", 0, PROP_DEFAULT, ZFS_TYPE_POOL, "<threshold (min 100)>", "DEDUPDITTO"); /* default index (boolean) properties */ zprop_register_index(ZPOOL_PROP_DELEGATION, "delegation", 1, PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "DELEGATION", boolean_table); ! zprop_register_index(ZPOOL_PROP_AUTOREPLACE, "autoreplace", 0, PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "REPLACE", boolean_table); zprop_register_index(ZPOOL_PROP_LISTSNAPS, "listsnapshots", 0, PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "LISTSNAPS", boolean_table); zprop_register_index(ZPOOL_PROP_AUTOEXPAND, "autoexpand", 0, PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "EXPAND", boolean_table); zprop_register_index(ZPOOL_PROP_READONLY, "readonly", 0, PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "RDONLY", boolean_table); /* default index properties */ zprop_register_index(ZPOOL_PROP_FAILUREMODE, "failmode", ZIO_FAILURE_MODE_WAIT, PROP_DEFAULT, ZFS_TYPE_POOL, "wait | continue | panic", "FAILMODE", failuremode_table); /* hidden properties */ zprop_register_hidden(ZPOOL_PROP_NAME, "name", PROP_TYPE_STRING, PROP_READONLY, ZFS_TYPE_POOL, "NAME"); zprop_register_hidden(ZPOOL_PROP_MAXBLOCKSIZE, "maxblocksize", PROP_TYPE_NUMBER, PROP_READONLY, ZFS_TYPE_POOL, "MAXBLOCKSIZE"); --- 134,230 ---- /* default number properties */ zprop_register_number(ZPOOL_PROP_VERSION, "version", SPA_VERSION, PROP_DEFAULT, ZFS_TYPE_POOL, "<version>", "VERSION"); zprop_register_number(ZPOOL_PROP_DEDUPDITTO, "dedupditto", 0, PROP_DEFAULT, ZFS_TYPE_POOL, "<threshold (min 100)>", "DEDUPDITTO"); + zprop_register_number(ZPOOL_PROP_DEDUPMETA_DITTO, "dedup_meta_ditto", 0, + PROP_DEFAULT, ZFS_TYPE_POOL, "<number of copies>", + "DEDUP_META_DITTO"); + zprop_register_number(ZPOOL_PROP_DEDUP_LO_BEST_EFFORT, + "dedup_lo_best_effort", 60, PROP_DEFAULT, ZFS_TYPE_POOL, + "0-100", "DEDUP_LO_BEST_EFFORT"); + zprop_register_number(ZPOOL_PROP_DEDUP_HI_BEST_EFFORT, + "dedup_hi_best_effort", 80, PROP_DEFAULT, ZFS_TYPE_POOL, + "0-100", "DEDUP_HI_BEST_EFFORT"); + zprop_register_number(ZPOOL_PROP_SCRUB_PRIO, + "scrubprio", 5, PROP_DEFAULT, ZFS_TYPE_POOL, + "0-100", "SCRUB_PRIO"); + zprop_register_number(ZPOOL_PROP_RESILVER_PRIO, + "resilverprio", 10, PROP_DEFAULT, ZFS_TYPE_POOL, + "0-100", "RESILVER_PRIO"); /* default index (boolean) properties */ zprop_register_index(ZPOOL_PROP_DELEGATION, "delegation", 1, PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "DELEGATION", boolean_table); ! zprop_register_index(ZPOOL_PROP_AUTOREPLACE, "autoreplace", 1, PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "REPLACE", boolean_table); zprop_register_index(ZPOOL_PROP_LISTSNAPS, "listsnapshots", 0, PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "LISTSNAPS", boolean_table); zprop_register_index(ZPOOL_PROP_AUTOEXPAND, "autoexpand", 0, PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "EXPAND", boolean_table); zprop_register_index(ZPOOL_PROP_READONLY, "readonly", 0, PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "RDONLY", boolean_table); + zprop_register_index(ZPOOL_PROP_DDT_DESEGREGATION, "ddt_desegregation", + 0, PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "DDT_DESEG", + boolean_table); + zprop_register_index(ZPOOL_PROP_DEDUP_BEST_EFFORT, "dedup_best_effort", + 0, PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "DEDUP_BEST_EFFORT", + boolean_table); + zprop_register_index(ZPOOL_PROP_META_PLACEMENT, "meta_placement", 0, + PROP_DEFAULT, ZFS_TYPE_POOL, "on | off", "META_PLCMNT", + boolean_table); + zprop_register_index(ZPOOL_PROP_SYNC_TO_SPECIAL, "sync_to_special", + SYNC_TO_SPECIAL_STANDARD, PROP_DEFAULT, ZFS_TYPE_POOL, + "disabled | standard | balanced | always", "SYNC_TO_SPECIAL", + sync_to_special_table); + zprop_register_index(ZPOOL_PROP_DDT_META_TO_METADEV, + "ddt_meta_to_metadev", META_PLACEMENT_OFF, PROP_DEFAULT, + ZFS_TYPE_POOL, "on | dual | off", + "DDTMETA_TO_MD", meta_placement_table); + zprop_register_index(ZPOOL_PROP_ZFS_META_TO_METADEV, + "zfs_meta_to_metadev", META_PLACEMENT_OFF, PROP_DEFAULT, + ZFS_TYPE_POOL, "on | dual | off", + "ZFSMETA_TO_MD", meta_placement_table); + /* default index properties */ zprop_register_index(ZPOOL_PROP_FAILUREMODE, "failmode", ZIO_FAILURE_MODE_WAIT, PROP_DEFAULT, ZFS_TYPE_POOL, "wait | continue | panic", "FAILMODE", failuremode_table); + zprop_register_index(ZPOOL_PROP_FORCETRIM, "forcetrim", + SPA_FORCE_TRIM_OFF, PROP_DEFAULT, ZFS_TYPE_POOL, + "on | off", "FORCETRIM", boolean_table); + zprop_register_index(ZPOOL_PROP_AUTOTRIM, "autotrim", + SPA_AUTO_TRIM_OFF, PROP_DEFAULT, ZFS_TYPE_POOL, + "on | off", "AUTOTRIM", boolean_table); + /* special device status (enabled/disabled) */ + zprop_register_index(ZPOOL_PROP_ENABLESPECIAL, "enablespecial", 0, + PROP_READONLY, ZFS_TYPE_POOL, "on | off", "ENABLESPECIAL", + boolean_table); + + /* pool's min watermark in percents (for write cache) */ + zprop_register_number(ZPOOL_PROP_MINWATERMARK, "min-watermark", + 20, PROP_DEFAULT, ZFS_TYPE_POOL, + "<watermark 0-100%>", "MINWATERMARK"); + + /* pool's low watermark in percents (for write cache) */ + zprop_register_number(ZPOOL_PROP_LOWATERMARK, "low-watermark", + 60, PROP_DEFAULT, ZFS_TYPE_POOL, + "<watermark 0-100%>", "LOWATERMARK"); + + /* pool's high watermark in percents (for write cache) */ + zprop_register_number(ZPOOL_PROP_HIWATERMARK, "high-watermark", + 80, PROP_DEFAULT, ZFS_TYPE_POOL, + "<watermark 0-100%>", "HIWATERMARK"); + + zprop_register_number(ZPOOL_PROP_SMALL_DATA_TO_METADEV, + "small_data_to_metadev", 0, PROP_DEFAULT, ZFS_TYPE_POOL, + "Threshold to route to md", "SMALLDATA_TO_MD"); + /* hidden properties */ zprop_register_hidden(ZPOOL_PROP_NAME, "name", PROP_TYPE_STRING, PROP_READONLY, ZFS_TYPE_POOL, "NAME"); zprop_register_hidden(ZPOOL_PROP_MAXBLOCKSIZE, "maxblocksize", PROP_TYPE_NUMBER, PROP_READONLY, ZFS_TYPE_POOL, "MAXBLOCKSIZE");