diff options
-rw-r--r-- | glusterfsd/src/Makefile.am | 6 | ||||
-rw-r--r-- | glusterfsd/src/glusterfsd.c | 241 | ||||
-rw-r--r-- | glusterfsd/src/glusterfsd.h | 2 | ||||
-rw-r--r-- | libglusterfs/src/glusterfs.h | 2 | ||||
-rw-r--r-- | libglusterfs/src/mem-types.h | 3 | ||||
-rw-r--r-- | tests/basic/exports_parsing.t | 44 | ||||
-rw-r--r-- | tests/basic/netgroup_parsing.t | 50 | ||||
-rw-r--r-- | tests/configfiles/bad_exports | 9 | ||||
-rw-r--r-- | tests/configfiles/bad_netgroups | 5 | ||||
-rw-r--r-- | tests/configfiles/big_exports | 10 | ||||
-rw-r--r-- | tests/configfiles/exports | 1 | ||||
-rw-r--r-- | tests/configfiles/exports_bad_opt | 1 | ||||
-rw-r--r-- | tests/configfiles/netgroups | 3 | ||||
-rw-r--r-- | xlators/nfs/server/src/exports.c | 14 | ||||
-rw-r--r-- | xlators/nfs/server/src/netgroups.c | 6 | ||||
-rw-r--r-- | xlators/nfs/server/src/nfs-mem-types.h | 2 |
16 files changed, 385 insertions, 14 deletions
diff --git a/glusterfsd/src/Makefile.am b/glusterfsd/src/Makefile.am index 66ede7a336f..0f83622bb37 100644 --- a/glusterfsd/src/Makefile.am +++ b/glusterfsd/src/Makefile.am @@ -10,8 +10,10 @@ noinst_HEADERS = glusterfsd.h glusterfsd-mem-types.h glusterfsd-messages.h AM_CPPFLAGS = $(GF_CPPFLAGS) \ -I$(top_srcdir)/libglusterfs/src -DDATADIR=\"$(localstatedir)\" \ - -DCONFDIR=\"$(sysconfdir)/glusterfs\" \ - -I$(top_srcdir)/rpc/rpc-lib/src -I$(top_srcdir)/rpc/xdr/src + -DCONFDIR=\"$(sysconfdir)/glusterfs\" $(GF_GLUSTERFS_CFLAGS) \ + -DXLATORDIR=\"$(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator\" \ + -I$(top_srcdir)/rpc/rpc-lib/src -I$(top_srcdir)/rpc/xdr/src \ + -I$(top_srcdir)/xlators/nfs/server/src AM_CFLAGS = -Wall $(GF_CFLAGS) diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c index c410ffd40d9..9a174c4bdae 100644 --- a/glusterfsd/src/glusterfsd.c +++ b/glusterfsd/src/glusterfsd.c @@ -19,6 +19,7 @@ #include <netdb.h> #include <signal.h> #include <libgen.h> +#include <dlfcn.h> #include <sys/utsname.h> @@ -69,6 +70,8 @@ #include "rpc-clnt.h" #include "syncop.h" #include "client_t.h" +#include "netgroups.h" +#include "exports.h" #include "daemon.h" @@ -152,6 +155,12 @@ static struct argp_option gf_options[] = { "Mount the filesystem with POSIX ACL support"}, {"selinux", ARGP_SELINUX_KEY, 0, 0, "Enable SELinux label (extened attributes) support on inodes"}, + + {"print-netgroups", ARGP_PRINT_NETGROUPS, "NETGROUP-FILE", 0, + "Validate the netgroups file and print it out"}, + {"print-exports", ARGP_PRINT_EXPORTS, "EXPORTS-FILE", 0, + "Validate the exports file and print it out"}, + {"volfile-max-fetch-attempts", ARGP_VOLFILE_MAX_FETCH_ATTEMPTS, "0", OPTION_HIDDEN, "Maximum number of attempts to fetch the volfile"}, {"aux-gfid-mount", ARGP_AUX_GFID_MOUNT_KEY, 0, 0, @@ -787,6 +796,14 @@ parse_opts (int key, char *arg, struct argp_state *state) cmd_args->worm = 1; break; + case ARGP_PRINT_NETGROUPS: + cmd_args->print_netgroups = arg; + break; + + case ARGP_PRINT_EXPORTS: + cmd_args->print_exports = arg; + break; + case ARGP_MAC_COMPAT_KEY: if (!arg) arg = "on"; @@ -1519,6 +1536,195 @@ gf_check_and_set_mem_acct (int argc, char *argv[]) } } +/** + * print_exports_file - Print out & verify the syntax + * of the exports file specified + * in the parameter. + * + * @exports_file : Path of the exports file to print & verify + * + * @return : success: 0 when successfully parsed + * failure: 1 when failed to parse one or more lines + * -1 when other critical errors (dlopen () etc) + * Critical errors are treated differently than parse errors. Critical + * errors terminate the program immediately here and print out different + * error messages. Hence there are different return values. + */ +int +print_exports_file (const char *exports_file) +{ + void *libhandle = NULL; + char *libpathfull = NULL; + struct exports_file *file = NULL; + int ret = 0; + + int (*exp_file_parse)(const char *filepath, + struct exports_file **expfile, + struct mount3_state *ms) = NULL; + void (*exp_file_print)(const struct exports_file *file) = NULL; + void (*exp_file_deinit)(struct exports_file *ptr) = NULL; + + /* XLATORDIR passed through a -D flag to GCC */ + ret = gf_asprintf (&libpathfull, "%s/%s/server.so", XLATORDIR, + "nfs"); + if (ret < 0) { + gf_log ("glusterfs", GF_LOG_CRITICAL, "asprintf () failed."); + ret = -1; + goto out; + } + + /* Load up the library */ + libhandle = dlopen (libpathfull, RTLD_NOW); + if (!libhandle) { + gf_log ("glusterfs", GF_LOG_CRITICAL, + "Error loading NFS server library : " + "%s\n", dlerror ()); + ret = -1; + goto out; + } + + /* Load up the function */ + exp_file_parse = dlsym (libhandle, "exp_file_parse"); + if (!exp_file_parse) { + gf_log ("glusterfs", GF_LOG_CRITICAL, + "Error finding function exp_file_parse " + "in symbol."); + ret = -1; + goto out; + } + + /* Parse the file */ + ret = exp_file_parse (exports_file, &file, NULL); + if (ret < 0) { + ret = 1; /* This means we failed to parse */ + goto out; + } + + /* Load up the function */ + exp_file_print = dlsym (libhandle, "exp_file_print"); + if (!exp_file_print) { + gf_log ("glusterfs", GF_LOG_CRITICAL, + "Error finding function exp_file_print in symbol."); + ret = -1; + goto out; + } + + /* Print it out to screen */ + exp_file_print (file); + + /* Load up the function */ + exp_file_deinit = dlsym (libhandle, "exp_file_deinit"); + if (!exp_file_deinit) { + gf_log ("glusterfs", GF_LOG_CRITICAL, + "Error finding function exp_file_deinit in lib."); + ret = -1; + goto out; + } + + /* Free the file */ + exp_file_deinit (file); + +out: + if (libhandle) + dlclose(libhandle); + GF_FREE (libpathfull); + return ret; +} + + +/** + * print_netgroups_file - Print out & verify the syntax + * of the netgroups file specified + * in the parameter. + * + * @netgroups_file : Path of the netgroups file to print & verify + * @return : success: 0 when successfully parsed + * failure: 1 when failed to parse one more more lines + * -1 when other critical errors (dlopen () etc) + * + * We have multiple returns here because for critical errors, we abort + * operations immediately and exit. For example, if we can't load the + * NFS server library, then we have a real bad problem so we don't continue. + * Or if we cannot allocate anymore memory, we don't want to continue. Also, + * we want to print out a different error messages based on the ret value. + */ +int +print_netgroups_file (const char *netgroups_file) +{ + void *libhandle = NULL; + char *libpathfull = NULL; + struct netgroups_file *file = NULL; + int ret = 0; + + struct netgroups_file *(*ng_file_parse)(const char *file_path) = NULL; + void (*ng_file_print)(const struct netgroups_file *file) = NULL; + void (*ng_file_deinit)(struct netgroups_file *ptr) = NULL; + + /* XLATORDIR passed through a -D flag to GCC */ + ret = gf_asprintf (&libpathfull, "%s/%s/server.so", XLATORDIR, + "nfs"); + if (ret < 0) { + gf_log ("glusterfs", GF_LOG_CRITICAL, "asprintf () failed."); + ret = -1; + goto out; + } + /* Load up the library */ + libhandle = dlopen (libpathfull, RTLD_NOW); + if (!libhandle) { + gf_log ("glusterfs", GF_LOG_CRITICAL, + "Error loading NFS server library : %s\n", dlerror ()); + ret = -1; + goto out; + } + + /* Load up the function */ + ng_file_parse = dlsym (libhandle, "ng_file_parse"); + if (!ng_file_parse) { + gf_log ("glusterfs", GF_LOG_CRITICAL, + "Error finding function ng_file_parse in symbol."); + ret = -1; + goto out; + } + + /* Parse the file */ + file = ng_file_parse (netgroups_file); + if (!file) { + ret = 1; /* This means we failed to parse */ + goto out; + } + + /* Load up the function */ + ng_file_print = dlsym (libhandle, "ng_file_print"); + if (!ng_file_print) { + gf_log ("glusterfs", GF_LOG_CRITICAL, + "Error finding function ng_file_print in symbol."); + ret = -1; + goto out; + } + + /* Print it out to screen */ + ng_file_print (file); + + /* Load up the function */ + ng_file_deinit = dlsym (libhandle, "ng_file_deinit"); + if (!ng_file_deinit) { + gf_log ("glusterfs", GF_LOG_CRITICAL, + "Error finding function ng_file_deinit in lib."); + ret = -1; + goto out; + } + + /* Free the file */ + ng_file_deinit (file); + +out: + if (libhandle) + dlclose(libhandle); + GF_FREE (libpathfull); + return ret; +} + + int parse_cmdline (int argc, char *argv[], glusterfs_ctx_t *ctx) { @@ -1539,6 +1745,22 @@ parse_cmdline (int argc, char *argv[], glusterfs_ctx_t *ctx) } argp_parse (&argp, argc, argv, ARGP_IN_ORDER, NULL, cmd_args); + if (cmd_args->print_netgroups) { + /* When this option is set we don't want to do anything else + * except for printing & verifying the netgroups file. + */ + ret = 0; + goto out; + } + + if (cmd_args->print_exports) { + /* When this option is set we don't want to do anything else + * except for printing & verifying the exports file. + */ + ret = 0; + goto out; + } + ctx->secure_mgmt = cmd_args->secure_mgmt; @@ -2006,6 +2228,7 @@ main (int argc, char *argv[]) glusterfs_ctx_t *ctx = NULL; int ret = -1; char cmdlinestr[PATH_MAX] = {0,}; + cmd_args_t *cmd = NULL; gf_check_and_set_mem_acct (argc, argv); @@ -2029,6 +2252,23 @@ main (int argc, char *argv[]) ret = parse_cmdline (argc, argv, ctx); if (ret) goto out; + cmd = &ctx->cmd_args; + if (cmd->print_netgroups) { + /* If this option is set we want to print & verify the file, + * set the return value (exit code in this case) and exit. + */ + ret = print_netgroups_file (cmd->print_netgroups); + goto out; + } + + if (cmd->print_exports) { + /* If this option is set we want to print & verify the file, + * set the return value (exit code in this case) + * and exit. + */ + ret = print_exports_file (cmd->print_exports); + goto out; + } ret = logging_init (ctx, argv[0]); if (ret) @@ -2074,6 +2314,5 @@ main (int argc, char *argv[]) out: // glusterfs_ctx_destroy (ctx); - return ret; } diff --git a/glusterfsd/src/glusterfsd.h b/glusterfsd/src/glusterfsd.h index 41f7b1d9a38..a16e0a65254 100644 --- a/glusterfsd/src/glusterfsd.h +++ b/glusterfsd/src/glusterfsd.h @@ -52,6 +52,8 @@ enum argp_option_keys { ARGP_SOCK_FILE_KEY = 'S', ARGP_NO_DAEMON_KEY = 'N', ARGP_RUN_ID_KEY = 'r', + ARGP_PRINT_NETGROUPS = 'n', + ARGP_PRINT_EXPORTS = 'e', ARGP_DEBUG_KEY = 133, ARGP_NEGATIVE_TIMEOUT_KEY = 134, ARGP_ENTRY_TIMEOUT_KEY = 135, diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h index 5a82d753879..adcff8cd274 100644 --- a/libglusterfs/src/glusterfs.h +++ b/libglusterfs/src/glusterfs.h @@ -387,6 +387,8 @@ struct _cmd_args { uint32_t log_buf_size; uint32_t log_flush_timeout; int32_t max_connect_attempts; + char *print_exports; + char *print_netgroups; /* advanced options */ uint32_t volfile_server_port; char *volfile_server_transport; diff --git a/libglusterfs/src/mem-types.h b/libglusterfs/src/mem-types.h index 4dd59b002a5..a24e5731114 100644 --- a/libglusterfs/src/mem-types.h +++ b/libglusterfs/src/mem-types.h @@ -145,6 +145,9 @@ enum gf_common_mem_types_ { gf_common_mt_rbuf_t = 127, gf_common_mt_rlist_t = 128, gf_common_mt_rvec_t = 129, + /* glusterd can load the nfs-xlator dynamically and needs these two */ + gf_common_mt_nfs_netgroups = 130, + gf_common_mt_nfs_exports = 131, gf_common_mt_end }; #endif diff --git a/tests/basic/exports_parsing.t b/tests/basic/exports_parsing.t new file mode 100644 index 00000000000..fdaf9c2822e --- /dev/null +++ b/tests/basic/exports_parsing.t @@ -0,0 +1,44 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +EXP_FILES=$(dirname $0)/../configfiles + +cleanup + +function test_good_file () +{ + glusterfsd --print-exports $1 +} + +function test_long_netgroup() +{ + glusterfsd --print-exports $1 2>&1 | sed -n 1p +} + +function test_bad_line () +{ + glusterfsd --print-exports $1 2>&1 | sed -n 1p +} + +function test_big_file () +{ + glusterfsd --print-exports $1 | sed -n 3p +} + +function test_bad_opt () +{ + glusterfsd --print-exports $1 2>&1 | sed -n 1p +} + +EXPECT_KEYWORD "/test @test(rw,anonuid=0,sec=sys,) 10.35.11.31(rw,anonuid=0,sec=sys,)" test_good_file $EXP_FILES/exports + +EXPECT_KEYWORD "Error parsing netgroups for:" test_bad_line $EXP_FILES/bad_exports +EXPECT_KEYWORD "Error parsing netgroups for:" test_long_netgroup $EXP_FILES/bad_exports + +EXPECT_KEYWORD "HDCDTY43SXOAH1TNUKB23MO9DE574W(rw,anonuid=0,sec=sys,)" test_big_file $EXP_FILES/big_exports + +EXPECT_KEYWORD "Could not find any valid options" test_bad_opt $EXP_FILES/exports_bad_opt + +cleanup diff --git a/tests/basic/netgroup_parsing.t b/tests/basic/netgroup_parsing.t new file mode 100644 index 00000000000..73a69c44cea --- /dev/null +++ b/tests/basic/netgroup_parsing.t @@ -0,0 +1,50 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +NG_FILES=$(dirname $0)/../configfiles +cleanup; + +function test_ng_1 () +{ + glusterfsd --print-netgroups $1 | sed -n 1p +} + +function test_ng_2 () +{ + glusterfsd --print-netgroups $1 | sed -n 2p +} + +function test_ng_3 () +{ + glusterfsd --print-netgroups $1 | sed -n 3p +} + +function test_bad_ng () +{ + glusterfsd --print-netgroups $1 2>&1 | sed -n 1p +} + +function test_large_file () +{ + # The build system needs this path for the test to pass. + # This is an important test because this file is ~1800 lines + # longs and is a "real-world" netgroups file. + glusterfsd --print-netgroups ~/opsfiles/storage/netgroup/netgroup | sed -n 1p +} + +function test_empty_ng () +{ + glusterfsd --print-netgroups $1 2>&1 | sed -n 2p +} + +EXPECT_KEYWORD "ng2 (dev1763.prn2.example.com,,)" test_ng_1 $NG_FILES/netgroups +EXPECT_KEYWORD "ng1 ng2 (dev1763.prn2.example.com,,)" test_ng_2 $NG_FILES/netgroups +EXPECT_KEYWORD "asdf ng1 ng2 (dev1763.prn2.example.com,,)" test_ng_3 $NG_FILES/netgroups +# TODO: get a real-world large netgroup file +#EXPECT_KEYWORD "wikipedia001.07.prn1 (wikipedia003.prn1.example.com,,)(wikipedia002.prn1.example.com,,)(wikipedia001.prn1.example.com,,)" test_large_file +EXPECT_KEYWORD "Parse error" test_bad_ng $NG_FILES/bad_netgroups +EXPECT_KEYWORD "No netgroups were specified except for the parent" test_empty_ng $NG_FILES/bad_netgroups + +cleanup; diff --git a/tests/configfiles/bad_exports b/tests/configfiles/bad_exports new file mode 100644 index 00000000000..6fd18d9415a --- /dev/null +++ b/tests/configfiles/bad_exports @@ -0,0 +1,9 @@ +#$Id$ +#/0838586658093758013308385866580937580133083858665809375801330838586658093758013308385866580937580133083858665809375801330838586658093758013308385866580937580133 @test(sec=sys,rw,anonuid=0) 10.35.11.32(sec=sys,rw,anonuid=0) + +/test @test(sec=sys,rw,anonuid=0) shreyas.facebook.com(sec=sys,rw,anonuid=0) shreyas.s(sec=sys,rw,anonuid=595) +çççßåß僃 +/asdf @ObVyg571RJaorkGbgVerI9esrck8yiVD7NVqqJvj2H9DuPH3SzHnYLIXjd4zZjuuh2N0O0bYYQf7VYNrYHoxc1llgRU1iEsQRy2XaWnUlhTHKVEL8tt1TrbZCi8qXyg0l058rTnW4msvU5hW83ESwyOE4bBSz4VsW0sJaVd8Gv4waZqojemLN8AIlAoChVOfP1yhuAP1298ejkaf2fjhdfa4t4effhgadff342fdddgasdg42gahgdmnui24290hfjdjadgdkjhg2nvncms(sec=sys,rw,anonuid=1) +#/vol/root -sec=sys,rw=@storage.prn1:@storage.ash4:@storage.frc1,anon=0 +#/vol/home107 -sec=sys,rw,nosuid,root=@storage.prn1:@storage.ash4:@storage.frc1:@hr.ash3:@hr.prn1:ldap001.prn1.facebook.com:ldap001.frc1.facebook.com +#/vol/home109 -sec=sys,rw,nosuid,root=@storage.prn1:@storage.ash4:@storage.frc1:@hr.ash3:@hr.prn1:ldap001.prn1.facebook.com:ldap001.frc1.facebook.com diff --git a/tests/configfiles/bad_netgroups b/tests/configfiles/bad_netgroups new file mode 100644 index 00000000000..ea27edfef10 --- /dev/null +++ b/tests/configfiles/bad_netgroups @@ -0,0 +1,5 @@ +asdf ng1 +ng1 ng2 +ng2 (dev1763.prn2.facebook.com, ,) + +emptyng diff --git a/tests/configfiles/big_exports b/tests/configfiles/big_exports new file mode 100644 index 00000000000..9ca5d655664 --- /dev/null +++ b/tests/configfiles/big_exports @@ -0,0 +1,10 @@ +/75213U8JV58PBY7F0VFGJ080MH3K71 @ZXV3UE7WJSCZSPMPAYUBACCZUOD0XY(sec=sys,rw,anonuid=0) 9PAC2KCTKRIH62CPGAMAUAJGLVQNS3(sec=sys,rw,anonuid=0) +/O4DYT8D6QVS9EKEHTYOPTYL6IWU4DN @KLBH3LB3UN5LWDWPPQEQWEHYVL3K0A(sec=sys,rw,anonuid=0) B37PXMCQMY5IQPDGV08XC7ITYT650V(sec=sys,rw,anonuid=0) +/OFHJLTKZMDAN28Q9IQQQIPFUEZ2YAN @UY3K3B8C05OQ4OTX42VXQKJ2CGJ8QX(sec=sys,rw,anonuid=0) AM0ET70HT6YND7D8RKG446LEOW40EC(sec=sys,rw,anonuid=0) +/3VDZ2JHFQ2JGF2GQGYQH38UPAW6A6T @DEPUVDYZOJFCSQ7KD07NVPAFGEG7YJ(sec=sys,rw,anonuid=0) 5HI538NCEYF7KY7HC1F69UBWFVTIGA(sec=sys,rw,anonuid=0) +/4ZI3ZRJUNQM21ZM8VB891X4ZCUHK7E @7U8TNSZ55AWJAOPAIV67OGPWLGM4JV(sec=sys,rw,anonuid=0) 8698JR9V4KKENE7UGYHV3T4XG9K0NH(sec=sys,rw,anonuid=0) +/A4CSZ2FQ3VYPT9R0HYN3QVQ7TK9IHI @G2Z45H649YZ9WNC3OSU7STCLT3VWT9(sec=sys,rw,anonuid=0) 65CA94Z7JXZ0F0JB5EP95I6FBJT673(sec=sys,rw,anonuid=0) +/G91PI0EX5TUYSX91IAH49M1GEMNKSP @O5IFIYJUENNNK16U0FK0QCDE0DK9G2(sec=sys,rw,anonuid=0) A8AZTTWC7BMTV8YW8XE4R57WUOSUMZ(sec=sys,rw,anonuid=0) +/YCZFA0ALYC284R60E7QXQN7AVSILFO @7OGJV2J1NOII7UOGN12SUNRW3XBWWG(sec=sys,rw,anonuid=0) HDCDTY43SXOAH1TNUKB23MO9DE574W(sec=sys,rw,anonuid=0) +/VBGB57O8R87B9N4E8QPGU6D55DVZE5 @F95KY58VAUOUX30QKIN16U987UU9BE(sec=sys,rw,anonuid=0) WGSH35L15FT2IC0IT9PTCU8SCYW9W4(sec=sys,rw,anonuid=0) +/NTHST2FDSP35BKEEIOQIQX38722AN0 @T9BXSDXF2N5HVOM8P1BN0Q5IQ6RC34(sec=sys,rw,anonuid=0) OLJR1KXJRY14UEZNV1LP7RV68KPIW7(sec=sys,rw,anonuid=0) diff --git a/tests/configfiles/exports b/tests/configfiles/exports new file mode 100644 index 00000000000..82ba450403e --- /dev/null +++ b/tests/configfiles/exports @@ -0,0 +1 @@ +/test @test(sec=sys,rw,anonuid=0) 10.35.11.31(sec=sys,rw,anonuid=0) diff --git a/tests/configfiles/exports_bad_opt b/tests/configfiles/exports_bad_opt new file mode 100644 index 00000000000..70a56890e4c --- /dev/null +++ b/tests/configfiles/exports_bad_opt @@ -0,0 +1 @@ +/groot asdf(r) @ngtop(r) diff --git a/tests/configfiles/netgroups b/tests/configfiles/netgroups new file mode 100644 index 00000000000..a4ed2c53df4 --- /dev/null +++ b/tests/configfiles/netgroups @@ -0,0 +1,3 @@ +asdf ng1 +ng1 ng2 +ng2 (dev1763.prn2.example.com,,) diff --git a/xlators/nfs/server/src/exports.c b/xlators/nfs/server/src/exports.c index 793e020dd1f..af0cc7c24f2 100644 --- a/xlators/nfs/server/src/exports.c +++ b/xlators/nfs/server/src/exports.c @@ -77,7 +77,7 @@ _exports_file_init () { struct exports_file *file = NULL; - file = GF_CALLOC (1, sizeof (*file), gf_nfs_mt_exports); + file = GF_CALLOC (1, sizeof (*file), gf_common_mt_nfs_exports); if (!file) { gf_log (GF_EXP, GF_LOG_CRITICAL, "Failed to allocate file struct!"); @@ -123,8 +123,10 @@ _exp_file_dict_destroy (dict_t *dict, char *key, data_t *val, void *tmp) if (val) { dir = (struct export_dir *)val->data; - _export_dir_deinit (dir); - val->data = NULL; + if (dir) { + _export_dir_deinit (dir); + val->data = NULL; + } dict_del (dict, key); } @@ -175,7 +177,7 @@ static struct export_dir * _export_dir_init () { struct export_dir *expdir = GF_CALLOC (1, sizeof (*expdir), - gf_nfs_mt_exports); + gf_common_mt_nfs_exports); if (!expdir) gf_log (GF_EXP, GF_LOG_CRITICAL, @@ -234,7 +236,7 @@ static struct export_item * _export_item_init () { struct export_item *item = GF_CALLOC (1, sizeof (*item), - gf_nfs_mt_exports); + gf_common_mt_nfs_exports); if (!item) gf_log (GF_EXP, GF_LOG_CRITICAL, @@ -273,7 +275,7 @@ static struct export_options * _export_options_init () { struct export_options *opts = GF_CALLOC (1, sizeof (*opts), - gf_nfs_mt_exports); + gf_common_mt_nfs_exports); if (!opts) gf_log (GF_EXP, GF_LOG_CRITICAL, diff --git a/xlators/nfs/server/src/netgroups.c b/xlators/nfs/server/src/netgroups.c index f5c966948f7..a505586961c 100644 --- a/xlators/nfs/server/src/netgroups.c +++ b/xlators/nfs/server/src/netgroups.c @@ -73,7 +73,7 @@ static struct netgroups_file * _netgroups_file_init () { struct netgroups_file *file = GF_MALLOC (sizeof (*file), - gf_nfs_mt_netgroups); + gf_common_mt_nfs_netgroups); if (!file) goto out; @@ -179,7 +179,7 @@ static struct netgroup_entry * _netgroup_entry_init () { struct netgroup_entry *entry = GF_CALLOC (1, sizeof (*entry), - gf_nfs_mt_netgroups); + gf_common_mt_nfs_netgroups); return entry; } @@ -324,7 +324,7 @@ static struct netgroup_host * _netgroup_host_init () { struct netgroup_host *host = GF_CALLOC (1, sizeof (*host), - gf_nfs_mt_netgroups); + gf_common_mt_nfs_netgroups); return host; } diff --git a/xlators/nfs/server/src/nfs-mem-types.h b/xlators/nfs/server/src/nfs-mem-types.h index 6d4a2ed9cc2..88c688f74f3 100644 --- a/xlators/nfs/server/src/nfs-mem-types.h +++ b/xlators/nfs/server/src/nfs-mem-types.h @@ -47,8 +47,6 @@ enum gf_nfs_mem_types_ { gf_nfs_mt_aux_gids, gf_nfs_mt_inode_ctx, gf_nfs_mt_auth_spec, - gf_nfs_mt_netgroups, - gf_nfs_mt_exports, gf_nfs_mt_arr, gf_nfs_mt_auth_cache, gf_nfs_mt_auth_cache_entry, |