diff options
author | Kaushal M <kaushal@redhat.com> | 2012-09-03 16:51:06 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2012-10-31 02:35:37 -0700 |
commit | abc8e5b01bff976e1f6b3c1e2747a2a341bf0f64 (patch) | |
tree | 13bd5813579b4b80a9cd00a2af5fd35f9bc3ef8f /xlators/mgmt/glusterd/src/glusterd-volgen.c | |
parent | 0608244512f1ab0ba9916ab3da9f0bc57ee234fc (diff) |
glusterd: 'volume set' changes for op-version support
An op-version check is performed for the given keys during stage. The commit
phase moves the cluster op-version to the required version if needed.
Change-Id: Id5c387094dbec723df736b2ecdc49ff93c179e0e
BUG: 814534
Signed-off-by: Kaushal M <kaushal@redhat.com>
Reviewed-on: http://review.gluster.org/3780
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-volgen.c')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volgen.c | 320 |
1 files changed, 172 insertions, 148 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c index 2784242feaa..ac9565cf4fb 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.c +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c @@ -60,6 +60,15 @@ * a default. That is, even the volume dict doesn't have a value, * we procced as if the default value were set for it. * + * Fifth field is <doctype>, which decides if the option is public and available + * in "set help" or not. "NODOC" entries are not part of the public interface + * and are subject to change at any time. This also decides if an option is + * global (apllies to all volumes) or normal (applies to only specified volume). + * + * Sixth field is <flags>. + * + * Seventh field is <op-version>. + * * There are two type of entries: basic and special. * * - Basic entries are the ones where the <option> does _not_ start with @@ -78,8 +87,6 @@ * extend them in a trivial way which could be just picked up. Better * not touch them unless you know what you do. * - * "NODOC" entries are not part of the public interface and are subject - * to change at any time. * * Another kind of grouping for options, according to visibility: * @@ -92,154 +99,154 @@ * Adhering to this policy, option name changes shall be one-liners. * */ -typedef enum { DOC, NO_DOC, GLOBAL_DOC, GLOBAL_NO_DOC } option_type_t; - - -struct volopt_map_entry { - char *key; - char *voltype; - char *option; - char *value; - option_type_t type; - uint32_t flags; -}; static struct volopt_map_entry glusterd_volopt_map[] = { - - {"cluster.lookup-unhashed", "cluster/distribute", NULL, NULL, NO_DOC, 0 }, - {"cluster.min-free-disk", "cluster/distribute", NULL, NULL, NO_DOC, 0 }, - {"cluster.min-free-inodes", "cluster/distribute", NULL, NULL, NO_DOC, 0 }, - {"cluster.rebalance-stats", "cluster/distribute", NULL, NULL, NO_DOC, 0 }, - {"cluster.subvols-per-directory", "cluster/distribute", "directory-layout-spread", NULL, NO_DOC, 0 }, - {"cluster.readdir-optimize", "cluster/distribute", NULL, NULL, NO_DOC, 0 }, - - {"cluster.entry-change-log", "cluster/replicate", NULL, NULL, NO_DOC, 0 }, - {"cluster.read-subvolume", "cluster/replicate", NULL, NULL, NO_DOC, 0 }, - {"cluster.read-subvolume-index", "cluster/replicate", NULL, NULL, NO_DOC, 0 }, - {"cluster.read-hash-mode", "cluster/replicate", NULL, NULL, NO_DOC, 0}, - {"cluster.background-self-heal-count", "cluster/replicate", NULL, NULL, NO_DOC, 0 }, - {"cluster.metadata-self-heal", "cluster/replicate", NULL, NULL, NO_DOC, 0 }, - {"cluster.data-self-heal", "cluster/replicate", NULL, NULL, NO_DOC, 0 }, - {"cluster.entry-self-heal", "cluster/replicate", NULL, NULL, NO_DOC, 0 }, - {"cluster.self-heal-daemon", "cluster/replicate", "!self-heal-daemon" , NULL, NO_DOC, 0 }, - {"cluster.heal-timeout", "cluster/replicate", "!heal-timeout" , NULL, NO_DOC, 0 }, - {"cluster.strict-readdir", "cluster/replicate", NULL, NULL, NO_DOC, 0 }, - {"cluster.self-heal-window-size", "cluster/replicate", "data-self-heal-window-size", NULL, DOC, 0}, - {"cluster.data-change-log", "cluster/replicate", NULL, NULL, NO_DOC, 0 }, - {"cluster.metadata-change-log", "cluster/replicate", NULL, NULL, NO_DOC, 0 }, - {"cluster.data-self-heal-algorithm", "cluster/replicate", "data-self-heal-algorithm", NULL,DOC, 0}, - {"cluster.eager-lock", "cluster/replicate", NULL, NULL, NO_DOC, 0 }, - {"cluster.quorum-type", "cluster/replicate", "quorum-type", NULL, NO_DOC, 0}, - {"cluster.quorum-count", "cluster/replicate", "quorum-count", NULL, NO_DOC, 0}, - {"cluster.choose-local", "cluster/replicate", NULL, NULL, DOC, 0}, - {"cluster.self-heal-readdir-size", "cluster/replicate", NULL, NULL, NO_DOC, 0}, - - {"cluster.stripe-block-size", "cluster/stripe", "block-size", NULL, DOC, 0}, - {"cluster.stripe-coalesce", "cluster/stripe", "coalesce", NULL, DOC, 0}, - - {VKEY_DIAG_LAT_MEASUREMENT, "debug/io-stats", "latency-measurement", "off", NO_DOC, 0}, - {"diagnostics.dump-fd-stats", "debug/io-stats", NULL, NULL, NO_DOC, 0}, - {VKEY_DIAG_CNT_FOP_HITS, "debug/io-stats", "count-fop-hits", "off", NO_DOC, 0}, - - {"diagnostics.brick-log-level", "debug/io-stats", "!brick-log-level", NULL, DOC, 0}, - {"diagnostics.client-log-level", "debug/io-stats", "!client-log-level", NULL, DOC, 0}, - {"diagnostics.brick-sys-log-level", "debug/io-stats", "!sys-log-level", NULL, DOC, 0}, - {"diagnostics.client-sys-log-level", "debug/io-stats", "!sys-log-level", NULL, DOC, 0}, - - {"performance.cache-max-file-size", "performance/io-cache", "max-file-size", NULL, DOC, 0}, - {"performance.cache-min-file-size", "performance/io-cache", "min-file-size", NULL, DOC, 0}, - {"performance.cache-refresh-timeout", "performance/io-cache", "cache-timeout", NULL, DOC, 0}, - {"performance.cache-priority", "performance/io-cache", "priority", NULL, DOC, 0}, - {"performance.cache-size", "performance/io-cache", NULL, NULL, NO_DOC, 0 }, - {"performance.cache-size", "performance/quick-read", NULL, NULL, NO_DOC, 0 }, - {"performance.flush-behind", "performance/write-behind", "flush-behind", NULL, DOC, 0}, - {"performance.md-cache-timeout", "performance/md-cache", "md-cache-timeout", NULL, DOC, 0}, - - {"performance.io-thread-count", "performance/io-threads", "thread-count", NULL, DOC, 0}, - {"performance.high-prio-threads", "performance/io-threads", NULL, NULL, DOC, 0}, - {"performance.normal-prio-threads", "performance/io-threads", NULL, NULL, DOC, 0}, - {"performance.low-prio-threads", "performance/io-threads", NULL, NULL, DOC, 0}, - {"performance.least-prio-threads", "performance/io-threads", NULL, NULL, DOC, 0}, - {"performance.enable-least-priority", "performance/io-threads", NULL, NULL, DOC, 0}, - {"performance.disk-usage-limit", "performance/quota", NULL, NULL, NO_DOC, 0}, - {"performance.min-free-disk-limit", "performance/quota", NULL, NULL, NO_DOC, 0}, - {"performance.write-behind-window-size", "performance/write-behind", "cache-size", NULL, DOC}, - {"performance.strict-o-direct", "performance/write-behind", "strict-O_DIRECT", NULL, DOC}, - {"performance.strict-write-ordering", "performance/write-behind", "strict-write-ordering", NULL, DOC}, - {"performance.read-ahead-page-count", "performance/read-ahead", "page-count", NULL, DOC}, - - {"network.frame-timeout", "protocol/client", NULL, NULL, NO_DOC, 0}, - {"network.ping-timeout", "protocol/client", NULL, NULL, NO_DOC, 0}, - {"network.tcp-window-size", "protocol/client", NULL, NULL, NO_DOC, 0}, - { "client.ssl", "protocol/client", "transport.socket.ssl-enabled", NULL, NO_DOC, 0}, - - {"network.tcp-window-size", "protocol/server", NULL, NULL, NO_DOC, 0}, - {"network.inode-lru-limit", "protocol/server", NULL, NULL, NO_DOC, 0}, - {AUTH_ALLOW_MAP_KEY, "protocol/server", "!server-auth", "*", DOC, 0}, + /* DHT xlator options */ + {"cluster.lookup-unhashed", "cluster/distribute", NULL, NULL, NO_DOC, 0, 1}, + {"cluster.min-free-disk", "cluster/distribute", NULL, NULL, NO_DOC, 0, 1}, + {"cluster.min-free-inodes", "cluster/distribute", NULL, NULL, NO_DOC, 0, 1}, + {"cluster.rebalance-stats", "cluster/distribute", NULL, NULL, NO_DOC, 0, 2}, + {"cluster.subvols-per-directory", "cluster/distribute", "directory-layout-spread", NULL, NO_DOC, 0, 2}, + {"cluster.readdir-optimize", "cluster/distribute", NULL, NULL, NO_DOC, 0, 2}, + + /* AFR xlator options */ + {"cluster.entry-change-log", "cluster/replicate", NULL, NULL, NO_DOC, 0, 1}, + {"cluster.read-subvolume", "cluster/replicate", NULL, NULL, NO_DOC, 0, 1}, + {"cluster.read-subvolume-index", "cluster/replicate", NULL, NULL, NO_DOC, 0, 2}, + {"cluster.read-hash-mode", "cluster/replicate", NULL, NULL, NO_DOC, 0, 2}, + {"cluster.background-self-heal-count", "cluster/replicate", NULL, NULL, NO_DOC, 0, 1}, + {"cluster.metadata-self-heal", "cluster/replicate", NULL, NULL, NO_DOC, 0, 1}, + {"cluster.data-self-heal", "cluster/replicate", NULL, NULL, NO_DOC, 0, 1}, + {"cluster.entry-self-heal", "cluster/replicate", NULL, NULL, NO_DOC, 0, 1}, + {"cluster.self-heal-daemon", "cluster/replicate", "!self-heal-daemon" , NULL, NO_DOC, 0, 1}, + {"cluster.heal-timeout", "cluster/replicate", "!heal-timeout" , NULL, NO_DOC, 0, 2}, + {"cluster.strict-readdir", "cluster/replicate", NULL, NULL, NO_DOC, 0, 1}, + {"cluster.self-heal-window-size", "cluster/replicate", "data-self-heal-window-size", NULL, DOC, 0, 1}, + {"cluster.data-change-log", "cluster/replicate", NULL, NULL, NO_DOC, 0, 1}, + {"cluster.metadata-change-log", "cluster/replicate", NULL, NULL, NO_DOC, 0, 1}, + {"cluster.data-self-heal-algorithm", "cluster/replicate", "data-self-heal-algorithm", NULL, DOC, 0, 1}, + {"cluster.eager-lock", "cluster/replicate", NULL, NULL, NO_DOC, 0, 1}, + {"cluster.quorum-type", "cluster/replicate", "quorum-type", NULL, NO_DOC, 0, 1}, + {"cluster.quorum-count", "cluster/replicate", "quorum-count", NULL, NO_DOC, 0, 1}, + {"cluster.choose-local", "cluster/replicate", NULL, NULL, DOC, 0, 2}, + + /* Stripe xlator options */ + {"cluster.stripe-block-size", "cluster/stripe", "block-size", NULL, DOC, 0, 1}, + {"cluster.stripe-coalesce", "cluster/stripe", "coalesce", NULL, DOC, 0, 2}, + + /* IO-stats xlator options */ + {VKEY_DIAG_LAT_MEASUREMENT, "debug/io-stats", "latency-measurement", "off", NO_DOC, 0, 1}, + {"diagnostics.dump-fd-stats", "debug/io-stats", NULL, NULL, NO_DOC, 0, 1}, + {VKEY_DIAG_CNT_FOP_HITS, "debug/io-stats", "count-fop-hits", "off", NO_DOC, 0, 1}, + {"diagnostics.brick-log-level", "debug/io-stats", "!brick-log-level", NULL, DOC, 0, 1}, + {"diagnostics.client-log-level", "debug/io-stats", "!client-log-level", NULL, DOC, 0, 1}, + {"diagnostics.brick-sys-log-level", "debug/io-stats", "!sys-log-level", NULL, DOC, 0, 1}, + {"diagnostics.client-sys-log-level", "debug/io-stats", "!sys-log-level", NULL, DOC, 0, 1}, + + /* IO-cache xlator options */ + {"performance.cache-max-file-size", "performance/io-cache", "max-file-size", NULL, DOC, 0, 1}, + {"performance.cache-min-file-size", "performance/io-cache", "min-file-size", NULL, DOC, 0, 1}, + {"performance.cache-refresh-timeout", "performance/io-cache", "cache-timeout", NULL, DOC, 0, 1}, + {"performance.cache-priority", "performance/io-cache", "priority", NULL, DOC, 0, 1}, + {"performance.cache-size", "performance/io-cache", NULL, NULL, NO_DOC, 0, 1}, + + /* IO-threads xlator options */ + {"performance.io-thread-count", "performance/io-threads", "thread-count", NULL, DOC, 0, 1}, + {"performance.high-prio-threads", "performance/io-threads", NULL, NULL, DOC, 0, 1}, + {"performance.normal-prio-threads", "performance/io-threads", NULL, NULL, DOC, 0, 1}, + {"performance.low-prio-threads", "performance/io-threads", NULL, NULL, DOC, 0, 1}, + {"performance.least-prio-threads", "performance/io-threads", NULL, NULL, DOC, 0, 1}, + {"performance.enable-least-priority", "performance/io-threads", NULL, NULL, DOC, 0, 2}, + + /* Other perf xlators' options */ + {"performance.cache-size", "performance/quick-read", NULL, NULL, NO_DOC, 0, 1}, + {"performance.flush-behind", "performance/write-behind", "flush-behind", NULL, DOC, 0, 1}, + {"performance.write-behind-window-size", "performance/write-behind", "cache-size", NULL, DOC, 1}, + + {"performance.read-ahead-page-count", "performance/read-ahead", "page-count", NULL, DOC, 1}, + {"performance.md-cache-timeout", "performance/md-cache", "md-cache-timeout", NULL, DOC, 0, 2}, + + /* Client xlator options */ + {"network.frame-timeout", "protocol/client", NULL, NULL, NO_DOC, 0, 1}, + {"network.ping-timeout", "protocol/client", NULL, NULL, NO_DOC, 0, 1}, + {"network.tcp-window-size", "protocol/client", NULL, NULL, NO_DOC, 0, 1}, + {"features.lock-heal", "protocol/client", "lk-heal", NULL, DOC, 0, 1}, + {"features.grace-timeout", "protocol/client", "grace-timeout", NULL, DOC, 0, 1}, + {"client.ssl", "protocol/client", "transport.socket.ssl-enabled", NULL, NO_DOC, 0, 2}, + + /* Server xlator options */ + {"network.tcp-window-size", "protocol/server", NULL, NULL, NO_DOC, 0, 1}, + {"network.inode-lru-limit", "protocol/server", NULL, NULL, NO_DOC, 0, 1}, + {AUTH_ALLOW_MAP_KEY, "protocol/server", "!server-auth", "*", DOC, 0, 1}, {AUTH_REJECT_MAP_KEY, "protocol/server", "!server-auth", NULL, DOC, 0}, - {"transport.keepalive", "protocol/server", "transport.socket.keepalive", NULL, NO_DOC, 0}, - {"server.allow-insecure", "protocol/server", "rpc-auth-allow-insecure", NULL, NO_DOC, 0}, - { "server.ssl", "protocol/server", "transport.socket.ssl-enabled", NULL, NO_DOC, 0}, - - {"performance.write-behind", "performance/write-behind", "!perf", "on", NO_DOC, 0}, - {"performance.read-ahead", "performance/read-ahead", "!perf", "on", NO_DOC, 0}, - {"performance.io-cache", "performance/io-cache", "!perf", "on", NO_DOC, 0}, - {"performance.quick-read", "performance/quick-read", "!perf", "on", NO_DOC, 0}, - {VKEY_PERF_STAT_PREFETCH, "performance/md-cache", "!perf", "on", NO_DOC, 0}, - {"performance.client-io-threads", "performance/io-threads", "!perf", "off", NO_DOC, 0}, - - {"performance.nfs.write-behind", "performance/write-behind", "!nfsperf", "off", NO_DOC, 0}, - {"performance.nfs.read-ahead", "performance/read-ahead", "!nfsperf", "off", NO_DOC, 0}, - {"performance.nfs.io-cache", "performance/io-cache", "!nfsperf", "off", NO_DOC, 0}, - {"performance.nfs.quick-read", "performance/quick-read", "!nfsperf", "off", NO_DOC, 0}, - {"performance.nfs.stat-prefetch", "performance/md-cache", "!nfsperf", "off", NO_DOC, 0}, - {"performance.nfs.io-threads", "performance/io-threads", "!nfsperf", "off", NO_DOC, 0}, - - {VKEY_MARKER_XTIME, "features/marker", "xtime", "off", NO_DOC, OPT_FLAG_FORCE}, - {VKEY_MARKER_XTIME, "features/marker", "!xtime", "off", NO_DOC, OPT_FLAG_FORCE}, - {"debug.trace", "debug/trace", "!debug","off", NO_DOC, 0}, - {"debug.error-gen", "debug/error-gen", "!debug","off", NO_DOC, 0}, - - {"nfs.enable-ino32", "nfs/server", "nfs.enable-ino32", NULL, GLOBAL_DOC, 0}, - {"nfs.mem-factor", "nfs/server", "nfs.mem-factor", NULL, GLOBAL_DOC, 0}, - {"nfs.export-dirs", "nfs/server", "nfs3.export-dirs", NULL, GLOBAL_DOC, 0}, - {"nfs.export-volumes", "nfs/server", "nfs3.export-volumes", NULL, GLOBAL_DOC, 0}, - {"nfs.addr-namelookup", "nfs/server", "rpc-auth.addr.namelookup", NULL, GLOBAL_DOC, 0}, - {"nfs.dynamic-volumes", "nfs/server", "nfs.dynamic-volumes", NULL, GLOBAL_NO_DOC, 0}, - {"nfs.register-with-portmap", "nfs/server", "rpc.register-with-portmap", NULL, GLOBAL_DOC, 0}, - {"nfs.port", "nfs/server", "nfs.port", NULL, GLOBAL_DOC, 0}, - - {"nfs.rpc-auth-unix", "nfs/server", "!rpc-auth.auth-unix.*", NULL, DOC, 0}, - {"nfs.rpc-auth-null", "nfs/server", "!rpc-auth.auth-null.*", NULL, DOC, 0}, - {"nfs.rpc-auth-allow", "nfs/server", "!rpc-auth.addr.*.allow", NULL, DOC, 0}, - {"nfs.rpc-auth-reject", "nfs/server", "!rpc-auth.addr.*.reject", NULL, DOC, 0}, - {"nfs.ports-insecure", "nfs/server", "!rpc-auth.ports.*.insecure", NULL, DOC, 0}, - {"nfs.transport-type", "nfs/server", "!nfs.transport-type", NULL, DOC, 0}, - - {"nfs.trusted-sync", "nfs/server", "!nfs3.*.trusted-sync", NULL, DOC, 0}, - {"nfs.trusted-write", "nfs/server", "!nfs3.*.trusted-write", NULL, DOC, 0}, - {"nfs.volume-access", "nfs/server", "!nfs3.*.volume-access", NULL, DOC, 0}, - {"nfs.export-dir", "nfs/server", "!nfs3.*.export-dir", NULL, DOC, 0}, - {NFS_DISABLE_MAP_KEY, "nfs/server", "!nfs-disable", NULL, DOC, 0}, - {"nfs.nlm", "nfs/server", "nfs.nlm", NULL, GLOBAL_DOC, 0}, - {"nfs.mount-udp", "nfs/server", "nfs.mount-udp", NULL, GLOBAL_DOC, 0}, - {"nfs.server-aux-gids", "nfs/server", "nfs.server-aux-gids", NULL, NO_DOC, 0}, - - {VKEY_FEATURES_QUOTA, "features/marker", "quota", "off", NO_DOC, OPT_FLAG_FORCE}, - {VKEY_FEATURES_LIMIT_USAGE, "features/quota", "limit-set", NULL, NO_DOC, 0}, - {"features.quota-timeout", "features/quota", "timeout", "0", DOC, 0}, - {"server.statedump-path", "protocol/server", "statedump-path", NULL, DOC, 0}, - {"features.lock-heal", "protocol/client", "lk-heal", NULL, NO_DOC, 0}, - {"features.lock-heal", "protocol/server", "lk-heal", NULL, DOC, 0}, - {"features.grace-timeout", "protocol/client", "grace-timeout", NULL, NO_DOC, 0}, - {"features.grace-timeout", "protocol/server", "grace-timeout", NULL, DOC, 0}, - {"features.read-only", "features/read-only", "!read-only", "off", DOC, 0}, - {"features.worm", "features/worm", "!worm", "off", DOC, 0}, - {"storage.linux-aio", "storage/posix", NULL, NULL, DOC, 0}, - {"storage.owner-uid", "storage/posix", "brick-uid", NULL, DOC, 0}, - {"storage.owner-gid", "storage/posix", "brick-gid", NULL, DOC, 0}, - {"config.memory-accounting", "configuration", "!config", NULL, DOC, 0}, - {"config.transport", "configuration", "!config", NULL, DOC, 0}, + {"transport.keepalive", "protocol/server", "transport.socket.keepalive", NULL, NO_DOC, 0, 1}, + {"server.allow-insecure", "protocol/server", "rpc-auth-allow-insecure", NULL, NO_DOC, 0, 1}, + {"server.statedump-path", "protocol/server", "statedump-path", NULL, DOC, 0, 1}, + {"features.lock-heal", "protocol/server", "lk-heal", NULL, NO_DOC, 0, 1}, + {"features.grace-timeout", "protocol/server", "grace-timeout", NULL, NO_DOC, 0, 1}, + {"server.ssl", "protocol/server", "transport.socket.ssl-enabled", NULL, NO_DOC, 0, 2}, + + /* Performance xlators enable/disbable options */ + {"performance.write-behind", "performance/write-behind", "!perf", "on", NO_DOC, 0, 1}, + {"performance.read-ahead", "performance/read-ahead", "!perf", "on", NO_DOC, 0, 1}, + {"performance.io-cache", "performance/io-cache", "!perf", "on", NO_DOC, 0, 1}, + {"performance.quick-read", "performance/quick-read", "!perf", "on", NO_DOC, 0, 1}, + {"performance.stat-prefetch", "performance/md-cache", "!perf", "on", NO_DOC, 0, 1}, + {"performance.client-io-threads", "performance/io-threads", "!perf", "off", NO_DOC, 0, 1}, + + {"performance.nfs.write-behind", "performance/write-behind", "!nfsperf", "off", NO_DOC, 0, 1}, + {"performance.nfs.read-ahead", "performance/read-ahead", "!nfsperf", "off", NO_DOC, 0, 1}, + {"performance.nfs.io-cache", "performance/io-cache", "!nfsperf", "off", NO_DOC, 0, 1}, + {"performance.nfs.quick-read", "performance/quick-read", "!nfsperf", "off", NO_DOC, 0, 1}, + {"performance.nfs.stat-prefetch", "performance/md-cache", "!nfsperf", "off", NO_DOC, 0, 1}, + {"performance.nfs.io-threads", "performance/io-threads", "!nfsperf", "off", NO_DOC, 0, 1}, + + /* Quota xlator options */ + {VKEY_FEATURES_LIMIT_USAGE, "features/quota", "limit-set", NULL, NO_DOC, 0, 1}, + {"features.quota-timeout", "features/quota", "timeout", "0", DOC, 0, 1}, + + /* Marker xlator options */ + {VKEY_MARKER_XTIME, "features/marker", "xtime", "off", NO_DOC, OPT_FLAG_FORCE, 1}, + {VKEY_MARKER_XTIME, "features/marker", "!xtime", "off", NO_DOC, OPT_FLAG_FORCE, 1}, + {VKEY_FEATURES_QUOTA, "features/marker", "quota", "off", NO_DOC, OPT_FLAG_FORCE, 1}, + + /* Debug xlators options */ + {"debug.trace", "debug/trace", "!debug","off", NO_DOC, 0, 1}, + {"debug.error-gen", "debug/error-gen", "!debug","off", NO_DOC, 0, 1}, + + /* NFS xlator options */ + {"nfs.enable-ino32", "nfs/server", "nfs.enable-ino32", NULL, GLOBAL_DOC, 0, 1}, + {"nfs.mem-factor", "nfs/server", "nfs.mem-factor", NULL, GLOBAL_DOC, 0, 1}, + {"nfs.export-dirs", "nfs/server", "nfs3.export-dirs", NULL, GLOBAL_DOC, 0, 1}, + {"nfs.export-volumes", "nfs/server", "nfs3.export-volumes", NULL, GLOBAL_DOC, 0, 1}, + {"nfs.addr-namelookup", "nfs/server", "rpc-auth.addr.namelookup", NULL, GLOBAL_DOC, 0, 1}, + {"nfs.dynamic-volumes", "nfs/server", "nfs.dynamic-volumes", NULL, GLOBAL_NO_DOC, 0, 1}, + {"nfs.register-with-portmap", "nfs/server", "rpc.register-with-portmap", NULL, GLOBAL_DOC, 0, 1}, + {"nfs.port", "nfs/server", "nfs.port", NULL, GLOBAL_DOC, 0, 1}, + {"nfs.rpc-auth-unix", "nfs/server", "!rpc-auth.auth-unix.*", NULL, DOC, 0, 1}, + {"nfs.rpc-auth-null", "nfs/server", "!rpc-auth.auth-null.*", NULL, DOC, 0, 1}, + {"nfs.rpc-auth-allow", "nfs/server", "!rpc-auth.addr.*.allow", NULL, DOC, 0, 1}, + {"nfs.rpc-auth-reject", "nfs/server", "!rpc-auth.addr.*.reject", NULL, DOC, 0, 1}, + {"nfs.ports-insecure", "nfs/server", "!rpc-auth.ports.*.insecure", NULL, DOC, 0, 1}, + {"nfs.transport-type", "nfs/server", "!nfs.transport-type", NULL, DOC, 0, 1}, + {"nfs.trusted-sync", "nfs/server", "!nfs3.*.trusted-sync", NULL, DOC, 0, 1}, + {"nfs.trusted-write", "nfs/server", "!nfs3.*.trusted-write", NULL, DOC, 0, 1}, + {"nfs.volume-access", "nfs/server", "!nfs3.*.volume-access", NULL, DOC, 0, 1}, + {"nfs.export-dir", "nfs/server", "!nfs3.*.export-dir", NULL, DOC, 0, 1}, + {NFS_DISABLE_MAP_KEY, "nfs/server", "!nfs-disable", NULL, DOC, 0, 1}, + {"nfs.nlm", "nfs/server", "nfs.nlm", NULL, GLOBAL_DOC, 0, 1}, + {"nfs.mount-udp", "nfs/server", "nfs.mount-udp", NULL, GLOBAL_DOC, 0, 1}, + {"nfs.server-aux-gids", "nfs/server", "nfs.server-aux-gids", NULL, NO_DOC, 0, 2}, + + /* Other options which don't fit any place above */ + {"features.read-only", "features/read-only", "!read-only", "off", DOC, 0, 2}, + {"features.worm", "features/worm", "!worm", "off", DOC, 0, 2}, + + {"storage.linux-aio", "storage/posix", NULL, NULL, DOC, 0, 2}, + {"storage.owner-uid", "storage/posix", "brick-uid", NULL, DOC, 0, 2}, + {"storage.owner-gid", "storage/posix", "brick-gid", NULL, DOC, 0, 2}, + {"config.memory-accounting", "configuration", "!config", NULL, DOC, 0, 2}, + {"config.transport", "configuration", "!config", NULL, DOC, 0, 2}, {NULL, } }; @@ -2962,7 +2969,7 @@ build_nfs_graph (volgen_graph_t *graph, dict_t *mod_dict) else get_transport_type (voliter, voliter->dict, nfs_xprt, _gf_true); - ret = dict_set_str (set_dict, VKEY_PERF_STAT_PREFETCH, "off"); + ret = dict_set_str (set_dict, "performance.stat-prefetch", "off"); if (ret) goto out; @@ -3765,3 +3772,20 @@ out: gf_log ("", GF_LOG_DEBUG, "Returning %d", ret); return ret; } + +uint32_t +glusterd_get_op_version_for_key (char *key) +{ + char *completion = NULL; + struct volopt_map_entry *vmep = NULL; + int ret = 0; + + COMPLETE_OPTION(key, completion, ret); + for (vmep = glusterd_volopt_map; vmep->key; vmep++) { + if (strcmp (vmep->key, key) == 0) { + return vmep->op_version; + } + } + + return 0; +} |