xlator: make 'xlator_api' mandatory
* Remove the options to load old symbol. * keep only 'xlator_api' symbol from being exported using xlator.sym * add xlator_api to all the xlators where its missing NOTE: This covers all the xlators which has at least a test case to validate its loading. If there is a translator, which doesn't have any test, then we should probably remove that from codebase. fixes: #164 Change-Id: Ibcdc8c9844cda6b4463d907a15813745d14c1ebb Signed-off-by: Amar Tumballi <amarts@redhat.com>
This commit is contained in:
parent
088e2cbb5e
commit
af7e957b49
@ -169,6 +169,21 @@ struct xlator_dumpops dumpops;
|
|||||||
|
|
||||||
struct xlator_fops fops;
|
struct xlator_fops fops;
|
||||||
|
|
||||||
struct xlator_cbks cbks = {.forget = glfs_forget,
|
struct xlator_cbks cbks = {
|
||||||
.release = glfs_release,
|
.forget = glfs_forget,
|
||||||
.releasedir = glfs_releasedir};
|
.release = glfs_release,
|
||||||
|
.releasedir = glfs_releasedir,
|
||||||
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.notify = notify,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {1},
|
||||||
|
.dumpops = &dumpops,
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.identifier = "glfs-api",
|
||||||
|
.category = GF_MAINTAINED,
|
||||||
|
};
|
||||||
|
@ -866,13 +866,6 @@ struct _xlator {
|
|||||||
uint32_t notify_down;
|
uint32_t notify_down;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int32_t (*init)(xlator_t *this);
|
|
||||||
void (*fini)(xlator_t *this);
|
|
||||||
int32_t (*reconfigure)(xlator_t *this, dict_t *options);
|
|
||||||
event_notify_fn_t notify;
|
|
||||||
} class_methods_t;
|
|
||||||
|
|
||||||
/* This would be the only structure which needs to be exported by
|
/* This would be the only structure which needs to be exported by
|
||||||
the translators. For the backward compatibility, in 4.x series
|
the translators. For the backward compatibility, in 4.x series
|
||||||
even the old exported fields will be supported */
|
even the old exported fields will be supported */
|
||||||
|
@ -214,26 +214,16 @@ xlator_volopt_dynload(char *xlator_type, void **dl_handle,
|
|||||||
/* check new struct first, and then check this */
|
/* check new struct first, and then check this */
|
||||||
xlapi = dlsym(handle, "xlator_api");
|
xlapi = dlsym(handle, "xlator_api");
|
||||||
if (!xlapi) {
|
if (!xlapi) {
|
||||||
gf_msg("xlator", GF_LOG_DEBUG, 0, LG_MSG_DLSYM_ERROR,
|
gf_msg("xlator", GF_LOG_ERROR, 0, LG_MSG_DLSYM_ERROR,
|
||||||
"dlsym(xlator_api) on %s. "
|
"dlsym(xlator_api) missing: %s", dlerror());
|
||||||
"Fall back to old symbols",
|
goto out;
|
||||||
dlerror());
|
}
|
||||||
/* This case is not an error for now, so allow it
|
|
||||||
to fall back to old methods. */
|
opt_list->given_opt = xlapi->options;
|
||||||
opt_list->given_opt = dlsym(handle, "options");
|
if (!opt_list->given_opt) {
|
||||||
if (!opt_list->given_opt) {
|
gf_msg("xlator", GF_LOG_ERROR, 0, LG_MSG_LOAD_FAILED,
|
||||||
dlerror();
|
"Failed to load xlator options table");
|
||||||
gf_msg("xlator", GF_LOG_ERROR, 0, LG_MSG_LOAD_FAILED,
|
goto out;
|
||||||
"Failed to load xlator opt table");
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
opt_list->given_opt = xlapi->options;
|
|
||||||
if (!opt_list->given_opt) {
|
|
||||||
gf_msg("xlator", GF_LOG_ERROR, 0, LG_MSG_LOAD_FAILED,
|
|
||||||
"Failed to load xlator options table");
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*dl_handle = handle;
|
*dl_handle = handle;
|
||||||
@ -249,110 +239,8 @@ out:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
static int
|
||||||
xlator_dynload_oldway(xlator_t *xl)
|
xlator_dynload_apis(xlator_t *xl)
|
||||||
{
|
|
||||||
int i = 0;
|
|
||||||
int ret = -1;
|
|
||||||
void *handle = NULL;
|
|
||||||
volume_opt_list_t *vol_opt = NULL;
|
|
||||||
class_methods_t *vtbl = NULL;
|
|
||||||
|
|
||||||
handle = xl->dlhandle;
|
|
||||||
|
|
||||||
xl->fops = dlsym(handle, "fops");
|
|
||||||
if (!xl->fops) {
|
|
||||||
gf_msg("xlator", GF_LOG_WARNING, 0, LG_MSG_DLSYM_ERROR,
|
|
||||||
"dlsym(fops) on %s", dlerror());
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
xl->cbks = dlsym(handle, "cbks");
|
|
||||||
if (!xl->cbks) {
|
|
||||||
gf_msg("xlator", GF_LOG_WARNING, 0, LG_MSG_DLSYM_ERROR,
|
|
||||||
"dlsym(cbks) on %s", dlerror());
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If class_methods exists, its contents override any definitions of
|
|
||||||
* init or fini for that translator. Otherwise, we fall back to the
|
|
||||||
* older method of looking for init and fini directly.
|
|
||||||
*/
|
|
||||||
vtbl = dlsym(handle, "class_methods");
|
|
||||||
if (vtbl) {
|
|
||||||
xl->init = vtbl->init;
|
|
||||||
xl->fini = vtbl->fini;
|
|
||||||
xl->reconfigure = vtbl->reconfigure;
|
|
||||||
xl->notify = vtbl->notify;
|
|
||||||
} else {
|
|
||||||
if (!(*VOID(&xl->init) = dlsym(handle, "init"))) {
|
|
||||||
gf_msg("xlator", GF_LOG_WARNING, 0, LG_MSG_DLSYM_ERROR,
|
|
||||||
"dlsym(init) on %s", dlerror());
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(*VOID(&(xl->fini)) = dlsym(handle, "fini"))) {
|
|
||||||
gf_msg("xlator", GF_LOG_WARNING, 0, LG_MSG_DLSYM_ERROR,
|
|
||||||
"dlsym(fini) on %s", dlerror());
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
if (!(*VOID(&(xl->reconfigure)) = dlsym(handle, "reconfigure"))) {
|
|
||||||
gf_msg_trace("xlator", 0,
|
|
||||||
"dlsym(reconfigure) on %s "
|
|
||||||
"-- neglecting",
|
|
||||||
dlerror());
|
|
||||||
}
|
|
||||||
if (!(*VOID(&(xl->notify)) = dlsym(handle, "notify"))) {
|
|
||||||
gf_msg_trace("xlator", 0,
|
|
||||||
"dlsym(notify) on %s -- "
|
|
||||||
"neglecting",
|
|
||||||
dlerror());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(xl->dumpops = dlsym(handle, "dumpops"))) {
|
|
||||||
gf_msg_trace("xlator", 0,
|
|
||||||
"dlsym(dumpops) on %s -- "
|
|
||||||
"neglecting",
|
|
||||||
dlerror());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(*VOID(&(xl->mem_acct_init)) = dlsym(handle, "mem_acct_init"))) {
|
|
||||||
gf_msg_trace(xl->name, 0,
|
|
||||||
"dlsym(mem_acct_init) on %s -- "
|
|
||||||
"neglecting",
|
|
||||||
dlerror());
|
|
||||||
}
|
|
||||||
|
|
||||||
vol_opt = GF_CALLOC(1, sizeof(volume_opt_list_t),
|
|
||||||
gf_common_mt_volume_opt_list_t);
|
|
||||||
|
|
||||||
if (!vol_opt) {
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
INIT_LIST_HEAD(&vol_opt->list);
|
|
||||||
vol_opt->given_opt = dlsym(handle, "options");
|
|
||||||
if (!vol_opt->given_opt) {
|
|
||||||
vol_opt->given_opt = default_options;
|
|
||||||
}
|
|
||||||
list_add_tail(&vol_opt->list, &xl->volume_options);
|
|
||||||
|
|
||||||
/* make sure 'min' is set to high value, so it would be
|
|
||||||
properly set later */
|
|
||||||
for (i = 0; i < GF_FOP_MAXVALUE; i++) {
|
|
||||||
xl->stats.interval.latencies[i].min = 0xffffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
out:
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
xlator_dynload_newway(xlator_t *xl)
|
|
||||||
{
|
{
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
void *handle = NULL;
|
void *handle = NULL;
|
||||||
@ -363,13 +251,9 @@ xlator_dynload_newway(xlator_t *xl)
|
|||||||
|
|
||||||
xlapi = dlsym(handle, "xlator_api");
|
xlapi = dlsym(handle, "xlator_api");
|
||||||
if (!xlapi) {
|
if (!xlapi) {
|
||||||
gf_msg("xlator", GF_LOG_INFO, 0, LG_MSG_DLSYM_ERROR,
|
gf_msg("xlator", GF_LOG_ERROR, 0, LG_MSG_DLSYM_ERROR,
|
||||||
"dlsym(xlator_api) on %s. "
|
"dlsym(xlator_api) missing: %s", dlerror());
|
||||||
"Fall back to old symbols",
|
ret = -1;
|
||||||
dlerror());
|
|
||||||
/* This case is not an error for now, so allow it
|
|
||||||
to fall back to old methods. */
|
|
||||||
ret = 1;
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -492,15 +376,9 @@ xlator_dynload(xlator_t *xl)
|
|||||||
}
|
}
|
||||||
xl->dlhandle = handle;
|
xl->dlhandle = handle;
|
||||||
|
|
||||||
ret = xlator_dynload_newway(xl);
|
ret = xlator_dynload_apis(xl);
|
||||||
if (-1 == ret)
|
if (-1 == ret)
|
||||||
goto out;
|
goto out;
|
||||||
if (1 == ret) {
|
|
||||||
/* it means we don't find the new symbol in xlator code */
|
|
||||||
ret = xlator_dynload_oldway(xl);
|
|
||||||
if (-1 == ret)
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
fill_defaults(xl);
|
fill_defaults(xl);
|
||||||
|
|
||||||
|
@ -14,19 +14,13 @@ dht_la_SOURCES = $(dht_common_source) dht.c
|
|||||||
nufa_la_SOURCES = $(dht_common_source) nufa.c
|
nufa_la_SOURCES = $(dht_common_source) nufa.c
|
||||||
switch_la_SOURCES = $(dht_common_source) switch.c
|
switch_la_SOURCES = $(dht_common_source) switch.c
|
||||||
|
|
||||||
dht_la_LDFLAGS = -module \
|
dht_la_LDFLAGS = -module $(GF_XLATOR_DEFAULT_LDFLAGS)
|
||||||
-export-symbols $(top_srcdir)/xlators/cluster/dht/src/dht.sym \
|
|
||||||
$(GF_XLATOR_LDFLAGS)
|
|
||||||
dht_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
|
dht_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
|
||||||
|
|
||||||
nufa_la_LDFLAGS = -module \
|
nufa_la_LDFLAGS = -module $(GF_XLATOR_DEFAULT_LDFLAGS)
|
||||||
-export-symbols $(top_srcdir)/xlators/cluster/dht/src/nufa.sym \
|
|
||||||
$(GF_XLATOR_LDFLAGS)
|
|
||||||
nufa_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
|
nufa_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
|
||||||
|
|
||||||
switch_la_LDFLAGS = -module \
|
switch_la_LDFLAGS = -module $(GF_XLATOR_DEFAULT_LDFLAGS)
|
||||||
-export-symbols $(top_srcdir)/xlators/cluster/dht/src/switch.sym \
|
|
||||||
$(GF_XLATOR_LDFLAGS)
|
|
||||||
switch_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
|
switch_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
|
||||||
|
|
||||||
noinst_HEADERS = dht-common.h dht-mem-types.h dht-messages.h \
|
noinst_HEADERS = dht-common.h dht-mem-types.h dht-messages.h \
|
||||||
@ -41,8 +35,6 @@ AM_CPPFLAGS = $(GF_CPPFLAGS) -I$(top_srcdir)/libglusterfs/src \
|
|||||||
|
|
||||||
CLEANFILES =
|
CLEANFILES =
|
||||||
|
|
||||||
EXTRA_DIST = dht.sym nufa.sym switch.sym
|
|
||||||
|
|
||||||
uninstall-local:
|
uninstall-local:
|
||||||
rm -f $(DESTDIR)$(xlatordir)/distribute.so
|
rm -f $(DESTDIR)$(xlatordir)/distribute.so
|
||||||
|
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
xlator_api
|
|
||||||
fops
|
|
||||||
cbks
|
|
||||||
class_methods
|
|
||||||
dht_methods
|
|
||||||
options
|
|
||||||
mem_acct_init
|
|
||||||
reconfigure
|
|
||||||
dumpops
|
|
@ -599,11 +599,6 @@ dht_methods_t dht_methods = {
|
|||||||
.layout_search = dht_layout_search,
|
.layout_search = dht_layout_search,
|
||||||
};
|
};
|
||||||
|
|
||||||
class_methods_t class_methods = {.init = nufa_init,
|
|
||||||
.fini = dht_fini,
|
|
||||||
.reconfigure = dht_reconfigure,
|
|
||||||
.notify = dht_notify};
|
|
||||||
|
|
||||||
struct xlator_fops fops = {
|
struct xlator_fops fops = {
|
||||||
.lookup = nufa_lookup,
|
.lookup = nufa_lookup,
|
||||||
.create = nufa_create,
|
.create = nufa_create,
|
||||||
@ -645,3 +640,19 @@ struct xlator_fops fops = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct xlator_cbks cbks = {.forget = dht_forget};
|
struct xlator_cbks cbks = {.forget = dht_forget};
|
||||||
|
extern int32_t
|
||||||
|
mem_acct_init(xlator_t *this);
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = nufa_init,
|
||||||
|
.fini = dht_fini,
|
||||||
|
.notify = dht_notify,
|
||||||
|
.reconfigure = dht_reconfigure,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {1}, /* Present from the initial version */
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = dht_options,
|
||||||
|
.identifier = "nufa",
|
||||||
|
.category = GF_TECH_PREVIEW,
|
||||||
|
};
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
fops
|
|
||||||
cbks
|
|
||||||
class_methods
|
|
||||||
dht_methods
|
|
||||||
options
|
|
||||||
mem_acct_init
|
|
||||||
reconfigure
|
|
||||||
dumpops
|
|
@ -823,11 +823,6 @@ err:
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
class_methods_t class_methods = {.init = switch_init,
|
|
||||||
.fini = switch_fini,
|
|
||||||
.reconfigure = dht_reconfigure,
|
|
||||||
.notify = dht_notify};
|
|
||||||
|
|
||||||
struct xlator_fops fops = {
|
struct xlator_fops fops = {
|
||||||
.lookup = switch_lookup,
|
.lookup = switch_lookup,
|
||||||
.create = switch_create,
|
.create = switch_create,
|
||||||
@ -869,3 +864,19 @@ struct xlator_fops fops = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct xlator_cbks cbks = {.forget = dht_forget};
|
struct xlator_cbks cbks = {.forget = dht_forget};
|
||||||
|
extern int32_t
|
||||||
|
mem_acct_init(xlator_t *this);
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = switch_init,
|
||||||
|
.fini = switch_fini,
|
||||||
|
.notify = dht_notify,
|
||||||
|
.reconfigure = dht_reconfigure,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {1}, /* Present from the initial version */
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = dht_options,
|
||||||
|
.identifier = "switch",
|
||||||
|
.category = GF_TECH_PREVIEW,
|
||||||
|
};
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
fops
|
|
||||||
cbks
|
|
||||||
class_methods
|
|
||||||
dht_methods
|
|
||||||
options
|
|
||||||
mem_acct_init
|
|
||||||
reconfigure
|
|
||||||
dumpops
|
|
@ -1666,4 +1666,22 @@ struct volume_options options[] = {
|
|||||||
"specially for sequential writes. However, this will also"
|
"specially for sequential writes. However, this will also"
|
||||||
"lead to extra memory consumption, maximum "
|
"lead to extra memory consumption, maximum "
|
||||||
"(cache size * stripe size) Bytes per open file."},
|
"(cache size * stripe size) Bytes per open file."},
|
||||||
{.key = {NULL}}};
|
{
|
||||||
|
.key = {NULL},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.notify = notify,
|
||||||
|
.reconfigure = reconfigure,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {1},
|
||||||
|
.dumpops = &dumpops,
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "disperse",
|
||||||
|
.category = GF_MAINTAINED,
|
||||||
|
};
|
||||||
|
@ -679,4 +679,19 @@ struct volume_options options[] = {
|
|||||||
.default_value = "",
|
.default_value = "",
|
||||||
},
|
},
|
||||||
|
|
||||||
{.key = {NULL}}};
|
{.key = {NULL}},
|
||||||
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.notify = notify,
|
||||||
|
.reconfigure = reconfigure,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {GD_OP_VERSION_3_12_0},
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "delay-gen",
|
||||||
|
.category = GF_TECH_PREVIEW,
|
||||||
|
};
|
||||||
|
@ -1644,4 +1644,19 @@ struct volume_options options[] = {
|
|||||||
.flags = OPT_FLAG_SETTABLE,
|
.flags = OPT_FLAG_SETTABLE,
|
||||||
},
|
},
|
||||||
|
|
||||||
{.key = {NULL}}};
|
{.key = {NULL}},
|
||||||
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.reconfigure = reconfigure,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {1},
|
||||||
|
.dumpops = &dumpops,
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "error-gen",
|
||||||
|
.category = GF_TECH_PREVIEW,
|
||||||
|
};
|
||||||
|
@ -80,3 +80,15 @@ struct xlator_cbks cbks = {};
|
|||||||
struct volume_options options[] = {
|
struct volume_options options[] = {
|
||||||
{.key = {NULL}},
|
{.key = {NULL}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.notify = notify,
|
||||||
|
.op_version = {GD_OP_VERSION_3_12_0},
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "sink",
|
||||||
|
.category = GF_TECH_PREVIEW,
|
||||||
|
};
|
||||||
|
@ -3520,3 +3520,17 @@ struct volume_options options[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct xlator_dumpops dumpops = {.history = trace_dump_history};
|
struct xlator_dumpops dumpops = {.history = trace_dump_history};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.reconfigure = reconfigure,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {1},
|
||||||
|
.dumpops = &dumpops,
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "trace",
|
||||||
|
.category = GF_TECH_PREVIEW,
|
||||||
|
};
|
||||||
|
@ -334,3 +334,15 @@ struct volume_options options[] = {
|
|||||||
"to disk as a gzip file."},
|
"to disk as a gzip file."},
|
||||||
{.key = {NULL}},
|
{.key = {NULL}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {GD_OP_VERSION_3_9_0},
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "cdc",
|
||||||
|
.category = GF_TECH_PREVIEW,
|
||||||
|
};
|
||||||
|
@ -1408,3 +1408,15 @@ struct volume_options options[] = {
|
|||||||
/* This translator doesn't take any options, or provide any options */
|
/* This translator doesn't take any options, or provide any options */
|
||||||
{.key = {NULL}},
|
{.key = {NULL}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {1},
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "gfid-access",
|
||||||
|
.category = GF_MAINTAINED,
|
||||||
|
};
|
||||||
|
@ -1330,3 +1330,16 @@ struct volume_options options[] = {
|
|||||||
},
|
},
|
||||||
{.key = {NULL}},
|
{.key = {NULL}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.reconfigure = reconfigure,
|
||||||
|
.op_version = {GD_OP_VERSION_3_12_0},
|
||||||
|
.dumpops = &dumpops,
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "namespace",
|
||||||
|
.category = GF_TECH_PREVIEW,
|
||||||
|
};
|
||||||
|
@ -2664,3 +2664,18 @@ struct volume_options options[] = {
|
|||||||
"the thin clients can failover to."},
|
"the thin clients can failover to."},
|
||||||
{.key = {NULL}},
|
{.key = {NULL}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.notify = notify,
|
||||||
|
.reconfigure = reconfigure,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {GD_OP_VERSION_3_12_0},
|
||||||
|
.dumpops = &dumpops,
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "quiesce",
|
||||||
|
.category = GF_TECH_PREVIEW,
|
||||||
|
};
|
||||||
|
@ -4,7 +4,7 @@ endif
|
|||||||
xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
|
xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
|
||||||
|
|
||||||
quota_la_LDFLAGS = -module $(GF_XLATOR_DEFAULT_LDFLAGS)
|
quota_la_LDFLAGS = -module $(GF_XLATOR_DEFAULT_LDFLAGS)
|
||||||
quotad_la_LDFLAGS = -module -export-symbols $(top_srcdir)/xlators/features/quota/src/quotad.sym $(GF_XLATOR_LDFLAGS)
|
quotad_la_LDFLAGS = -module $(GF_XLATOR_DEFAULT_LDFLAGS)
|
||||||
|
|
||||||
quota_la_SOURCES = quota.c quota-enforcer-client.c
|
quota_la_SOURCES = quota.c quota-enforcer-client.c
|
||||||
quota_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \
|
quota_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \
|
||||||
@ -27,6 +27,3 @@ AM_CPPFLAGS = $(GF_CPPFLAGS) -I$(top_srcdir)/libglusterfs/src \
|
|||||||
AM_CFLAGS = -Wall $(GF_CFLAGS)
|
AM_CFLAGS = -Wall $(GF_CFLAGS)
|
||||||
|
|
||||||
CLEANFILES =
|
CLEANFILES =
|
||||||
|
|
||||||
EXTRA_DIST = quotad.sym
|
|
||||||
|
|
||||||
|
@ -220,11 +220,6 @@ err:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
class_methods_t class_methods = {.init = qd_init,
|
|
||||||
.fini = qd_fini,
|
|
||||||
.reconfigure = qd_reconfigure,
|
|
||||||
.notify = qd_notify};
|
|
||||||
|
|
||||||
struct xlator_fops fops = {};
|
struct xlator_fops fops = {};
|
||||||
|
|
||||||
struct xlator_cbks cbks = {};
|
struct xlator_cbks cbks = {};
|
||||||
@ -240,4 +235,19 @@ struct volume_options options[] = {
|
|||||||
.key = {"transport.*"},
|
.key = {"transport.*"},
|
||||||
.type = GF_OPTION_TYPE_ANY,
|
.type = GF_OPTION_TYPE_ANY,
|
||||||
},
|
},
|
||||||
{.key = {NULL}}};
|
{.key = {NULL}},
|
||||||
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = qd_init,
|
||||||
|
.fini = qd_fini,
|
||||||
|
.reconfigure = qd_reconfigure,
|
||||||
|
.notify = qd_notify,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {1},
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "quotad",
|
||||||
|
.category = GF_MAINTAINED,
|
||||||
|
};
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
fops
|
|
||||||
cbks
|
|
||||||
class_methods
|
|
||||||
options
|
|
||||||
mem_acct_init
|
|
||||||
reconfigure
|
|
||||||
dumpops
|
|
@ -1425,12 +1425,11 @@ out:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
void
|
||||||
fini(xlator_t *this)
|
fini(xlator_t *this)
|
||||||
{
|
{
|
||||||
mem_pool_destroy(this->local_pool);
|
mem_pool_destroy(this->local_pool);
|
||||||
|
return;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct xlator_fops fops = {
|
struct xlator_fops fops = {
|
||||||
@ -1458,3 +1457,15 @@ struct volume_options options[] = {
|
|||||||
.description = "Enable/Disable dentry serialize functionality"},
|
.description = "Enable/Disable dentry serialize functionality"},
|
||||||
{.key = {NULL}},
|
{.key = {NULL}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.reconfigure = reconfigure,
|
||||||
|
.op_version = {GD_OP_VERSION_4_0_0},
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "sdfs",
|
||||||
|
.category = GF_TECH_PREVIEW,
|
||||||
|
};
|
||||||
|
@ -2559,3 +2559,17 @@ struct volume_options options[] = {
|
|||||||
},
|
},
|
||||||
{.key = {NULL}},
|
{.key = {NULL}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.notify = notify,
|
||||||
|
.reconfigure = reconfigure,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {1},
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "snapview-client",
|
||||||
|
.category = GF_MAINTAINED,
|
||||||
|
};
|
||||||
|
@ -2691,3 +2691,16 @@ struct volume_options options[] = {
|
|||||||
},
|
},
|
||||||
{.key = {NULL}},
|
{.key = {NULL}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.notify = notify,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {1},
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "snapview-server",
|
||||||
|
.category = GF_MAINTAINED,
|
||||||
|
};
|
||||||
|
@ -2225,3 +2225,15 @@ struct volume_options options[] = {
|
|||||||
" power. Range 1-32 threads."},
|
" power. Range 1-32 threads."},
|
||||||
{.key = {NULL}},
|
{.key = {NULL}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {1}, /* Present from the initial version */
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "glusterd",
|
||||||
|
.category = GF_MAINTAINED,
|
||||||
|
};
|
||||||
|
@ -1529,7 +1529,7 @@ notify(xlator_t *this, int32_t event, void *data, ...)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
void
|
||||||
fini(xlator_t *this)
|
fini(xlator_t *this)
|
||||||
{
|
{
|
||||||
struct nfs_state *nfs = NULL;
|
struct nfs_state *nfs = NULL;
|
||||||
@ -1539,7 +1539,7 @@ fini(xlator_t *this)
|
|||||||
gf_msg_debug(GF_NFS, 0, "NFS service going down");
|
gf_msg_debug(GF_NFS, 0, "NFS service going down");
|
||||||
nfs_deinit_versions(&nfs->versions, this);
|
nfs_deinit_versions(&nfs->versions, this);
|
||||||
GF_FREE(this->instance_name);
|
GF_FREE(this->instance_name);
|
||||||
return 0;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t
|
int32_t
|
||||||
@ -2040,3 +2040,18 @@ struct volume_options options[] = {
|
|||||||
},
|
},
|
||||||
{.key = {NULL}},
|
{.key = {NULL}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xlator_api_t xlator_api = {
|
||||||
|
.init = init,
|
||||||
|
.fini = fini,
|
||||||
|
.notify = notify,
|
||||||
|
.reconfigure = reconfigure,
|
||||||
|
.mem_acct_init = mem_acct_init,
|
||||||
|
.op_version = {1},
|
||||||
|
.dumpops = &dumpops,
|
||||||
|
.fops = &fops,
|
||||||
|
.cbks = &cbks,
|
||||||
|
.options = options,
|
||||||
|
.identifier = "gnfs",
|
||||||
|
.category = GF_MAINTAINED,
|
||||||
|
};
|
||||||
|
@ -1,12 +1,3 @@
|
|||||||
init
|
|
||||||
fini
|
|
||||||
fops
|
|
||||||
cbks
|
|
||||||
options
|
|
||||||
notify
|
|
||||||
mem_acct_init
|
|
||||||
reconfigure
|
|
||||||
dumpops
|
|
||||||
exp_file_parse
|
exp_file_parse
|
||||||
exp_file_print
|
exp_file_print
|
||||||
exp_file_get_dir
|
exp_file_get_dir
|
||||||
@ -18,3 +9,4 @@ ng_file_parse
|
|||||||
ng_file_get_netgroup
|
ng_file_get_netgroup
|
||||||
ng_file_print
|
ng_file_print
|
||||||
ng_file_deinit
|
ng_file_deinit
|
||||||
|
xlator_api
|
||||||
|
@ -1,11 +1 @@
|
|||||||
class_methods
|
|
||||||
xlator_api
|
xlator_api
|
||||||
init
|
|
||||||
fini
|
|
||||||
fops
|
|
||||||
cbks
|
|
||||||
options
|
|
||||||
notify
|
|
||||||
mem_acct_init
|
|
||||||
reconfigure
|
|
||||||
dumpops
|
|
||||||
|
Loading…
Reference in New Issue
Block a user