gfapi: add new API glfs_set_xlator_option()
This is the equivalent of specifying --xlator-option command line argument to glusterfsd. Change-Id: I1171dd518a85db4bd456fa0790f450e889a956cd BUG: 953694 Signed-off-by: Anand Avati <avati@redhat.com> Reviewed-on: http://review.gluster.org/4927 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
This commit is contained in:
parent
aec246459b
commit
54b9cd3df3
@ -22,6 +22,7 @@ enum glfs_mem_types_ {
|
||||
glfs_mt_glfs_fd_t,
|
||||
glfs_mt_glfs_io_t,
|
||||
glfs_mt_volfile_t,
|
||||
glfs_mt_xlator_cmdline_option_t,
|
||||
glfs_mt_end
|
||||
|
||||
};
|
||||
|
@ -21,7 +21,6 @@
|
||||
- protocol/client to reconnect immediately after portmap disconnect.
|
||||
- handle SEEK_END failure in _lseek()
|
||||
- handle umask (per filesystem?)
|
||||
- implement glfs_set_xlator_option(), like --xlator-option
|
||||
- make itables LRU based
|
||||
- implement glfs_fini()
|
||||
- 0-copy for readv/writev
|
||||
@ -279,6 +278,47 @@ out:
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
int
|
||||
glfs_set_xlator_option (struct glfs *fs, const char *xlator, const char *key,
|
||||
const char *value)
|
||||
{
|
||||
xlator_cmdline_option_t *option = NULL;
|
||||
|
||||
option = GF_CALLOC (1, sizeof (*option),
|
||||
glfs_mt_xlator_cmdline_option_t);
|
||||
if (!option)
|
||||
goto enomem;
|
||||
|
||||
INIT_LIST_HEAD (&option->cmd_args);
|
||||
|
||||
option->volume = gf_strdup (xlator);
|
||||
if (!option->volume)
|
||||
goto enomem;
|
||||
option->key = gf_strdup (key);
|
||||
if (!option->key)
|
||||
goto enomem;
|
||||
option->value = gf_strdup (value);
|
||||
if (!option->value)
|
||||
goto enomem;
|
||||
|
||||
list_add (&option->cmd_args, &fs->ctx->cmd_args.xlator_options);
|
||||
|
||||
return 0;
|
||||
enomem:
|
||||
errno = ENOMEM;
|
||||
|
||||
if (!option)
|
||||
return -1;
|
||||
|
||||
GF_FREE (option->volume);
|
||||
GF_FREE (option->key);
|
||||
GF_FREE (option->value);
|
||||
GF_FREE (option);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
struct glfs *
|
||||
glfs_from_glfd (struct glfs_fd *glfd)
|
||||
{
|
||||
|
@ -301,6 +301,9 @@ int glfs_close (glfs_fd_t *fd);
|
||||
|
||||
glfs_t *glfs_from_glfd (glfs_fd_t *fd);
|
||||
|
||||
int glfs_set_xlator_option (glfs_t *fs, const char *xlator, const char *key,
|
||||
const char *value);
|
||||
|
||||
typedef void (*glfs_io_cbk) (glfs_fd_t *fd, ssize_t ret, void *data);
|
||||
|
||||
// glfs_{read,write}[_async]
|
||||
|
Loading…
x
Reference in New Issue
Block a user