Fix compile warnings
This patch fixes compile warnings that appear with newer compilers. The solution applied is only to remove the warnings, but it doesn't always solve the problem in the best way. It assumes that the problem will never happen, as the previous code assumed. Change-Id: I6e8470d6c2e2dbd3bd7d324b5fd2f92ffdc3d6ec updates: bz#1193929 Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
This commit is contained in:
parent
03f1f5bdc4
commit
6dc5dfef81
@ -8240,8 +8240,8 @@ cli_print_volume_status_tasks (dict_t *dict)
|
||||
char *op = NULL;
|
||||
char *task_id_str = NULL;
|
||||
char *volname = NULL;
|
||||
char key[1024] = {0,};
|
||||
char task[1024] = {0,};
|
||||
char key[64] = {0,};
|
||||
char task[32] = {0,};
|
||||
char *brick = NULL;
|
||||
|
||||
ret = dict_get_str (dict, "volname", &volname);
|
||||
@ -10627,7 +10627,7 @@ gf_cli_generate_snapshot_event (gf_cli_rsp *rsp, dict_t *dict,
|
||||
char *auto_delete = NULL;
|
||||
char *snap_activate = NULL;
|
||||
char msg[PATH_MAX] = {0, };
|
||||
char option[PATH_MAX] = {0, };
|
||||
char option[512] = {0, };
|
||||
|
||||
GF_VALIDATE_OR_GOTO ("cli", dict, out);
|
||||
GF_VALIDATE_OR_GOTO ("cli", rsp, out);
|
||||
@ -11846,9 +11846,9 @@ cli_to_glusterd (gf_cli_req *req, call_frame_t *frame,
|
||||
}
|
||||
|
||||
for (i = 0; words[i]; i++) {
|
||||
strncat (cmd, words[i], strlen (words[i]));
|
||||
strncat (cmd, words[i], len - 1);
|
||||
if (words[i+1] != NULL)
|
||||
strncat (cmd, " ", strlen (" "));
|
||||
strncat (cmd, " ", len - 1);
|
||||
}
|
||||
|
||||
cmd [len - 1] = '\0';
|
||||
|
@ -702,9 +702,6 @@ fi
|
||||
|
||||
AM_CONDITIONAL([ENABLE_BD_XLATOR], [test x$BUILD_BD_XLATOR = xyes])
|
||||
|
||||
dnl check for old openssl
|
||||
AC_CHECK_LIB([crypto], CRYPTO_THREADID_set_callback, [AC_DEFINE([HAVE_CRYPTO_THREADID], [1], [use new OpenSSL functions])])
|
||||
|
||||
AC_CHECK_LIB([ssl], TLS_method, [HAVE_OPENSSL_1_1="yes"], [HAVE_OPENSSL_1_1="no"])
|
||||
if test "x$HAVE_OPENSSL_1_1" = "xyes"; then
|
||||
AC_DEFINE([HAVE_TLS_METHOD], [1], [Using OpenSSL-1.1 TLS_method])
|
||||
|
@ -3061,8 +3061,9 @@ gf_canonicalize_path (char *path)
|
||||
strncpy ((path + path_len + 1), dir, dir_path_len);
|
||||
path_len += dir_path_len + 1;
|
||||
dir = strtok_r (NULL, "/", &tmpstr);
|
||||
if (dir)
|
||||
strncpy ((path + path_len), "/", 1);
|
||||
if (dir) {
|
||||
path[path_len] = '/';
|
||||
}
|
||||
}
|
||||
path[path_len] = '\0';
|
||||
ret = 0;
|
||||
|
@ -858,11 +858,16 @@ gf_proc_dump_info (int signum, glusterfs_ctx_t *ctx)
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
snprintf (path, sizeof (path), "%s/%s.%d.dump.%"PRIu64,
|
||||
((dump_options.dump_path != NULL)?dump_options.dump_path:
|
||||
((ctx->statedump_path != NULL)?ctx->statedump_path:
|
||||
DEFAULT_VAR_RUN_DIRECTORY)), brick_name, getpid(),
|
||||
(uint64_t) time (NULL));
|
||||
ret = snprintf (path, sizeof (path), "%s/%s.%d.dump.%"PRIu64,
|
||||
((dump_options.dump_path != NULL)
|
||||
? dump_options.dump_path
|
||||
: ((ctx->statedump_path != NULL)
|
||||
? ctx->statedump_path
|
||||
: DEFAULT_VAR_RUN_DIRECTORY)),
|
||||
brick_name, getpid(), (uint64_t) time (NULL));
|
||||
if ((ret < 0) || (ret >= sizeof(path))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
snprintf (tmp_dump_name, PATH_MAX, "%s/dumpXXXXXX",
|
||||
((dump_options.dump_path != NULL)?dump_options.dump_path:
|
||||
@ -939,10 +944,10 @@ gf_proc_dump_info (int signum, glusterfs_ctx_t *ctx)
|
||||
timestr);
|
||||
ret = sys_write (gf_dump_fd, sign_string, strlen (sign_string));
|
||||
|
||||
out:
|
||||
if (gf_dump_fd != -1)
|
||||
gf_proc_dump_close ();
|
||||
sys_rename (tmp_dump_name, path);
|
||||
out:
|
||||
GF_FREE (dump_options.dump_path);
|
||||
dump_options.dump_path = NULL;
|
||||
gf_proc_dump_unlock ();
|
||||
|
@ -41,13 +41,18 @@ __attribute__ ((__format__ (__printf__, 3, 4)))
|
||||
static inline void
|
||||
_gf_proc_dump_build_key (char *key, const char *prefix, const char *fmt, ...)
|
||||
{
|
||||
char buf[GF_DUMP_MAX_BUF_LEN] = { 0, };
|
||||
va_list ap;
|
||||
int32_t len;
|
||||
|
||||
va_start(ap, fmt);
|
||||
vsnprintf(buf, GF_DUMP_MAX_BUF_LEN, fmt, ap);
|
||||
va_end(ap);
|
||||
snprintf(key, GF_DUMP_MAX_BUF_LEN, "%s.%s", prefix, buf);
|
||||
len = snprintf(key, GF_DUMP_MAX_BUF_LEN, "%s.", prefix);
|
||||
if (len >= 0) {
|
||||
va_start(ap, fmt);
|
||||
len = vsnprintf(key + len, GF_DUMP_MAX_BUF_LEN - len, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
if (len < 0) {
|
||||
*key = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#define gf_proc_dump_build_key(key, key_prefix, fmt...) \
|
||||
|
@ -75,7 +75,7 @@ xdr_to_auth_unix_cred (char *msgbuf, int msglen, struct authunix_parms *au,
|
||||
#define rpc_call_verf_len(call) (rpc_opaque_auth_len ((&(call)->ru.RM_cmb.cb_verf)))
|
||||
|
||||
|
||||
#if defined(GF_DARWIN_HOST_OS) || defined (IPV6_DEFAULT)
|
||||
#if defined(GF_DARWIN_HOST_OS) || !defined (HAVE_RPC_RPC_H)
|
||||
#define GF_PRI_RPC_XID PRIu32
|
||||
#define GF_PRI_RPC_VERSION PRIu32
|
||||
#define GF_PRI_RPC_PROG_ID PRIu32
|
||||
|
@ -4128,6 +4128,7 @@ out:
|
||||
|
||||
}
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER < 0x1010000f
|
||||
static pthread_mutex_t *lock_array = NULL;
|
||||
|
||||
static void
|
||||
@ -4140,7 +4141,7 @@ locking_func (int mode, int type, const char *file, int line)
|
||||
}
|
||||
}
|
||||
|
||||
#if HAVE_CRYPTO_THREADID
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x1000000f
|
||||
static void
|
||||
threadid_func (CRYPTO_THREADID *id)
|
||||
{
|
||||
@ -4163,15 +4164,15 @@ legacy_threadid_func (void)
|
||||
/* See comments above, it applies here too. */
|
||||
return (unsigned long)pthread_self();
|
||||
}
|
||||
#endif
|
||||
#endif /* OPENSSL_VERSION_NUMBER >= 0x1000000f */
|
||||
#endif /* OPENSSL_VERSION_NUMBER < 0x1010000f */
|
||||
|
||||
static void
|
||||
init_openssl_mt (void)
|
||||
{
|
||||
int num_locks = CRYPTO_num_locks();
|
||||
int i;
|
||||
static gf_boolean_t initialized = _gf_false;
|
||||
|
||||
if (lock_array) {
|
||||
if (initialized) {
|
||||
/* this only needs to be initialized once GLOBALLY no
|
||||
matter how many translators/sockets we end up with. */
|
||||
return;
|
||||
@ -4180,25 +4181,32 @@ init_openssl_mt (void)
|
||||
SSL_library_init();
|
||||
SSL_load_error_strings();
|
||||
|
||||
initialized = _gf_true;
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER < 0x1010000f
|
||||
int num_locks = CRYPTO_num_locks();
|
||||
int i;
|
||||
|
||||
lock_array = GF_CALLOC (num_locks, sizeof(pthread_mutex_t),
|
||||
gf_sock_mt_lock_array);
|
||||
if (lock_array) {
|
||||
for (i = 0; i < num_locks; ++i) {
|
||||
pthread_mutex_init (&lock_array[i], NULL);
|
||||
}
|
||||
#if HAVE_CRYPTO_THREADID
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x1000000f
|
||||
CRYPTO_THREADID_set_callback (threadid_func);
|
||||
#else /* older openssl */
|
||||
CRYPTO_set_id_callback (legacy_threadid_func);
|
||||
#endif
|
||||
CRYPTO_set_locking_callback (locking_func);
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
static void __attribute__((destructor))
|
||||
fini_openssl_mt (void)
|
||||
{
|
||||
#if OPENSSL_VERSION_NUMBER < 0x1010000f
|
||||
int i;
|
||||
|
||||
if (!lock_array) {
|
||||
@ -4206,7 +4214,7 @@ fini_openssl_mt (void)
|
||||
}
|
||||
|
||||
CRYPTO_set_locking_callback(NULL);
|
||||
#if HAVE_CRYPTO_THREADID
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x1000000f
|
||||
CRYPTO_THREADID_set_callback (NULL);
|
||||
#else /* older openssl */
|
||||
CRYPTO_set_id_callback (NULL);
|
||||
@ -4218,6 +4226,7 @@ fini_openssl_mt (void)
|
||||
|
||||
GF_FREE (lock_array);
|
||||
lock_array = NULL;
|
||||
#endif
|
||||
|
||||
ERR_free_strings();
|
||||
}
|
||||
|
@ -1690,7 +1690,7 @@ tier_migrate_files_using_qfile (migration_args_t *comp,
|
||||
int ret = -1;
|
||||
tier_brick_list_t *local_brick = NULL;
|
||||
tier_brick_list_t *temp = NULL;
|
||||
char query_file_path_err[PATH_MAX+128] = {0,};
|
||||
char query_file_path_err[PATH_MAX] = {0,};
|
||||
struct tm tm = {0,};
|
||||
gfdb_time_t current_time = {0,};
|
||||
char time_str[128] = {0,};
|
||||
@ -1698,6 +1698,7 @@ tier_migrate_files_using_qfile (migration_args_t *comp,
|
||||
int count = 0;
|
||||
int temp_fd = 0;
|
||||
gf_tier_conf_t *tier_conf = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
tier_conf = &(query_cbk_args->defrag->tier_conf);
|
||||
|
||||
@ -1762,14 +1763,17 @@ out:
|
||||
list_for_each_entry_safe (local_brick, temp, comp->brick_list,
|
||||
list) {
|
||||
/* rename error qfile*/
|
||||
snprintf (query_file_path_err,
|
||||
sizeof (query_file_path_err),
|
||||
"%s-%s.err", local_brick->qfile_path,
|
||||
time_str);
|
||||
if (sys_rename (local_brick->qfile_path,
|
||||
query_file_path_err) == -1)
|
||||
gf_msg_debug ("tier", 0, "rename "
|
||||
"failed");
|
||||
len = snprintf (query_file_path_err,
|
||||
sizeof (query_file_path_err),
|
||||
"%s-%s.err", local_brick->qfile_path,
|
||||
time_str);
|
||||
if ((len >= 0) &&
|
||||
(len < sizeof(query_file_path_err))) {
|
||||
if (sys_rename (local_brick->qfile_path,
|
||||
query_file_path_err) == -1)
|
||||
gf_msg_debug ("tier", 0, "rename "
|
||||
"failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2118,6 +2122,7 @@ tier_get_bricklist (xlator_t *xl, struct list_head *local_bricklist_head)
|
||||
char db_name[PATH_MAX] = "";
|
||||
int ret = 0;
|
||||
tier_brick_list_t *local_brick = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
GF_VALIDATE_OR_GOTO ("tier", xl, out);
|
||||
GF_VALIDATE_OR_GOTO ("tier", local_bricklist_head, out);
|
||||
@ -2155,12 +2160,20 @@ tier_get_bricklist (xlator_t *xl, struct list_head *local_bricklist_head)
|
||||
DHT_MSG_LOG_TIER_STATUS,
|
||||
"Failed to allocate memory for"
|
||||
" bricklist.");
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
snprintf(local_brick->brick_db_path,
|
||||
PATH_MAX, "%s/%s/%s", rv,
|
||||
GF_HIDDEN_PATH, db_name);
|
||||
len = snprintf(local_brick->brick_db_path,
|
||||
PATH_MAX, "%s/%s/%s", rv,
|
||||
GF_HIDDEN_PATH, db_name);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
gf_msg ("tier", GF_LOG_ERROR, EINVAL,
|
||||
DHT_MSG_LOG_TIER_STATUS,
|
||||
"DB path too long");
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
local_brick->xlator = xl;
|
||||
|
||||
|
@ -22,9 +22,9 @@
|
||||
static void
|
||||
trace_stat_to_str(struct iatt *buf, char *str, size_t len)
|
||||
{
|
||||
char atime_buf[256] = {0,};
|
||||
char mtime_buf[256] = {0,};
|
||||
char ctime_buf[256] = {0,};
|
||||
char atime_buf[200] = {0,};
|
||||
char mtime_buf[200] = {0,};
|
||||
char ctime_buf[200] = {0,};
|
||||
|
||||
if (!buf)
|
||||
return;
|
||||
@ -80,9 +80,9 @@ trace_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
struct iatt *preparent, struct iatt *postparent,
|
||||
dict_t *xdata)
|
||||
{
|
||||
char statstr[4096] = {0, };
|
||||
char preparentstr[4096] = {0, };
|
||||
char postparentstr[4096] = {0, };
|
||||
char statstr[1024] = {0, };
|
||||
char preparentstr[1024] = {0, };
|
||||
char postparentstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -155,7 +155,7 @@ trace_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
int32_t op_ret, int32_t op_errno, struct iatt *buf,
|
||||
dict_t *xdata)
|
||||
{
|
||||
char statstr[4096] = {0, };
|
||||
char statstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -166,18 +166,18 @@ trace_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
char string[4096] = {0,};
|
||||
if (op_ret == 0) {
|
||||
TRACE_STAT_TO_STR (buf, statstr);
|
||||
snprintf (string, sizeof (string),
|
||||
"%"PRId64": gfid=%s op_ret=%d buf=%s",
|
||||
frame->root->unique,
|
||||
uuid_utoa (frame->local), op_ret,
|
||||
statstr);
|
||||
(void)snprintf (string, sizeof (string),
|
||||
"%"PRId64": gfid=%s op_ret=%d buf=%s",
|
||||
frame->root->unique,
|
||||
uuid_utoa (frame->local), op_ret,
|
||||
statstr);
|
||||
} else {
|
||||
snprintf (string, sizeof (string),
|
||||
"%"PRId64": gfid=%s op_ret=%d, "
|
||||
"op_errno=%d)",
|
||||
frame->root->unique,
|
||||
uuid_utoa (frame->local), op_ret,
|
||||
op_errno);
|
||||
(void)snprintf (string, sizeof (string),
|
||||
"%"PRId64": gfid=%s op_ret=%d, "
|
||||
"op_errno=%d)",
|
||||
frame->root->unique,
|
||||
uuid_utoa (frame->local), op_ret,
|
||||
op_errno);
|
||||
}
|
||||
LOG_ELEMENT (conf, string);
|
||||
}
|
||||
@ -192,7 +192,7 @@ trace_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
int32_t count, struct iatt *buf, struct iobref *iobref,
|
||||
dict_t *xdata)
|
||||
{
|
||||
char statstr[4096] = {0, };
|
||||
char statstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -229,8 +229,8 @@ trace_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
int32_t op_ret, int32_t op_errno,
|
||||
struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata)
|
||||
{
|
||||
char preopstr[4096] = {0, };
|
||||
char postopstr[4096] = {0, };
|
||||
char preopstr[1024] = {0, };
|
||||
char postopstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -295,7 +295,7 @@ trace_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
dict_t *xdata)
|
||||
{
|
||||
int count = 0;
|
||||
char statstr[4096] = {0,};
|
||||
char statstr[1024] = {0,};
|
||||
char string[4096] = {0,};
|
||||
trace_conf_t *conf = NULL;
|
||||
gf_dirent_t *entry = NULL;
|
||||
@ -334,8 +334,8 @@ trace_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
int32_t op_ret, int32_t op_errno,
|
||||
struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata)
|
||||
{
|
||||
char preopstr[4096] = {0, };
|
||||
char postopstr[4096] = {0, };
|
||||
char preopstr[1024] = {0, };
|
||||
char postopstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -375,8 +375,8 @@ trace_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
int32_t op_ret, int32_t op_errno,
|
||||
struct iatt *statpre, struct iatt *statpost, dict_t *xdata)
|
||||
{
|
||||
char preopstr[4096] = {0, };
|
||||
char postopstr[4096] = {0, };
|
||||
char preopstr[1024] = {0, };
|
||||
char postopstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -414,8 +414,8 @@ trace_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
int32_t op_ret, int32_t op_errno,
|
||||
struct iatt *statpre, struct iatt *statpost, dict_t *xdata)
|
||||
{
|
||||
char preopstr[4096] = {0, };
|
||||
char postopstr[4096] = {0, };
|
||||
char preopstr[1024] = {0, };
|
||||
char postopstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -453,8 +453,8 @@ trace_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
struct iatt *preparent, struct iatt *postparent,
|
||||
dict_t *xdata)
|
||||
{
|
||||
char preparentstr[4096] = {0, };
|
||||
char postparentstr[4096] = {0, };
|
||||
char preparentstr[1024] = {0, };
|
||||
char postparentstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -498,11 +498,11 @@ trace_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
struct iatt *prenewparent, struct iatt *postnewparent,
|
||||
dict_t *xdata)
|
||||
{
|
||||
char statstr[4096] = {0, };
|
||||
char preoldparentstr[4096] = {0, };
|
||||
char postoldparentstr[4096] = {0, };
|
||||
char prenewparentstr[4096] = {0, };
|
||||
char postnewparentstr[4096] = {0, };
|
||||
char statstr[1024] = {0, };
|
||||
char preoldparentstr[1024] = {0, };
|
||||
char postoldparentstr[1024] = {0, };
|
||||
char prenewparentstr[1024] = {0, };
|
||||
char postnewparentstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -510,7 +510,7 @@ trace_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
if (!conf->log_file && !conf->log_history)
|
||||
goto out;
|
||||
if (trace_fop_names[GF_FOP_RENAME].enabled) {
|
||||
char string[4096] = {0,};
|
||||
char string[6044] = {0,};
|
||||
if (op_ret == 0) {
|
||||
TRACE_STAT_TO_STR (buf, statstr);
|
||||
TRACE_STAT_TO_STR (preoldparent, preoldparentstr);
|
||||
@ -549,7 +549,7 @@ trace_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
int32_t op_ret, int32_t op_errno,
|
||||
const char *buf, struct iatt *stbuf, dict_t *xdata)
|
||||
{
|
||||
char statstr[4096] = {0, };
|
||||
char statstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -588,8 +588,8 @@ trace_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
inode_t *inode, struct iatt *buf,
|
||||
dict_t *xdata, struct iatt *postparent)
|
||||
{
|
||||
char statstr[4096] = {0, };
|
||||
char postparentstr[4096] = {0, };
|
||||
char statstr[1024] = {0, };
|
||||
char postparentstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -638,9 +638,9 @@ trace_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
struct iatt *preparent, struct iatt *postparent,
|
||||
dict_t *xdata)
|
||||
{
|
||||
char statstr[4096] = {0, };
|
||||
char preparentstr[4096] = {0, };
|
||||
char postparentstr[4096] = {0, };
|
||||
char statstr[1024] = {0, };
|
||||
char preparentstr[1024] = {0, };
|
||||
char postparentstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -682,9 +682,9 @@ trace_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
inode_t *inode, struct iatt *buf,
|
||||
struct iatt *preparent, struct iatt *postparent, dict_t *xdata)
|
||||
{
|
||||
char statstr[4096] = {0, };
|
||||
char preparentstr[4096] = {0, };
|
||||
char postparentstr[4096] = {0, };
|
||||
char statstr[1024] = {0, };
|
||||
char preparentstr[1024] = {0, };
|
||||
char postparentstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -726,9 +726,9 @@ trace_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
inode_t *inode, struct iatt *buf,
|
||||
struct iatt *preparent, struct iatt *postparent, dict_t *xdata)
|
||||
{
|
||||
char statstr[4096] = {0, };
|
||||
char preparentstr[4096] = {0, };
|
||||
char postparentstr[4096] = {0, };
|
||||
char statstr[1024] = {0, };
|
||||
char preparentstr[1024] = {0, };
|
||||
char postparentstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -770,9 +770,9 @@ trace_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
inode_t *inode, struct iatt *buf,
|
||||
struct iatt *preparent, struct iatt *postparent, dict_t *xdata)
|
||||
{
|
||||
char statstr[4096] = {0, };
|
||||
char preparentstr[4096] = {0, };
|
||||
char postparentstr[4096] = {0, };
|
||||
char statstr[1024] = {0, };
|
||||
char preparentstr[1024] = {0, };
|
||||
char postparentstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -866,8 +866,8 @@ trace_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
int32_t op_ret, int32_t op_errno,
|
||||
struct iatt *preparent, struct iatt *postparent, dict_t *xdata)
|
||||
{
|
||||
char preparentstr[4096] = {0, };
|
||||
char postparentstr[4096] = {0, };
|
||||
char preparentstr[1024] = {0, };
|
||||
char postparentstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -906,8 +906,8 @@ trace_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
int32_t op_ret, int32_t op_errno,
|
||||
struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata)
|
||||
{
|
||||
char preopstr[4096] = {0, };
|
||||
char postopstr[4096] = {0, };
|
||||
char preopstr[1024] = {0, };
|
||||
char postopstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -1166,8 +1166,8 @@ trace_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
int32_t op_ret, int32_t op_errno,
|
||||
struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata)
|
||||
{
|
||||
char prebufstr[4096] = {0, };
|
||||
char postbufstr[4096] = {0, };
|
||||
char prebufstr[1024] = {0, };
|
||||
char postbufstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
@ -1204,7 +1204,7 @@ int
|
||||
trace_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
int32_t op_ret, int32_t op_errno, struct iatt *buf, dict_t *xdata)
|
||||
{
|
||||
char statstr[4096] = {0, };
|
||||
char statstr[1024] = {0, };
|
||||
trace_conf_t *conf = NULL;
|
||||
|
||||
conf = this->private;
|
||||
|
@ -1750,6 +1750,7 @@ br_collect_bad_objects_of_child (xlator_t *this, br_child_t *child,
|
||||
char *entry = NULL;
|
||||
char tmp[PATH_MAX] = {0, };
|
||||
char *path = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
ret = dict_get_int32 (child_dict, "count", &count);
|
||||
if (ret)
|
||||
@ -1764,8 +1765,11 @@ br_collect_bad_objects_of_child (xlator_t *this, br_child_t *child,
|
||||
continue;
|
||||
|
||||
ret = dict_get_str (child_dict, entry, &path);
|
||||
snprintf (tmp, PATH_MAX, "%s ==> BRICK: %s\n path: %s",
|
||||
entry, child->brick_path, path);
|
||||
len = snprintf (tmp, PATH_MAX, "%s ==> BRICK: %s\n path: %s",
|
||||
entry, child->brick_path, path);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
continue;
|
||||
}
|
||||
snprintf (main_key, PATH_MAX, "quarantine-%d",
|
||||
tmp_count);
|
||||
|
||||
|
@ -629,6 +629,7 @@ htime_open (xlator_t *this,
|
||||
ssize_t size = 0;
|
||||
struct stat stat_buf = {0,};
|
||||
unsigned long record_len = 0;
|
||||
int32_t len = 0;
|
||||
|
||||
CHANGELOG_FILL_HTIME_DIR(priv->changelog_dir, ht_dir_path);
|
||||
|
||||
@ -672,8 +673,12 @@ htime_open (xlator_t *this,
|
||||
gf_smsg (this->name, GF_LOG_INFO, 0, CHANGELOG_MSG_HTIME_INFO,
|
||||
"HTIME_CURRENT",
|
||||
"path=%s", ht_file_bname, NULL);
|
||||
(void) snprintf (ht_file_path, PATH_MAX, "%s/%s",
|
||||
ht_dir_path, ht_file_bname);
|
||||
len = snprintf (ht_file_path, PATH_MAX, "%s/%s", ht_dir_path,
|
||||
ht_file_bname);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Open in append mode as existing htime file is used */
|
||||
flags |= (O_RDWR | O_SYNC | O_APPEND);
|
||||
@ -763,6 +768,7 @@ htime_create (xlator_t *this,
|
||||
char ht_file_path[PATH_MAX] = {0,};
|
||||
char ht_file_bname[NAME_MAX + 1] = {0,};
|
||||
int flags = 0;
|
||||
int32_t len = 0;
|
||||
|
||||
gf_smsg (this->name, GF_LOG_INFO, 0,
|
||||
CHANGELOG_MSG_HTIME_INFO, "Changelog enable: Creating new "
|
||||
@ -773,8 +779,12 @@ htime_create (xlator_t *this,
|
||||
CHANGELOG_FILL_HTIME_DIR(priv->changelog_dir, ht_dir_path);
|
||||
|
||||
/* get the htime file name in ht_file_path */
|
||||
(void) snprintf (ht_file_path,PATH_MAX,"%s/%s.%lu",ht_dir_path,
|
||||
len = snprintf (ht_file_path, PATH_MAX, "%s/%s.%lu", ht_dir_path,
|
||||
HTIME_FILE_NAME, ts);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
flags |= (O_CREAT | O_RDWR | O_SYNC);
|
||||
ht_file_fd = open (ht_file_path, flags,
|
||||
@ -865,12 +875,16 @@ changelog_snap_open (xlator_t *this,
|
||||
char buffer[1024] = {0,};
|
||||
char c_snap_path[PATH_MAX] = {0,};
|
||||
char csnap_dir_path[PATH_MAX] = {0,};
|
||||
int32_t len = 0;
|
||||
|
||||
CHANGELOG_FILL_CSNAP_DIR(priv->changelog_dir, csnap_dir_path);
|
||||
|
||||
(void) snprintf (c_snap_path, PATH_MAX,
|
||||
"%s/"CSNAP_FILE_NAME,
|
||||
len = snprintf (c_snap_path, PATH_MAX, "%s/"CSNAP_FILE_NAME,
|
||||
csnap_dir_path);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
flags |= (O_CREAT | O_RDWR | O_TRUNC);
|
||||
|
||||
@ -2002,8 +2016,12 @@ resolve_pargfid_to_path (xlator_t *this, const uuid_t pgfid,
|
||||
priv->changelog_brick);
|
||||
|
||||
while (!(__is_root_gfid (pargfid))) {
|
||||
snprintf (dir_handle, PATH_MAX, "%s/%02x/%02x/%s", gpath,
|
||||
pargfid[0], pargfid[1], uuid_utoa (pargfid));
|
||||
len = snprintf (dir_handle, PATH_MAX, "%s/%02x/%02x/%s", gpath,
|
||||
pargfid[0], pargfid[1], uuid_utoa (pargfid));
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
len = sys_readlink (dir_handle, linkname, PATH_MAX);
|
||||
if (len < 0) {
|
||||
@ -2023,7 +2041,12 @@ resolve_pargfid_to_path (xlator_t *this, const uuid_t pgfid,
|
||||
&saveptr);
|
||||
dir_name = strtok_r (NULL, "/", &saveptr);
|
||||
|
||||
snprintf (result, PATH_MAX, "%s/%s", dir_name, pre_dir_name);
|
||||
len = snprintf (result, PATH_MAX, "%s/%s", dir_name,
|
||||
pre_dir_name);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
strncpy (pre_dir_name, result, sizeof(pre_dir_name));
|
||||
|
||||
gf_uuid_parse (pgfidstr, tmp_gfid);
|
||||
|
@ -810,6 +810,7 @@ index_entry_create (xlator_t *this, inode_t *inode, char *filename)
|
||||
char entry_path[PATH_MAX] = {0};
|
||||
index_priv_t *priv = NULL;
|
||||
index_inode_ctx_t *ctx = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
priv = this->private;
|
||||
|
||||
@ -841,10 +842,15 @@ index_entry_create (xlator_t *this, inode_t *inode, char *filename)
|
||||
ctx->state[ENTRY_CHANGES] = IN;
|
||||
}
|
||||
|
||||
len = snprintf (entry_path, sizeof(entry_path), "%s/%s", pgfid_path,
|
||||
filename);
|
||||
if ((len < 0) || (len >= sizeof(entry_path))) {
|
||||
op_errno = EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
op_errno = 0;
|
||||
|
||||
snprintf (entry_path, sizeof(entry_path), "%s/%s", pgfid_path,
|
||||
filename);
|
||||
ret = index_link_to_base (this, entry_path, ENTRY_CHANGES_SUBDIR);
|
||||
out:
|
||||
if (op_errno)
|
||||
@ -860,6 +866,7 @@ index_entry_delete (xlator_t *this, uuid_t pgfid, char *filename)
|
||||
char pgfid_path[PATH_MAX] = {0};
|
||||
char entry_path[PATH_MAX] = {0};
|
||||
index_priv_t *priv = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
priv = this->private;
|
||||
|
||||
@ -870,8 +877,12 @@ index_entry_delete (xlator_t *this, uuid_t pgfid, char *filename)
|
||||
|
||||
make_gfid_path (priv->index_basepath, ENTRY_CHANGES_SUBDIR, pgfid,
|
||||
pgfid_path, sizeof (pgfid_path));
|
||||
snprintf (entry_path, sizeof(entry_path), "%s/%s", pgfid_path,
|
||||
filename);
|
||||
len = snprintf (entry_path, sizeof(entry_path), "%s/%s", pgfid_path,
|
||||
filename);
|
||||
if ((len < 0) || (len >= sizeof(entry_path))) {
|
||||
op_errno = EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = sys_unlink (entry_path);
|
||||
if (ret && (errno != ENOENT)) {
|
||||
|
@ -783,6 +783,7 @@ glusterd_set_detach_bricks(dict_t *dict, glusterd_volinfo_t *volinfo)
|
||||
int hot_brick_num = 0;
|
||||
glusterd_brickinfo_t *brickinfo;
|
||||
int ret = 0;
|
||||
int32_t len = 0;
|
||||
|
||||
/* cold tier bricks at tail of list so use reverse iteration */
|
||||
cds_list_for_each_entry_reverse (brickinfo, &volinfo->bricks,
|
||||
@ -791,9 +792,12 @@ glusterd_set_detach_bricks(dict_t *dict, glusterd_volinfo_t *volinfo)
|
||||
if (brick_num > volinfo->tier_info.cold_brick_count) {
|
||||
hot_brick_num++;
|
||||
sprintf (key, "brick%d", hot_brick_num);
|
||||
snprintf (value, 256, "%s:%s",
|
||||
brickinfo->hostname,
|
||||
brickinfo->path);
|
||||
len = snprintf (value, sizeof(value), "%s:%s",
|
||||
brickinfo->hostname,
|
||||
brickinfo->path);
|
||||
if ((len < 0) || (len >= sizeof(value))) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = dict_set_str (dict, key, strdup(value));
|
||||
if (ret)
|
||||
@ -1677,6 +1681,7 @@ glusterd_op_stage_add_brick (dict_t *dict, char **op_errstr, dict_t *rsp_dict)
|
||||
char *str_ret = NULL;
|
||||
gf_boolean_t is_force = _gf_false;
|
||||
glusterd_conf_t *conf = NULL;
|
||||
uint32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -1778,10 +1783,14 @@ glusterd_op_stage_add_brick (dict_t *dict, char **op_errstr, dict_t *rsp_dict)
|
||||
continue;
|
||||
if (brickinfo->status == GF_BRICK_STOPPED) {
|
||||
ret = -1;
|
||||
snprintf (msg, sizeof (msg), "Brick %s is down,"
|
||||
" changing replica count needs all "
|
||||
"the bricks to be up to avoid data "
|
||||
"loss", brickinfo->path);
|
||||
len = snprintf (msg, sizeof (msg), "Brick %s "
|
||||
"is down, changing replica "
|
||||
"count needs all the bricks "
|
||||
"to be up to avoid data loss",
|
||||
brickinfo->path);
|
||||
if (len < 0) {
|
||||
strcpy(msg, "<error>");
|
||||
}
|
||||
gf_msg (THIS->name, GF_LOG_ERROR, 0,
|
||||
GD_MSG_BRICK_ADD_FAIL, "%s", msg);
|
||||
*op_errstr = gf_strdup (msg);
|
||||
|
@ -941,6 +941,7 @@ gsyncd_getpidfile (char *master, char *slave, char *pidfile,
|
||||
int ret = -1;
|
||||
struct stat stbuf = {0,};
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -953,8 +954,11 @@ gsyncd_getpidfile (char *master, char *slave, char *pidfile,
|
||||
GF_VALIDATE_OR_GOTO ("gsync", master, out);
|
||||
GF_VALIDATE_OR_GOTO ("gsync", slave, out);
|
||||
|
||||
snprintf (temp_conf_path, sizeof(temp_conf_path) - 1,
|
||||
"%s/"GSYNC_CONF_TEMPLATE, priv->workdir);
|
||||
len = snprintf (temp_conf_path, sizeof(temp_conf_path),
|
||||
"%s/"GSYNC_CONF_TEMPLATE, priv->workdir);
|
||||
if ((len < 0) || (len >= sizeof(temp_conf_path))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = sys_lstat (conf_path, &stbuf);
|
||||
if (!ret) {
|
||||
@ -2417,6 +2421,7 @@ glusterd_op_stage_copy_file (dict_t *dict, char **op_errstr)
|
||||
char workdir[PATH_MAX] = {0,};
|
||||
char realpath_filename[PATH_MAX] = {0,};
|
||||
char realpath_workdir[PATH_MAX] = {0,};
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -2458,13 +2463,20 @@ glusterd_op_stage_copy_file (dict_t *dict, char **op_errstr)
|
||||
*op_errstr = gf_strdup ("command unsuccessful");
|
||||
goto out;
|
||||
}
|
||||
snprintf (abs_filename, sizeof(abs_filename),
|
||||
"%s/%s", priv->workdir, filename);
|
||||
len = snprintf (abs_filename, sizeof(abs_filename),
|
||||
"%s/%s", priv->workdir, filename);
|
||||
if ((len < 0) || (len >= sizeof(abs_filename))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!realpath (priv->workdir, realpath_workdir)) {
|
||||
snprintf (errmsg, sizeof (errmsg), "Failed to get "
|
||||
"realpath of %s: %s", priv->workdir,
|
||||
strerror (errno));
|
||||
len = snprintf (errmsg, sizeof (errmsg), "Failed to "
|
||||
"get realpath of %s: %s",
|
||||
priv->workdir, strerror (errno));
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
*op_errstr = gf_strdup (errmsg);
|
||||
ret = -1;
|
||||
goto out;
|
||||
@ -2481,12 +2493,21 @@ glusterd_op_stage_copy_file (dict_t *dict, char **op_errstr)
|
||||
|
||||
/* Add Trailing slash to workdir, without slash strncmp
|
||||
will succeed for /var/lib/glusterd_bad */
|
||||
snprintf (workdir, sizeof(workdir), "%s/", realpath_workdir);
|
||||
len = snprintf (workdir, sizeof(workdir), "%s/",
|
||||
realpath_workdir);
|
||||
if ((len < 0) || (len >= sizeof(workdir))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Protect against file copy outside $workdir */
|
||||
if (strncmp (workdir, realpath_filename, strlen (workdir))) {
|
||||
snprintf (errmsg, sizeof (errmsg), "Source file"
|
||||
" is outside of %s directory", priv->workdir);
|
||||
len = snprintf (errmsg, sizeof (errmsg), "Source file"
|
||||
" is outside of %s directory",
|
||||
priv->workdir);
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
*op_errstr = gf_strdup (errmsg);
|
||||
ret = -1;
|
||||
goto out;
|
||||
@ -2494,8 +2515,12 @@ glusterd_op_stage_copy_file (dict_t *dict, char **op_errstr)
|
||||
|
||||
ret = sys_lstat (abs_filename, &stbuf);
|
||||
if (ret) {
|
||||
snprintf (errmsg, sizeof (errmsg), "Source file"
|
||||
" does not exist in %s", priv->workdir);
|
||||
len = snprintf (errmsg, sizeof (errmsg), "Source file"
|
||||
" does not exist in %s",
|
||||
priv->workdir);
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
*op_errstr = gf_strdup (errmsg);
|
||||
goto out;
|
||||
}
|
||||
@ -2532,6 +2557,7 @@ glusterd_get_statefile_name (glusterd_volinfo_t *volinfo, char *slave,
|
||||
int ret = -1;
|
||||
struct stat stbuf = {0,};
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -2552,8 +2578,11 @@ glusterd_get_statefile_name (glusterd_volinfo_t *volinfo, char *slave,
|
||||
|
||||
priv = THIS->private;
|
||||
|
||||
snprintf (temp_conf_path, sizeof(temp_conf_path) - 1,
|
||||
"%s/"GSYNC_CONF_TEMPLATE, priv->workdir);
|
||||
len = snprintf (temp_conf_path, sizeof(temp_conf_path),
|
||||
"%s/"GSYNC_CONF_TEMPLATE, priv->workdir);
|
||||
if ((len < 0) || (len >= sizeof(temp_conf_path))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = sys_lstat (conf_path, &stbuf);
|
||||
if (!ret) {
|
||||
@ -3028,6 +3057,7 @@ glusterd_op_stage_gsync_create (dict_t *dict, char **op_errstr)
|
||||
char *slave_user = NULL;
|
||||
char *save_ptr = NULL;
|
||||
char *slave_url_buf = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -3157,23 +3187,33 @@ glusterd_op_stage_gsync_create (dict_t *dict, char **op_errstr)
|
||||
ret = dict_get_int32 (dict, "push_pem", &is_pem_push);
|
||||
if (!ret && is_pem_push) {
|
||||
ret = snprintf (common_pem_file,
|
||||
sizeof(common_pem_file) - 1,
|
||||
sizeof(common_pem_file),
|
||||
"%s"GLUSTERD_COMMON_PEM_PUB_FILE,
|
||||
conf->workdir);
|
||||
common_pem_file[ret] = '\0';
|
||||
if ((ret < 0) || (ret >= sizeof(common_pem_file))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = snprintf (hook_script, sizeof(hook_script) - 1,
|
||||
ret = snprintf (hook_script, sizeof(hook_script),
|
||||
"%s"GLUSTERD_CREATE_HOOK_SCRIPT,
|
||||
conf->workdir);
|
||||
hook_script[ret] = '\0';
|
||||
if ((ret < 0) || (ret >= sizeof(hook_script))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = sys_lstat (common_pem_file, &stbuf);
|
||||
if (ret) {
|
||||
snprintf (errmsg, sizeof (errmsg), "%s"
|
||||
" required for push-pem is"
|
||||
" not present. Please run"
|
||||
" \"gluster system:: execute"
|
||||
" gsec_create\"", common_pem_file);
|
||||
len = snprintf (errmsg, sizeof (errmsg), "%s"
|
||||
" required for push-pem is"
|
||||
" not present. Please run"
|
||||
" \"gluster system:: execute"
|
||||
" gsec_create\"",
|
||||
common_pem_file);
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
gf_msg (this->name, GF_LOG_ERROR, ENOENT,
|
||||
GD_MSG_FILE_OP_FAILED,
|
||||
"%s", errmsg);
|
||||
@ -3184,11 +3224,15 @@ glusterd_op_stage_gsync_create (dict_t *dict, char **op_errstr)
|
||||
|
||||
ret = sys_lstat (hook_script, &stbuf);
|
||||
if (ret) {
|
||||
snprintf (errmsg, sizeof (errmsg),
|
||||
"The hook-script (%s) required "
|
||||
"for push-pem is not present. "
|
||||
"Please install the hook-script "
|
||||
"and retry", hook_script);
|
||||
len = snprintf (errmsg, sizeof (errmsg),
|
||||
"The hook-script (%s) "
|
||||
"required for push-pem is not "
|
||||
"present. Please install the "
|
||||
"hook-script and retry",
|
||||
hook_script);
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
gf_msg (this->name, GF_LOG_ERROR, ENOENT,
|
||||
GD_MSG_FILE_OP_FAILED, "%s", errmsg);
|
||||
*op_errstr = gf_strdup (errmsg);
|
||||
@ -3197,11 +3241,15 @@ glusterd_op_stage_gsync_create (dict_t *dict, char **op_errstr)
|
||||
}
|
||||
|
||||
if (!S_ISREG(stbuf.st_mode)) {
|
||||
snprintf (errmsg, sizeof (errmsg), "%s"
|
||||
" required for push-pem is"
|
||||
" not a regular file. Please run"
|
||||
" \"gluster system:: execute"
|
||||
" gsec_create\"", common_pem_file);
|
||||
len = snprintf (errmsg, sizeof (errmsg), "%s"
|
||||
" required for push-pem is"
|
||||
" not a regular file. Please"
|
||||
" run \"gluster system:: "
|
||||
"execute gsec_create\"",
|
||||
common_pem_file);
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
gf_msg (this->name, GF_LOG_ERROR, 0,
|
||||
GD_MSG_REG_FILE_MISSING, "%s", errmsg);
|
||||
ret = -1;
|
||||
@ -3314,16 +3362,23 @@ glusterd_op_stage_gsync_create (dict_t *dict, char **op_errstr)
|
||||
|
||||
/* Do the check, only if different slave host/slave user */
|
||||
if (is_different_slavehost || is_different_username) {
|
||||
(void) snprintf (old_confpath, sizeof(old_confpath) - 1,
|
||||
"%s/"GEOREP"/%s_%s_%s/gsyncd.conf",
|
||||
conf->workdir, volinfo->volname,
|
||||
slave1.old_slvhost, slave_vol);
|
||||
len = snprintf (old_confpath, sizeof(old_confpath),
|
||||
"%s/"GEOREP"/%s_%s_%s/gsyncd.conf",
|
||||
conf->workdir, volinfo->volname,
|
||||
slave1.old_slvhost, slave_vol);
|
||||
if ((len < 0) || (len >= sizeof(old_confpath))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* construct old slave url with (old) slave host */
|
||||
(void) snprintf (old_slave_url,
|
||||
sizeof(old_slave_url) - 1,
|
||||
"%s::%s", slave1.old_slvhost,
|
||||
slave_vol);
|
||||
len = snprintf (old_slave_url, sizeof(old_slave_url),
|
||||
"%s::%s", slave1.old_slvhost,
|
||||
slave_vol);
|
||||
if ((len < 0) || (len >= sizeof(old_slave_url))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = glusterd_check_gsync_running_local (volinfo->volname,
|
||||
old_slave_url, old_confpath, &is_running);
|
||||
@ -4450,6 +4505,7 @@ glusterd_read_status_file (glusterd_volinfo_t *volinfo, char *slave,
|
||||
glusterd_conf_t *priv = NULL;
|
||||
struct stat stbuf = {0,};
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -4469,8 +4525,11 @@ glusterd_read_status_file (glusterd_volinfo_t *volinfo, char *slave,
|
||||
|
||||
priv = THIS->private;
|
||||
|
||||
snprintf (temp_conf_path, sizeof(temp_conf_path) - 1,
|
||||
"%s/"GSYNC_CONF_TEMPLATE, priv->workdir);
|
||||
len = snprintf (temp_conf_path, sizeof(temp_conf_path),
|
||||
"%s/"GSYNC_CONF_TEMPLATE, priv->workdir);
|
||||
if ((len < 0) || (len >= sizeof(temp_conf_path))) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = sys_lstat (conf_path, &stbuf);
|
||||
if (!ret) {
|
||||
@ -5296,6 +5355,7 @@ glusterd_op_copy_file (dict_t *dict, char **op_errstr)
|
||||
struct stat stbuf = {0,};
|
||||
gf_boolean_t free_contents = _gf_true;
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -5321,15 +5381,22 @@ glusterd_op_copy_file (dict_t *dict, char **op_errstr)
|
||||
*op_errstr = gf_strdup ("command unsuccessful");
|
||||
goto out;
|
||||
}
|
||||
snprintf (abs_filename, sizeof(abs_filename),
|
||||
"%s/%s", priv->workdir, filename);
|
||||
len = snprintf (abs_filename, sizeof(abs_filename),
|
||||
"%s/%s", priv->workdir, filename);
|
||||
if ((len < 0) || (len >= sizeof(abs_filename))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
uuid_utoa_r (MY_UUID, uuid_str);
|
||||
if (!strcmp (uuid_str, host_uuid)) {
|
||||
ret = sys_lstat (abs_filename, &stbuf);
|
||||
if (ret) {
|
||||
snprintf (errmsg, sizeof (errmsg), "Source file"
|
||||
" does not exist in %s", priv->workdir);
|
||||
len = snprintf (errmsg, sizeof (errmsg), "Source file "
|
||||
"does not exist in %s", priv->workdir);
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
*op_errstr = gf_strdup (errmsg);
|
||||
gf_msg (this->name, GF_LOG_ERROR, ENOENT,
|
||||
GD_MSG_FILE_OP_FAILED, "%s", errmsg);
|
||||
@ -5350,8 +5417,11 @@ glusterd_op_copy_file (dict_t *dict, char **op_errstr)
|
||||
|
||||
fd = open (abs_filename, O_RDONLY);
|
||||
if (fd < 0) {
|
||||
snprintf (errmsg, sizeof (errmsg), "Unable to open %s",
|
||||
abs_filename);
|
||||
len = snprintf (errmsg, sizeof (errmsg),
|
||||
"Unable to open %s", abs_filename);
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
*op_errstr = gf_strdup (errmsg);
|
||||
gf_msg (this->name, GF_LOG_ERROR, 0,
|
||||
GD_MSG_FILE_OP_FAILED,
|
||||
@ -5370,8 +5440,12 @@ glusterd_op_copy_file (dict_t *dict, char **op_errstr)
|
||||
} while (ret > 0);
|
||||
|
||||
if (bytes_read != stbuf.st_size) {
|
||||
snprintf (errmsg, sizeof (errmsg), "Unable to read all "
|
||||
"the data from %s", abs_filename);
|
||||
len = snprintf (errmsg, sizeof (errmsg),
|
||||
"Unable to read all the data from %s",
|
||||
abs_filename);
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
*op_errstr = gf_strdup (errmsg);
|
||||
gf_msg (this->name, GF_LOG_ERROR, 0, GD_MSG_READ_ERROR,
|
||||
"%s", errmsg);
|
||||
@ -5446,8 +5520,11 @@ glusterd_op_copy_file (dict_t *dict, char **op_errstr)
|
||||
|
||||
fd = open (abs_filename, O_WRONLY | O_TRUNC | O_CREAT, 0600);
|
||||
if (fd < 0) {
|
||||
snprintf (errmsg, sizeof (errmsg), "Unable to open %s",
|
||||
abs_filename);
|
||||
len = snprintf (errmsg, sizeof (errmsg),
|
||||
"Unable to open %s", abs_filename);
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
*op_errstr = gf_strdup (errmsg);
|
||||
gf_msg (this->name, GF_LOG_ERROR, 0,
|
||||
GD_MSG_FILE_OP_FAILED, "%s", errmsg);
|
||||
@ -5458,8 +5535,11 @@ glusterd_op_copy_file (dict_t *dict, char **op_errstr)
|
||||
bytes_writen = sys_write (fd, contents, contents_size);
|
||||
|
||||
if (bytes_writen != contents_size) {
|
||||
snprintf (errmsg, sizeof (errmsg), "Failed to write"
|
||||
" to %s", abs_filename);
|
||||
len = snprintf (errmsg, sizeof (errmsg),
|
||||
"Failed to write to %s", abs_filename);
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
*op_errstr = gf_strdup (errmsg);
|
||||
gf_msg (this->name, GF_LOG_ERROR, 0,
|
||||
GD_MSG_FILE_OP_FAILED, "%s", errmsg);
|
||||
@ -6174,6 +6254,7 @@ glusterd_create_essential_dir_files (glusterd_volinfo_t *volinfo, dict_t *dict,
|
||||
glusterd_conf_t *conf = NULL;
|
||||
struct stat stbuf = {0,};
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -6198,13 +6279,19 @@ glusterd_create_essential_dir_files (glusterd_volinfo_t *volinfo, dict_t *dict,
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = snprintf (buf, sizeof(buf) - 1, "%s/"GEOREP"/%s_%s_%s",
|
||||
ret = snprintf (buf, sizeof(buf), "%s/"GEOREP"/%s_%s_%s",
|
||||
conf->workdir, volinfo->volname, slave_host, slave_vol);
|
||||
buf[ret] = '\0';
|
||||
if ((ret < 0) || (ret >= sizeof(buf))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
ret = mkdir_p (buf, 0777, _gf_true);
|
||||
if (ret) {
|
||||
snprintf (errmsg, sizeof (errmsg), "Unable to create %s"
|
||||
". Error : %s", buf, strerror (errno));
|
||||
len = snprintf (errmsg, sizeof (errmsg), "Unable to create %s"
|
||||
". Error : %s", buf, strerror (errno));
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
*op_errstr = gf_strdup (errmsg);
|
||||
gf_msg (this->name, GF_LOG_ERROR, errno, GD_MSG_DIR_OP_FAILED,
|
||||
"%s", errmsg);
|
||||
@ -6213,11 +6300,17 @@ glusterd_create_essential_dir_files (glusterd_volinfo_t *volinfo, dict_t *dict,
|
||||
|
||||
ret = snprintf (buf, PATH_MAX, DEFAULT_LOG_FILE_DIRECTORY"/"GEOREP"/%s",
|
||||
volinfo->volname);
|
||||
buf[ret] = '\0';
|
||||
if ((ret < 0) || (ret >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
ret = mkdir_p (buf, 0777, _gf_true);
|
||||
if (ret) {
|
||||
snprintf (errmsg, sizeof (errmsg), "Unable to create %s"
|
||||
". Error : %s", buf, strerror (errno));
|
||||
len = snprintf (errmsg, sizeof (errmsg), "Unable to create %s"
|
||||
". Error : %s", buf, strerror (errno));
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
*op_errstr = gf_strdup (errmsg);
|
||||
gf_msg (this->name, GF_LOG_ERROR, errno, GD_MSG_DIR_OP_FAILED,
|
||||
"%s", errmsg);
|
||||
@ -6294,6 +6387,7 @@ glusterd_op_gsync_create (dict_t *dict, char **op_errstr, dict_t *rsp_dict)
|
||||
char *slave_voluuid = NULL;
|
||||
char *old_slavehost = NULL;
|
||||
gf_boolean_t is_existing_session = _gf_false;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -6307,8 +6401,12 @@ glusterd_op_gsync_create (dict_t *dict, char **op_errstr, dict_t *rsp_dict)
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
snprintf (common_pem_file, sizeof(common_pem_file),
|
||||
"%s"GLUSTERD_COMMON_PEM_PUB_FILE, conf->workdir);
|
||||
len = snprintf (common_pem_file, sizeof(common_pem_file),
|
||||
"%s"GLUSTERD_COMMON_PEM_PUB_FILE, conf->workdir);
|
||||
if ((len < 0) || (len >= sizeof(common_pem_file))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = glusterd_volinfo_find (volname, &volinfo);
|
||||
if (ret) {
|
||||
@ -6390,11 +6488,15 @@ glusterd_op_gsync_create (dict_t *dict, char **op_errstr, dict_t *rsp_dict)
|
||||
} else
|
||||
is_pem_push = 0;
|
||||
|
||||
snprintf(hooks_args, sizeof(hooks_args),
|
||||
"is_push_pem=%d,pub_file=%s,slave_user=%s,slave_ip=%s,"
|
||||
"slave_vol=%s,ssh_port=%d", is_pem_push,
|
||||
common_pem_file, slave_user, slave_ip, slave_vol,
|
||||
ssh_port);
|
||||
len = snprintf(hooks_args, sizeof(hooks_args),
|
||||
"is_push_pem=%d,pub_file=%s,slave_user=%s,"
|
||||
"slave_ip=%s,slave_vol=%s,ssh_port=%d",
|
||||
is_pem_push, common_pem_file, slave_user,
|
||||
slave_ip, slave_vol, ssh_port);
|
||||
if ((len < 0) || (len >= sizeof(hooks_args))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
} else
|
||||
snprintf(hooks_args, sizeof(hooks_args),
|
||||
"This argument will stop the hooks script");
|
||||
@ -6477,11 +6579,16 @@ create_essentials:
|
||||
"not present.",
|
||||
old_working_dir);
|
||||
} else {
|
||||
snprintf (errmsg, sizeof (errmsg),
|
||||
"rename of old working dir %s to "
|
||||
"new working dir %s failed! Error: %s",
|
||||
old_working_dir, new_working_dir,
|
||||
strerror (errno));
|
||||
len = snprintf (errmsg, sizeof (errmsg),
|
||||
"rename of old working dir %s "
|
||||
"to new working dir %s "
|
||||
"failed! Error: %s",
|
||||
old_working_dir,
|
||||
new_working_dir,
|
||||
strerror (errno));
|
||||
if (len < 0) {
|
||||
strcpy(errmsg, "<error>");
|
||||
}
|
||||
gf_msg (this->name, GF_LOG_INFO, 0,
|
||||
GD_MSG_FORCE_CREATE_SESSION,
|
||||
"rename of old working dir %s to "
|
||||
|
@ -33,10 +33,14 @@ glusterd_svc_build_gfproxyd_socket_filepath (glusterd_volinfo_t *volinfo,
|
||||
{
|
||||
char sockfilepath[PATH_MAX] = {0,};
|
||||
char rundir[PATH_MAX] = {0,};
|
||||
int32_t len = 0;
|
||||
|
||||
glusterd_svc_build_gfproxyd_rundir (volinfo, rundir, sizeof (rundir));
|
||||
snprintf (sockfilepath, sizeof (sockfilepath), "%s/run-%s",
|
||||
rundir, uuid_utoa (MY_UUID));
|
||||
len = snprintf (sockfilepath, sizeof (sockfilepath), "%s/run-%s",
|
||||
rundir, uuid_utoa (MY_UUID));
|
||||
if ((len < 0) || (len >= sizeof(sockfilepath))) {
|
||||
sockfilepath[0] = 0;
|
||||
}
|
||||
|
||||
glusterd_set_socket_filepath (sockfilepath, path, path_len);
|
||||
}
|
||||
|
@ -62,6 +62,7 @@ int glusterd_gfproxydsvc_init (glusterd_volinfo_t *volinfo)
|
||||
glusterd_conn_notify_t notify = NULL;
|
||||
xlator_t *this = NULL;
|
||||
char *volfileserver = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_VALIDATE_OR_GOTO ("glusterd", this, out);
|
||||
@ -101,7 +102,12 @@ int glusterd_gfproxydsvc_init (glusterd_volinfo_t *volinfo)
|
||||
goto out;
|
||||
}
|
||||
glusterd_svc_build_gfproxyd_logfile (logfile, logdir, sizeof (logfile));
|
||||
snprintf (volfileid, sizeof (volfileid), "gfproxyd/%s", volinfo->volname);
|
||||
len = snprintf (volfileid, sizeof (volfileid), "gfproxyd/%s",
|
||||
volinfo->volname);
|
||||
if ((len < 0) || (len >= sizeof(volfileid))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (dict_get_str (this->options, "transport.socket.bind-address",
|
||||
&volfileserver) != 0) {
|
||||
@ -264,6 +270,7 @@ glusterd_gfproxydsvc_start (glusterd_svc_t *svc, int flags)
|
||||
char gfproxyd_id[PATH_MAX] = {0,};
|
||||
glusterd_volinfo_t *volinfo = NULL;
|
||||
char *localtime_logging = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_VALIDATE_OR_GOTO ("glusterd", this, out);
|
||||
@ -292,8 +299,12 @@ glusterd_gfproxydsvc_start (glusterd_svc_t *svc, int flags)
|
||||
runinit (&runner);
|
||||
|
||||
if (this->ctx->cmd_args.valgrind) {
|
||||
snprintf (valgrind_logfile, PATH_MAX, "%s/valgrind-%s",
|
||||
svc->proc.logdir, svc->proc.logfile);
|
||||
len = snprintf (valgrind_logfile, PATH_MAX, "%s/valgrind-%s",
|
||||
svc->proc.logdir, svc->proc.logfile);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
runner_add_args (&runner, "valgrind", "--leak-check=full",
|
||||
"--trace-children=yes", "--track-origins=yes",
|
||||
|
@ -471,6 +471,7 @@ glusterd_add_volume_detail_to_dict (glusterd_volinfo_t *volinfo,
|
||||
struct args_pack pack = {0,};
|
||||
xlator_t *this = NULL;
|
||||
GF_UNUSED int caps = 0;
|
||||
int32_t len = 0;
|
||||
|
||||
GF_ASSERT (volinfo);
|
||||
GF_ASSERT (volumes);
|
||||
@ -654,8 +655,12 @@ glusterd_add_volume_detail_to_dict (glusterd_volinfo_t *volinfo,
|
||||
char brick[1024] = {0,};
|
||||
char brick_uuid[64] = {0,};
|
||||
snprintf (key, 256, "volume%d.brick%d", count, i);
|
||||
snprintf (brick, 1024, "%s:%s", brickinfo->hostname,
|
||||
brickinfo->path);
|
||||
len = snprintf (brick, 1024, "%s:%s", brickinfo->hostname,
|
||||
brickinfo->path);
|
||||
if ((len < 0) || (len >= 1024)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
buf = gf_strdup (brick);
|
||||
ret = dict_set_dynstr (volumes, key, buf);
|
||||
if (ret)
|
||||
|
@ -196,6 +196,7 @@ build_volfile_path (char *volume_id, char *path,
|
||||
xlator_t *this = NULL;
|
||||
glusterd_volinfo_t *volinfo = NULL;
|
||||
glusterd_conf_t *priv = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -321,13 +322,18 @@ build_volfile_path (char *volume_id, char *path,
|
||||
goto out;
|
||||
}
|
||||
|
||||
snprintf (path_prefix, sizeof (path_prefix), "%s/snaps/%s",
|
||||
priv->workdir, volinfo->snapshot->snapname);
|
||||
|
||||
len = snprintf (path_prefix, sizeof (path_prefix),
|
||||
"%s/snaps/%s", priv->workdir,
|
||||
volinfo->snapshot->snapname);
|
||||
volid_ptr = volname;
|
||||
/* this is to ensure that volname recvd from
|
||||
get_snap_volname_and_volinfo is free'd */
|
||||
free_ptr = volname;
|
||||
if ((len < 0) || (len >= sizeof(path_prefix))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
goto gotvolinfo;
|
||||
|
||||
}
|
||||
@ -408,8 +414,12 @@ build_volfile_path (char *volume_id, char *path,
|
||||
volid_ptr = volume_id;
|
||||
}
|
||||
|
||||
snprintf (path_prefix, sizeof (path_prefix), "%s/vols",
|
||||
priv->workdir);
|
||||
len = snprintf (path_prefix, sizeof (path_prefix), "%s/vols",
|
||||
priv->workdir);
|
||||
if ((len < 0) || (len >= sizeof(path_prefix))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = glusterd_volinfo_find (volid_ptr, &volinfo);
|
||||
|
||||
|
@ -80,6 +80,7 @@ glusterd_hooks_create_hooks_directory (char *basedir)
|
||||
"pre",
|
||||
"post"};
|
||||
glusterd_conf_t *priv = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
priv = THIS->private;
|
||||
|
||||
@ -106,8 +107,12 @@ glusterd_hooks_create_hooks_directory (char *basedir)
|
||||
if (strlen (cmd_subdir) == 0)
|
||||
continue;
|
||||
|
||||
snprintf (path, sizeof (path), "%s/%s", version_dir,
|
||||
cmd_subdir);
|
||||
len = snprintf (path, sizeof (path), "%s/%s", version_dir,
|
||||
cmd_subdir);
|
||||
if ((len < 0) || (len >= sizeof(path))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
ret = mkdir_p (path, 0777, _gf_true);
|
||||
if (ret) {
|
||||
gf_msg (THIS->name, GF_LOG_CRITICAL, errno,
|
||||
@ -119,8 +124,13 @@ glusterd_hooks_create_hooks_directory (char *basedir)
|
||||
|
||||
for (type = GD_COMMIT_HOOK_PRE; type < GD_COMMIT_HOOK_MAX;
|
||||
type++) {
|
||||
snprintf (path, sizeof (path), "%s/%s/%s",
|
||||
version_dir, cmd_subdir, type_subdir[type]);
|
||||
len = snprintf (path, sizeof (path), "%s/%s/%s",
|
||||
version_dir, cmd_subdir,
|
||||
type_subdir[type]);
|
||||
if ((len < 0) || (len >= sizeof(path))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
ret = mkdir_p (path, 0777, _gf_true);
|
||||
if (ret) {
|
||||
gf_msg (THIS->name, GF_LOG_CRITICAL, errno,
|
||||
|
@ -13,8 +13,14 @@
|
||||
#include <fnmatch.h>
|
||||
|
||||
#define GLUSTERD_GET_HOOKS_DIR(path, version, priv) \
|
||||
snprintf (path, PATH_MAX, "%s/hooks/%d", priv->workdir,\
|
||||
version);
|
||||
do { \
|
||||
int32_t len; \
|
||||
len = snprintf (path, PATH_MAX, "%s/hooks/%d", priv->workdir,\
|
||||
version); \
|
||||
if (len < 0) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_HOOK_VER 1
|
||||
|
||||
|
@ -41,6 +41,7 @@ gd_mgmt_v3_collate_errors (struct syncargs *args, int op_ret, int op_errno,
|
||||
int is_operrstr_blk = 0;
|
||||
char *err_string = NULL;
|
||||
glusterd_peerinfo_t *peerinfo = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -113,8 +114,11 @@ gd_mgmt_v3_collate_errors (struct syncargs *args, int op_ret, int op_errno,
|
||||
}
|
||||
|
||||
if (args->errstr) {
|
||||
snprintf (err_str, sizeof(err_str),
|
||||
"%s\n%s", args->errstr, op_err);
|
||||
len = snprintf (err_str, sizeof(err_str),
|
||||
"%s\n%s", args->errstr, op_err);
|
||||
if (len < 0) {
|
||||
strcpy(err_str, "<error>");
|
||||
}
|
||||
GF_FREE (args->errstr);
|
||||
args->errstr = NULL;
|
||||
} else
|
||||
|
@ -790,6 +790,7 @@ glusterd_validate_shared_storage (char *key, char *value, char *errstr)
|
||||
char hook_script[PATH_MAX] = "";
|
||||
xlator_t *this = NULL;
|
||||
glusterd_conf_t *conf = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_VALIDATE_OR_GOTO ("glusterd", this, out);
|
||||
@ -818,16 +819,23 @@ glusterd_validate_shared_storage (char *key, char *value, char *errstr)
|
||||
goto out;
|
||||
}
|
||||
|
||||
snprintf (hook_script, sizeof(hook_script),
|
||||
"%s"GLUSTERD_SHRD_STRG_HOOK_SCRIPT, conf->workdir);
|
||||
len = snprintf (hook_script, sizeof(hook_script),
|
||||
"%s"GLUSTERD_SHRD_STRG_HOOK_SCRIPT, conf->workdir);
|
||||
if ((len < 0) || (len >= sizeof(hook_script))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = sys_access (hook_script, R_OK|X_OK);
|
||||
if (ret) {
|
||||
snprintf (errstr, PATH_MAX,
|
||||
"The hook-script (%s) required "
|
||||
"for this operation is not present. "
|
||||
"Please install the hook-script "
|
||||
"and retry", hook_script);
|
||||
len = snprintf (errstr, PATH_MAX,
|
||||
"The hook-script (%s) required "
|
||||
"for this operation is not present. "
|
||||
"Please install the hook-script "
|
||||
"and retry", hook_script);
|
||||
if (len < 0) {
|
||||
strncpy(errstr, "<error>", PATH_MAX);
|
||||
}
|
||||
gf_msg (this->name, GF_LOG_ERROR, ENOENT,
|
||||
GD_MSG_FILE_OP_FAILED, "%s", errstr);
|
||||
goto out;
|
||||
@ -2806,6 +2814,7 @@ glusterd_set_shared_storage (dict_t *dict, char *key, char *value,
|
||||
char hooks_args[PATH_MAX] = {0, };
|
||||
char errstr[PATH_MAX] = {0, };
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_VALIDATE_OR_GOTO ("glusterd", this, out);
|
||||
@ -2849,13 +2858,17 @@ glusterd_set_shared_storage (dict_t *dict, char *key, char *value,
|
||||
}
|
||||
|
||||
if (is_origin_glusterd (dict)) {
|
||||
snprintf(hooks_args, sizeof(hooks_args),
|
||||
"is_originator=1,local_node_hostname=%s",
|
||||
local_node_hostname);
|
||||
len = snprintf(hooks_args, sizeof(hooks_args),
|
||||
"is_originator=1,local_node_hostname=%s",
|
||||
local_node_hostname);
|
||||
} else {
|
||||
snprintf(hooks_args, sizeof(hooks_args),
|
||||
"is_originator=0,local_node_hostname=%s",
|
||||
local_node_hostname);
|
||||
len = snprintf(hooks_args, sizeof(hooks_args),
|
||||
"is_originator=0,local_node_hostname=%s",
|
||||
local_node_hostname);
|
||||
}
|
||||
if ((len < 0) || (len >= sizeof(hooks_args))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = dict_set_dynstr_with_alloc (dict, "hooks_args", hooks_args);
|
||||
@ -3402,6 +3415,7 @@ _add_remove_bricks_to_dict (dict_t *dict, glusterd_volinfo_t *volinfo,
|
||||
char dict_key[1024] ={0,};
|
||||
char *brick = NULL;
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
GF_ASSERT (dict);
|
||||
GF_ASSERT (volinfo);
|
||||
@ -3440,8 +3454,12 @@ _add_remove_bricks_to_dict (dict_t *dict, glusterd_volinfo_t *volinfo,
|
||||
}
|
||||
|
||||
memset (dict_key, 0, sizeof (dict_key));
|
||||
snprintf (dict_key, sizeof (dict_key), "%s.%s", prefix,
|
||||
brick_key);
|
||||
len = snprintf (dict_key, sizeof (dict_key), "%s.%s", prefix,
|
||||
brick_key);
|
||||
if ((len < 0) || (len >= sizeof(dict_key))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
ret = dict_set_str (dict, dict_key, brick);
|
||||
if (ret) {
|
||||
gf_msg (this->name, GF_LOG_ERROR, 0,
|
||||
@ -5300,9 +5318,10 @@ glusterd_op_commit_hook (glusterd_op_t op, dict_t *op_ctx,
|
||||
glusterd_conf_t *priv = NULL;
|
||||
char hookdir[PATH_MAX] = {0, };
|
||||
char scriptdir[PATH_MAX] = {0, };
|
||||
char type_subdir[256] = {0, };
|
||||
char *type_subdir = "";
|
||||
char *cmd_subdir = NULL;
|
||||
int ret = -1;
|
||||
int32_t len = 0;
|
||||
|
||||
priv = THIS->private;
|
||||
switch (type) {
|
||||
@ -5312,10 +5331,10 @@ glusterd_op_commit_hook (glusterd_op_t op, dict_t *op_ctx,
|
||||
break;
|
||||
|
||||
case GD_COMMIT_HOOK_PRE:
|
||||
strcpy (type_subdir, "pre");
|
||||
type_subdir = "pre";
|
||||
break;
|
||||
case GD_COMMIT_HOOK_POST:
|
||||
strcpy (type_subdir, "post");
|
||||
type_subdir = "post";
|
||||
break;
|
||||
}
|
||||
|
||||
@ -5324,8 +5343,11 @@ glusterd_op_commit_hook (glusterd_op_t op, dict_t *op_ctx,
|
||||
return -1;
|
||||
|
||||
GLUSTERD_GET_HOOKS_DIR (hookdir, GLUSTERD_HOOK_VER, priv);
|
||||
snprintf (scriptdir, sizeof (scriptdir), "%s/%s/%s",
|
||||
hookdir, cmd_subdir, type_subdir);
|
||||
len = snprintf (scriptdir, sizeof (scriptdir), "%s/%s/%s",
|
||||
hookdir, cmd_subdir, type_subdir);
|
||||
if ((len < 0) || (len >= sizeof(scriptdir))) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case GD_COMMIT_HOOK_NONE:
|
||||
@ -6981,7 +7003,7 @@ fill_shd_status_for_local_bricks (dict_t *dict, glusterd_volinfo_t *volinfo,
|
||||
dict_t *req_dict)
|
||||
{
|
||||
glusterd_brickinfo_t *brickinfo = NULL;
|
||||
char msg[1024] = {0,};
|
||||
char *msg = "self-heal-daemon is not running on";
|
||||
char key[1024] = {0,};
|
||||
char value[1024] = {0,};
|
||||
int ret = 0;
|
||||
@ -6989,7 +7011,6 @@ fill_shd_status_for_local_bricks (dict_t *dict, glusterd_volinfo_t *volinfo,
|
||||
int cmd_replica_index = -1;
|
||||
|
||||
this = THIS;
|
||||
snprintf (msg, sizeof (msg), "self-heal-daemon is not running on");
|
||||
|
||||
if (type == PER_HEAL_XL) {
|
||||
cmd_replica_index = get_replica_index_for_per_replica_cmd
|
||||
|
@ -249,6 +249,7 @@ _glusterd_quota_initiate_fs_crawl (glusterd_conf_t *priv,
|
||||
runner_t runner = {0};
|
||||
char *volfileserver = NULL;
|
||||
FILE *pidfp = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
GF_VALIDATE_OR_GOTO ("glusterd", THIS, out);
|
||||
|
||||
@ -272,16 +273,25 @@ _glusterd_quota_initiate_fs_crawl (glusterd_conf_t *priv,
|
||||
}
|
||||
|
||||
GLUSTERD_REMOVE_SLASH_FROM_PATH (brick->path, brickpath);
|
||||
snprintf (logfile, sizeof (logfile),
|
||||
DEFAULT_QUOTA_CRAWL_LOG_DIRECTORY"/%s.log",
|
||||
brickpath);
|
||||
len = snprintf (logfile, sizeof (logfile),
|
||||
DEFAULT_QUOTA_CRAWL_LOG_DIRECTORY"/%s.log",
|
||||
brickpath);
|
||||
if ((len < 0) || (len >= sizeof(vol_id))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (dict_get_str (THIS->options, "transport.socket.bind-address",
|
||||
&volfileserver) != 0)
|
||||
volfileserver = "localhost";
|
||||
|
||||
snprintf (vol_id, sizeof (vol_id), "client_per_brick/%s.%s.%s.%s.vol",
|
||||
volinfo->volname, "client", brick->hostname, brickpath);
|
||||
len = snprintf (vol_id, sizeof (vol_id),
|
||||
"client_per_brick/%s.%s.%s.%s.vol", volinfo->volname,
|
||||
"client", brick->hostname, brickpath);
|
||||
if ((len < 0) || (len >= sizeof(vol_id))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
runinit (&runner);
|
||||
|
||||
@ -370,13 +380,15 @@ _glusterd_quota_initiate_fs_crawl (glusterd_conf_t *priv,
|
||||
_exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
snprintf (pidfile, sizeof (pidfile), "%s/%s.pid", pid_dir,
|
||||
brickpath);
|
||||
pidfp = fopen (pidfile, "w");
|
||||
if (pidfp) {
|
||||
fprintf (pidfp, "%d\n", runner.chpid);
|
||||
fflush (pidfp);
|
||||
fclose (pidfp);
|
||||
len = snprintf (pidfile, sizeof (pidfile), "%s/%s.pid",
|
||||
pid_dir, brickpath);
|
||||
if ((len >= 0) && (len < sizeof(pidfile))) {
|
||||
pidfp = fopen (pidfile, "w");
|
||||
if (pidfp >= 0) {
|
||||
fprintf (pidfp, "%d\n", runner.chpid);
|
||||
fflush (pidfp);
|
||||
fclose (pidfp);
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef GF_LINUX_HOST_OS
|
||||
@ -402,6 +414,7 @@ glusterd_stop_all_quota_crawl_service (glusterd_conf_t *priv,
|
||||
struct dirent scratch[2] = {{0,},};
|
||||
char pid_dir[PATH_MAX] = {0,};
|
||||
char pidfile[PATH_MAX] = {0,};
|
||||
int32_t len = 0;
|
||||
|
||||
GLUSTERD_GET_QUOTA_CRAWL_PIDDIR (pid_dir, volinfo, type);
|
||||
|
||||
@ -411,12 +424,13 @@ glusterd_stop_all_quota_crawl_service (glusterd_conf_t *priv,
|
||||
|
||||
GF_SKIP_IRRELEVANT_ENTRIES (entry, dir, scratch);
|
||||
while (entry) {
|
||||
snprintf (pidfile, sizeof (pidfile), "%s/%s",
|
||||
pid_dir, entry->d_name);
|
||||
|
||||
glusterd_service_stop_nolock ("quota_crawl", pidfile, SIGKILL,
|
||||
_gf_true);
|
||||
sys_unlink (pidfile);
|
||||
len = snprintf (pidfile, sizeof (pidfile), "%s/%s",
|
||||
pid_dir, entry->d_name);
|
||||
if ((len >= 0) && (len < sizeof(pidfile))) {
|
||||
glusterd_service_stop_nolock ("quota_crawl", pidfile,
|
||||
SIGKILL, _gf_true);
|
||||
sys_unlink (pidfile);
|
||||
}
|
||||
|
||||
GF_SKIP_IRRELEVANT_ENTRIES (entry, dir, scratch);
|
||||
}
|
||||
|
@ -29,10 +29,14 @@ glusterd_svc_build_snapd_socket_filepath (glusterd_volinfo_t *volinfo,
|
||||
{
|
||||
char sockfilepath[PATH_MAX] = {0,};
|
||||
char rundir[PATH_MAX] = {0,};
|
||||
int32_t len = 0;
|
||||
|
||||
glusterd_svc_build_snapd_rundir (volinfo, rundir, sizeof (rundir));
|
||||
snprintf (sockfilepath, sizeof (sockfilepath), "%s/run-%s",
|
||||
rundir, uuid_utoa (MY_UUID));
|
||||
len = snprintf (sockfilepath, sizeof (sockfilepath), "%s/run-%s",
|
||||
rundir, uuid_utoa (MY_UUID));
|
||||
if ((len < 0) || (len >= sizeof(sockfilepath))) {
|
||||
sockfilepath[0] = 0;
|
||||
}
|
||||
|
||||
glusterd_set_socket_filepath (sockfilepath, path, path_len);
|
||||
}
|
||||
|
@ -62,6 +62,7 @@ glusterd_snapdsvc_init (void *data)
|
||||
glusterd_conn_notify_t notify = NULL;
|
||||
xlator_t *this = NULL;
|
||||
char *volfileserver = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -102,7 +103,12 @@ glusterd_snapdsvc_init (void *data)
|
||||
goto out;
|
||||
}
|
||||
glusterd_svc_build_snapd_logfile (logfile, logdir, sizeof (logfile));
|
||||
snprintf (volfileid, sizeof (volfileid), "snapd/%s", volinfo->volname);
|
||||
len = snprintf (volfileid, sizeof (volfileid), "snapd/%s",
|
||||
volinfo->volname);
|
||||
if ((len < 0) || (len >= sizeof(volfileid))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (dict_get_str (this->options, "transport.socket.bind-address",
|
||||
&volfileserver) != 0) {
|
||||
@ -227,6 +233,7 @@ glusterd_snapdsvc_start (glusterd_svc_t *svc, int flags)
|
||||
glusterd_volinfo_t *volinfo = NULL;
|
||||
glusterd_snapdsvc_t *snapd = NULL;
|
||||
char *localtime_logging = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT(this);
|
||||
@ -282,8 +289,12 @@ glusterd_snapdsvc_start (glusterd_svc_t *svc, int flags)
|
||||
runinit (&runner);
|
||||
|
||||
if (this->ctx->cmd_args.valgrind) {
|
||||
snprintf (valgrind_logfile, PATH_MAX, "%s/valgrind-snapd.log",
|
||||
svc->proc.logdir);
|
||||
len = snprintf (valgrind_logfile, PATH_MAX,
|
||||
"%s/valgrind-snapd.log", svc->proc.logdir);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
runner_add_args (&runner, "valgrind", "--leak-check=full",
|
||||
"--trace-children=yes", "--track-origins=yes",
|
||||
|
@ -669,8 +669,8 @@ int32_t
|
||||
glusterd_add_snap_to_dict (glusterd_snap_t *snap, dict_t *peer_data,
|
||||
int32_t snap_count)
|
||||
{
|
||||
char buf[NAME_MAX] = "";
|
||||
char prefix[NAME_MAX] = "";
|
||||
char buf[64] = "";
|
||||
char prefix[32] = "";
|
||||
int32_t ret = -1;
|
||||
int32_t volcount = 0;
|
||||
glusterd_volinfo_t *volinfo = NULL;
|
||||
@ -1551,8 +1551,8 @@ int32_t
|
||||
glusterd_import_friend_snap (dict_t *peer_data, int32_t snap_count,
|
||||
char *peer_snap_name, char *peer_snap_id)
|
||||
{
|
||||
char buf[NAME_MAX] = "";
|
||||
char prefix[NAME_MAX] = "";
|
||||
char buf[64] = "";
|
||||
char prefix[32] = "";
|
||||
dict_t *dict = NULL;
|
||||
glusterd_snap_t *snap = NULL;
|
||||
glusterd_volinfo_t *snap_vol = NULL;
|
||||
@ -1792,8 +1792,8 @@ int32_t
|
||||
glusterd_compare_snap (dict_t *peer_data, int32_t snap_count,
|
||||
char *peername, uuid_t peerid)
|
||||
{
|
||||
char buf[NAME_MAX] = "";
|
||||
char prefix[NAME_MAX] = "";
|
||||
char buf[64] = "";
|
||||
char prefix[32] = "";
|
||||
char *peer_snap_name = NULL;
|
||||
char *peer_snap_id = NULL;
|
||||
glusterd_snap_t *snap = NULL;
|
||||
@ -1994,8 +1994,8 @@ glusterd_update_snaps_synctask (void *opaque)
|
||||
int i = 1;
|
||||
xlator_t *this = NULL;
|
||||
dict_t *peer_data = NULL;
|
||||
char buf[NAME_MAX] = "";
|
||||
char prefix[NAME_MAX] = "";
|
||||
char buf[64] = "";
|
||||
char prefix[32] = "";
|
||||
char *peer_snap_name = NULL;
|
||||
char *peer_snap_id = NULL;
|
||||
char *peername = NULL;
|
||||
@ -2205,8 +2205,8 @@ glusterd_add_snapd_to_dict (glusterd_volinfo_t *volinfo,
|
||||
int ret = -1;
|
||||
int32_t pid = -1;
|
||||
int32_t brick_online = -1;
|
||||
char key[1024] = {0};
|
||||
char base_key[1024] = {0};
|
||||
char key[64] = {0};
|
||||
char base_key[32] = {0};
|
||||
char pidfile[PATH_MAX] = {0};
|
||||
xlator_t *this = NULL;
|
||||
|
||||
@ -2433,8 +2433,8 @@ glusterd_merge_brick_status (dict_t *dst, dict_t *src)
|
||||
int64_t j = 0;
|
||||
int64_t brick_count = 0;
|
||||
int64_t brick_order = 0;
|
||||
char key[PATH_MAX] = {0, };
|
||||
char key_prefix[PATH_MAX] = {0, };
|
||||
char key[64] = {0, };
|
||||
char key_prefix[16] = {0, };
|
||||
char snapbrckcnt[PATH_MAX] = {0, };
|
||||
char snapbrckord[PATH_MAX] = {0, };
|
||||
char *clonename = NULL;
|
||||
@ -2510,7 +2510,7 @@ glusterd_merge_brick_status (dict_t *dst, dict_t *src)
|
||||
goto out;
|
||||
}
|
||||
|
||||
snprintf (key, sizeof (key) - 1,
|
||||
snprintf (key, sizeof (key),
|
||||
"%s%"PRId64".brick%"PRId64".status",
|
||||
key_prefix, index+1, brick_order);
|
||||
ret = dict_get_int32 (src, key, &brick_online);
|
||||
@ -2852,6 +2852,7 @@ glusterd_mount_lvm_snapshot (glusterd_brickinfo_t *brickinfo,
|
||||
int32_t ret = -1;
|
||||
runner_t runner = {0, };
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -2860,8 +2861,11 @@ glusterd_mount_lvm_snapshot (glusterd_brickinfo_t *brickinfo,
|
||||
|
||||
|
||||
runinit (&runner);
|
||||
snprintf (msg, sizeof (msg), "mount %s %s",
|
||||
brickinfo->device_path, brick_mount_path);
|
||||
len = snprintf (msg, sizeof (msg), "mount %s %s",
|
||||
brickinfo->device_path, brick_mount_path);
|
||||
if (len < 0) {
|
||||
strcpy(msg, "<error>");
|
||||
}
|
||||
|
||||
gf_strncpy (mnt_opts, brickinfo->mnt_opts, sizeof(mnt_opts));
|
||||
|
||||
|
@ -280,8 +280,11 @@ snap_max_limits_display_commit (dict_t *rsp_dict, char *volname,
|
||||
count);
|
||||
ret = dict_set_str (rsp_dict, buf, volinfo->volname);
|
||||
if (ret) {
|
||||
snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
len = snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
if (len < 0) {
|
||||
strcpy(err_str, "<error>");
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -289,8 +292,11 @@ snap_max_limits_display_commit (dict_t *rsp_dict, char *volname,
|
||||
"volume%"PRId64"-snap-max-hard-limit", count);
|
||||
ret = dict_set_uint64 (rsp_dict, buf, snap_max_limit);
|
||||
if (ret) {
|
||||
snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
len = snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
if (len < 0) {
|
||||
strcpy(err_str, "<error>");
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -299,8 +305,11 @@ snap_max_limits_display_commit (dict_t *rsp_dict, char *volname,
|
||||
ret = dict_set_uint64 (rsp_dict, buf,
|
||||
active_hard_limit);
|
||||
if (ret) {
|
||||
snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
len = snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
if (len < 0) {
|
||||
strcpy(err_str, "<error>");
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -308,8 +317,11 @@ snap_max_limits_display_commit (dict_t *rsp_dict, char *volname,
|
||||
"volume%"PRId64"-snap-max-soft-limit", count);
|
||||
ret = dict_set_uint64 (rsp_dict, buf, soft_limit_value);
|
||||
if (ret) {
|
||||
snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
len = snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
if (len < 0) {
|
||||
strcpy(err_str, "<error>");
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
count++;
|
||||
@ -342,8 +354,11 @@ snap_max_limits_display_commit (dict_t *rsp_dict, char *volname,
|
||||
snprintf (buf, sizeof(buf), "volume%"PRId64"-volname", count);
|
||||
ret = dict_set_str (rsp_dict, buf, volinfo->volname);
|
||||
if (ret) {
|
||||
snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
len = snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
if (len < 0) {
|
||||
strcpy(err_str, "<error>");
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -351,8 +366,11 @@ snap_max_limits_display_commit (dict_t *rsp_dict, char *volname,
|
||||
"volume%"PRId64"-snap-max-hard-limit", count);
|
||||
ret = dict_set_uint64 (rsp_dict, buf, snap_max_limit);
|
||||
if (ret) {
|
||||
snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
len = snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
if (len < 0) {
|
||||
strcpy(err_str, "<error>");
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -360,8 +378,11 @@ snap_max_limits_display_commit (dict_t *rsp_dict, char *volname,
|
||||
"volume%"PRId64"-active-hard-limit", count);
|
||||
ret = dict_set_uint64 (rsp_dict, buf, active_hard_limit);
|
||||
if (ret) {
|
||||
snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
len = snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
if (len < 0) {
|
||||
strcpy(err_str, "<error>");
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -369,8 +390,11 @@ snap_max_limits_display_commit (dict_t *rsp_dict, char *volname,
|
||||
"volume%"PRId64"-snap-max-soft-limit", count);
|
||||
ret = dict_set_uint64 (rsp_dict, buf, soft_limit_value);
|
||||
if (ret) {
|
||||
snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
len = snprintf (err_str, PATH_MAX,
|
||||
"Failed to set %s", buf);
|
||||
if (len < 0) {
|
||||
strcpy(err_str, "<error>");
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -605,6 +629,7 @@ glusterd_snapshot_backup_vol (glusterd_volinfo_t *volinfo)
|
||||
char trashdir[PATH_MAX] = {0,};
|
||||
glusterd_conf_t *priv = NULL;
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -614,12 +639,18 @@ glusterd_snapshot_backup_vol (glusterd_volinfo_t *volinfo)
|
||||
|
||||
GLUSTERD_GET_VOLUME_DIR (pathname, volinfo, priv);
|
||||
|
||||
snprintf (delete_path, sizeof (delete_path),
|
||||
"%s/"GLUSTERD_TRASH"/vols-%s.deleted", priv->workdir,
|
||||
volinfo->volname);
|
||||
len = snprintf (delete_path, sizeof (delete_path),
|
||||
"%s/"GLUSTERD_TRASH"/vols-%s.deleted", priv->workdir,
|
||||
volinfo->volname);
|
||||
if ((len < 0) || (len >= sizeof(delete_path))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
snprintf (trashdir, sizeof (trashdir), "%s/"GLUSTERD_TRASH,
|
||||
priv->workdir);
|
||||
len = snprintf (trashdir, sizeof (trashdir), "%s/"GLUSTERD_TRASH,
|
||||
priv->workdir);
|
||||
if ((len < 0) || (len >= sizeof(delete_path))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Create trash folder if it is not there */
|
||||
ret = sys_mkdir (trashdir, 0777);
|
||||
@ -2110,6 +2141,7 @@ glusterd_snap_create_clone_common_prevalidate (dict_t *rsp_dict, int flags,
|
||||
xlator_t *this = NULL;
|
||||
glusterd_conf_t *conf = NULL;
|
||||
glusterd_brickinfo_t *brickinfo = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
conf = this->private;
|
||||
@ -2170,10 +2202,13 @@ glusterd_snap_create_clone_common_prevalidate (dict_t *rsp_dict, int flags,
|
||||
orig_device = glusterd_get_brick_mount_device
|
||||
(brickinfo->path);
|
||||
if (!orig_device) {
|
||||
snprintf (err_str, PATH_MAX,
|
||||
"getting device name for the brick "
|
||||
"%s:%s failed", brickinfo->hostname,
|
||||
brickinfo->path);
|
||||
len = snprintf (err_str, PATH_MAX,
|
||||
"getting device name for the brick "
|
||||
"%s:%s failed", brickinfo->hostname,
|
||||
brickinfo->path);
|
||||
if (len < 0) {
|
||||
strcpy(err_str, "<error>");
|
||||
}
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
@ -2746,6 +2781,7 @@ glusterd_do_lvm_snapshot_remove (glusterd_volinfo_t *snap_vol,
|
||||
int retry_count = 0;
|
||||
char *mnt_pt = NULL;
|
||||
gf_boolean_t unmount = _gf_true;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -2834,9 +2870,12 @@ glusterd_do_lvm_snapshot_remove (glusterd_volinfo_t *snap_vol,
|
||||
}
|
||||
|
||||
runinit (&runner);
|
||||
snprintf (msg, sizeof(msg), "remove snapshot of the brick %s:%s, "
|
||||
"device: %s", brickinfo->hostname, brickinfo->path,
|
||||
snap_device);
|
||||
len = snprintf (msg, sizeof(msg), "remove snapshot of the brick %s:%s, "
|
||||
"device: %s", brickinfo->hostname, brickinfo->path,
|
||||
snap_device);
|
||||
if (len < 0) {
|
||||
strcpy(msg, "<error>");
|
||||
}
|
||||
runner_add_args (&runner, LVM_REMOVE, "-f", snap_device, NULL);
|
||||
runner_log (&runner, "", GF_LOG_DEBUG, msg);
|
||||
|
||||
@ -4612,6 +4651,7 @@ glusterd_add_missed_snaps_to_dict (dict_t *rsp_dict,
|
||||
int32_t missed_snap_count = -1;
|
||||
int32_t ret = -1;
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -4625,10 +4665,13 @@ glusterd_add_missed_snaps_to_dict (dict_t *rsp_dict,
|
||||
goto out;
|
||||
}
|
||||
|
||||
snprintf (missed_snap_entry, sizeof(missed_snap_entry),
|
||||
"%s:%s=%s:%d:%s:%d:%d", uuid_utoa(brickinfo->uuid),
|
||||
snap_uuid, snap_vol->volname, brick_number, brickinfo->path,
|
||||
op, GD_MISSED_SNAP_PENDING);
|
||||
len = snprintf (missed_snap_entry, sizeof(missed_snap_entry),
|
||||
"%s:%s=%s:%d:%s:%d:%d", uuid_utoa(brickinfo->uuid),
|
||||
snap_uuid, snap_vol->volname, brick_number,
|
||||
brickinfo->path, op, GD_MISSED_SNAP_PENDING);
|
||||
if ((len < 0) || (len >= sizeof(missed_snap_entry))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Fetch the missed_snap_count from the dict */
|
||||
ret = dict_get_int32 (rsp_dict, "missed_snap_count",
|
||||
@ -4767,6 +4810,7 @@ glusterd_snap_brick_create (glusterd_volinfo_t *snap_volinfo,
|
||||
char snap_brick_mount_path[PATH_MAX] = "";
|
||||
char clone_uuid[64] = "";
|
||||
struct stat statbuf = {0, };
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
|
||||
@ -4775,13 +4819,18 @@ glusterd_snap_brick_create (glusterd_volinfo_t *snap_volinfo,
|
||||
|
||||
if (clone) {
|
||||
GLUSTERD_GET_UUID_NOHYPHEN(clone_uuid, snap_volinfo->volume_id);
|
||||
snprintf (snap_brick_mount_path, sizeof (snap_brick_mount_path),
|
||||
"%s/%s/brick%d", snap_mount_dir,
|
||||
clone_uuid, brick_count + 1);
|
||||
len = snprintf (snap_brick_mount_path,
|
||||
sizeof (snap_brick_mount_path),
|
||||
"%s/%s/brick%d", snap_mount_dir, clone_uuid,
|
||||
brick_count + 1);
|
||||
} else {
|
||||
snprintf (snap_brick_mount_path, sizeof (snap_brick_mount_path),
|
||||
"%s/%s/brick%d", snap_mount_dir,
|
||||
snap_volinfo->volname, brick_count + 1);
|
||||
len = snprintf (snap_brick_mount_path,
|
||||
sizeof (snap_brick_mount_path),
|
||||
"%s/%s/brick%d", snap_mount_dir,
|
||||
snap_volinfo->volname, brick_count + 1);
|
||||
}
|
||||
if ((len < 0) || (len >= sizeof(snap_brick_mount_path))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = mkdir_p (snap_brick_mount_path, 0777, _gf_true);
|
||||
@ -4864,6 +4913,7 @@ glusterd_add_brick_to_snap_volume (dict_t *dict, dict_t *rsp_dict,
|
||||
int32_t ret = -1;
|
||||
xlator_t *this = NULL;
|
||||
char abspath[PATH_MAX] = {0};
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -4978,15 +5028,19 @@ glusterd_add_brick_to_snap_volume (dict_t *dict, dict_t *rsp_dict,
|
||||
*/
|
||||
if (clone) {
|
||||
GLUSTERD_GET_UUID_NOHYPHEN(clone_uuid, snap_vol->volume_id);
|
||||
snprintf (snap_brick_path, sizeof(snap_brick_path),
|
||||
"%s/%s/brick%d%s", snap_mount_dir,
|
||||
clone_uuid, brick_count+1,
|
||||
snap_brick_dir);
|
||||
len = snprintf (snap_brick_path, sizeof(snap_brick_path),
|
||||
"%s/%s/brick%d%s", snap_mount_dir,
|
||||
clone_uuid, brick_count+1,
|
||||
snap_brick_dir);
|
||||
} else {
|
||||
snprintf (snap_brick_path, sizeof(snap_brick_path),
|
||||
"%s/%s/brick%d%s", snap_mount_dir,
|
||||
snap_vol->volname, brick_count+1,
|
||||
snap_brick_dir);
|
||||
len = snprintf (snap_brick_path, sizeof(snap_brick_path),
|
||||
"%s/%s/brick%d%s", snap_mount_dir,
|
||||
snap_vol->volname, brick_count+1,
|
||||
snap_brick_dir);
|
||||
}
|
||||
if ((len < 0) || (len >= sizeof(snap_brick_path))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
snprintf (key, sizeof(key), "vol%"PRId64".brick_snapdevice%d",
|
||||
@ -5070,6 +5124,7 @@ glusterd_update_fs_label (glusterd_brickinfo_t *brickinfo)
|
||||
uuid_t uuid = {0,};
|
||||
runner_t runner = {0,};
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -5090,8 +5145,11 @@ glusterd_update_fs_label (glusterd_brickinfo_t *brickinfo)
|
||||
/* XFS label is of size 12. Therefore we should truncate the
|
||||
* label to 12 bytes*/
|
||||
label [12] = '\0';
|
||||
snprintf (msg, sizeof (msg), "Changing filesystem label of "
|
||||
"%s brick to %s", brickinfo->path, label);
|
||||
len = snprintf (msg, sizeof (msg), "Changing filesystem label "
|
||||
"of %s brick to %s", brickinfo->path, label);
|
||||
if (len < 0) {
|
||||
strcpy(msg, "<error>");
|
||||
}
|
||||
/* Run the run xfs_admin tool to change the label
|
||||
* of the file-system */
|
||||
runner_add_args (&runner, "xfs_admin", "-L", label,
|
||||
@ -5102,8 +5160,11 @@ glusterd_update_fs_label (glusterd_brickinfo_t *brickinfo)
|
||||
/* Ext2/Ext3/Ext4 label is of size 16. Therefore we should
|
||||
* truncate the label to 16 bytes*/
|
||||
label [16] = '\0';
|
||||
snprintf (msg, sizeof (msg), "Changing filesystem label of "
|
||||
"%s brick to %s", brickinfo->path, label);
|
||||
len = snprintf (msg, sizeof (msg), "Changing filesystem label "
|
||||
"of %s brick to %s", brickinfo->path, label);
|
||||
if (len < 0) {
|
||||
strcpy(msg, "<error>");
|
||||
}
|
||||
/* For ext2/ext3/ext4 run tune2fs to change the
|
||||
* file-system label */
|
||||
runner_add_args (&runner, "tune2fs", "-L", label,
|
||||
@ -8818,6 +8879,7 @@ glusterd_remove_trashpath (char *volname)
|
||||
xlator_t *this = NULL;
|
||||
glusterd_conf_t *priv = NULL;
|
||||
struct stat stbuf = {0, };
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -8825,9 +8887,12 @@ glusterd_remove_trashpath (char *volname)
|
||||
|
||||
GF_ASSERT (volname);
|
||||
|
||||
snprintf (delete_path, sizeof (delete_path),
|
||||
"%s/"GLUSTERD_TRASH"/vols-%s.deleted", priv->workdir,
|
||||
volname);
|
||||
len = snprintf (delete_path, sizeof (delete_path),
|
||||
"%s/"GLUSTERD_TRASH"/vols-%s.deleted", priv->workdir,
|
||||
volname);
|
||||
if ((len < 0) || (len >= sizeof(delete_path))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = sys_lstat (delete_path, &stbuf);
|
||||
if (ret) {
|
||||
@ -8927,6 +8992,7 @@ glusterd_snapshot_revert_partial_restored_vol (glusterd_volinfo_t *volinfo)
|
||||
glusterd_volinfo_t *tmp_vol = NULL;
|
||||
glusterd_conf_t *priv = NULL;
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -8936,9 +9002,13 @@ glusterd_snapshot_revert_partial_restored_vol (glusterd_volinfo_t *volinfo)
|
||||
|
||||
GLUSTERD_GET_VOLUME_DIR (pathname, volinfo, priv);
|
||||
|
||||
snprintf (trash_path, sizeof (trash_path),
|
||||
"%s/"GLUSTERD_TRASH"/vols-%s.deleted", priv->workdir,
|
||||
volinfo->volname);
|
||||
len = snprintf (trash_path, sizeof (trash_path),
|
||||
"%s/"GLUSTERD_TRASH"/vols-%s.deleted", priv->workdir,
|
||||
volinfo->volname);
|
||||
if ((len < 0) || (len >= sizeof(trash_path))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Since snapshot restore failed we cannot rely on the volume
|
||||
* data stored under vols folder. Therefore delete the origin
|
||||
|
@ -20,10 +20,10 @@ static void
|
||||
glusterd_dump_peer (glusterd_peerinfo_t *peerinfo, char *input_key, int index,
|
||||
gf_boolean_t xpeers)
|
||||
{
|
||||
char subkey[50] = {0,};
|
||||
char key[GF_DUMP_MAX_BUF_LEN] = {0,};
|
||||
char subkey[144] = {0,};
|
||||
char key[128] = {0,};
|
||||
|
||||
strncpy (key, input_key, (GF_DUMP_MAX_BUF_LEN - 1));
|
||||
strncpy (key, input_key, sizeof(key) - 1);
|
||||
|
||||
snprintf (subkey, sizeof (subkey), "%s%d", key, index);
|
||||
|
||||
@ -64,10 +64,10 @@ glusterd_dump_peer_rpcstat (glusterd_peerinfo_t *peerinfo, char *input_key,
|
||||
int ret = -1;
|
||||
rpc_clnt_t *rpc = NULL;
|
||||
char rpcsvc_peername[RPCSVC_PEER_STRLEN] = {0,};
|
||||
char subkey[50] = {0,};
|
||||
char key[GF_DUMP_MAX_BUF_LEN] = {0,};
|
||||
char subkey[144] = {0,};
|
||||
char key[128] = {0,};
|
||||
|
||||
strncpy (key, input_key, (GF_DUMP_MAX_BUF_LEN - 1));
|
||||
strncpy (key, input_key, sizeof(key) - 1);
|
||||
|
||||
/* Dump the rpc connection statistics */
|
||||
rpc = peerinfo->rpc;
|
||||
|
@ -291,7 +291,7 @@ gd_store_brick_snap_details_write (int fd, glusterd_brickinfo_t *brickinfo)
|
||||
int ret = -1;
|
||||
xlator_t *this = NULL;
|
||||
glusterd_conf_t *conf = NULL;
|
||||
char value[256] = {0,};
|
||||
char value[PATH_MAX] = {0,};
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this != NULL);
|
||||
@ -640,6 +640,7 @@ glusterd_store_remove_bricks (glusterd_volinfo_t *volinfo, char *delete_path)
|
||||
struct dirent scratch[2] = {{0,},};
|
||||
char path[PATH_MAX] = {0,};
|
||||
char brickdir[PATH_MAX] = {0,};
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -655,20 +656,26 @@ glusterd_store_remove_bricks (glusterd_volinfo_t *volinfo, char *delete_path)
|
||||
priv = this->private;
|
||||
GF_ASSERT (priv);
|
||||
|
||||
snprintf (brickdir, sizeof (brickdir), "%s/%s", delete_path,
|
||||
GLUSTERD_BRICK_INFO_DIR);
|
||||
len = snprintf (brickdir, sizeof (brickdir), "%s/%s", delete_path,
|
||||
GLUSTERD_BRICK_INFO_DIR);
|
||||
if ((len < 0) || (len >= sizeof(brickdir))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
dir = sys_opendir (brickdir);
|
||||
|
||||
GF_SKIP_IRRELEVANT_ENTRIES (entry, dir, scratch);
|
||||
|
||||
while (entry) {
|
||||
snprintf (path, sizeof (path), "%s/%s",
|
||||
brickdir, entry->d_name);
|
||||
ret = sys_unlink (path);
|
||||
if (ret && errno != ENOENT) {
|
||||
gf_msg_debug (this->name, 0, "Unable to unlink %s",
|
||||
path);
|
||||
len = snprintf (path, sizeof (path), "%s/%s",
|
||||
brickdir, entry->d_name);
|
||||
if ((len >= 0) && (len < sizeof(path))) {
|
||||
ret = sys_unlink (path);
|
||||
if (ret && errno != ENOENT) {
|
||||
gf_msg_debug (this->name, 0,
|
||||
"Unable to unlink %s", path);
|
||||
}
|
||||
}
|
||||
GF_SKIP_IRRELEVANT_ENTRIES (entry, dir, scratch);
|
||||
}
|
||||
@ -1846,6 +1853,7 @@ glusterd_store_delete_volume (glusterd_volinfo_t *volinfo)
|
||||
char trashdir[PATH_MAX] = {0,};
|
||||
xlator_t *this = NULL;
|
||||
gf_boolean_t rename_fail = _gf_false;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -1857,12 +1865,20 @@ glusterd_store_delete_volume (glusterd_volinfo_t *volinfo)
|
||||
|
||||
GLUSTERD_GET_VOLUME_DIR (pathname, volinfo, priv);
|
||||
|
||||
snprintf (delete_path, sizeof (delete_path),
|
||||
"%s/"GLUSTERD_TRASH"/%s.deleted", priv->workdir,
|
||||
uuid_utoa (volinfo->volume_id));
|
||||
len = snprintf (delete_path, sizeof (delete_path),
|
||||
"%s/"GLUSTERD_TRASH"/%s.deleted", priv->workdir,
|
||||
uuid_utoa (volinfo->volume_id));
|
||||
if ((len < 0) || (len >= sizeof(delete_path))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
snprintf (trashdir, sizeof (trashdir), "%s/"GLUSTERD_TRASH,
|
||||
priv->workdir);
|
||||
len = snprintf (trashdir, sizeof (trashdir), "%s/"GLUSTERD_TRASH,
|
||||
priv->workdir);
|
||||
if ((len < 0) || (len >= sizeof(trashdir))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = sys_mkdir (trashdir, 0777);
|
||||
if (ret && errno != EEXIST) {
|
||||
@ -1916,6 +1932,7 @@ glusterd_store_delete_snap (glusterd_snap_t *snap)
|
||||
struct stat st = {0, };
|
||||
xlator_t *this = NULL;
|
||||
gf_boolean_t rename_fail = _gf_false;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
priv = this->private;
|
||||
@ -1924,12 +1941,20 @@ glusterd_store_delete_snap (glusterd_snap_t *snap)
|
||||
GF_ASSERT (snap);
|
||||
GLUSTERD_GET_SNAP_DIR (pathname, snap, priv);
|
||||
|
||||
snprintf (delete_path, sizeof (delete_path),
|
||||
"%s/"GLUSTERD_TRASH"/snap-%s.deleted", priv->workdir,
|
||||
uuid_utoa (snap->snap_id));
|
||||
len = snprintf (delete_path, sizeof (delete_path),
|
||||
"%s/"GLUSTERD_TRASH"/snap-%s.deleted", priv->workdir,
|
||||
uuid_utoa (snap->snap_id));
|
||||
if ((len < 0) || (len >= sizeof(delete_path))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
snprintf (trashdir, sizeof (trashdir), "%s/"GLUSTERD_TRASH,
|
||||
priv->workdir);
|
||||
len = snprintf (trashdir, sizeof (trashdir), "%s/"GLUSTERD_TRASH,
|
||||
priv->workdir);
|
||||
if ((len < 0) || (len >= sizeof(trashdir))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = sys_mkdir (trashdir, 0777);
|
||||
if (ret && errno != EEXIST) {
|
||||
@ -1959,7 +1984,12 @@ glusterd_store_delete_snap (glusterd_snap_t *snap)
|
||||
|
||||
GF_SKIP_IRRELEVANT_ENTRIES (entry, dir, scratch);
|
||||
while (entry) {
|
||||
snprintf (path, PATH_MAX, "%s/%s", delete_path, entry->d_name);
|
||||
len = snprintf (path, PATH_MAX, "%s/%s", delete_path,
|
||||
entry->d_name);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto stat_failed;
|
||||
}
|
||||
ret = sys_stat (path, &st);
|
||||
if (ret == -1) {
|
||||
gf_msg_debug (this->name, 0, "Failed to stat "
|
||||
@ -2022,6 +2052,7 @@ glusterd_store_global_info (xlator_t *this)
|
||||
char path[PATH_MAX] = {0,};
|
||||
gf_store_handle_t *handle = NULL;
|
||||
char *uuid_str = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
conf = this->private;
|
||||
|
||||
@ -2030,8 +2061,11 @@ glusterd_store_global_info (xlator_t *this)
|
||||
goto out;
|
||||
|
||||
if (!conf->handle) {
|
||||
snprintf (path, PATH_MAX, "%s/%s", conf->workdir,
|
||||
GLUSTERD_INFO_FILE);
|
||||
len = snprintf (path, PATH_MAX, "%s/%s", conf->workdir,
|
||||
GLUSTERD_INFO_FILE);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
goto out;
|
||||
}
|
||||
ret = gf_store_handle_new (path, &handle);
|
||||
if (ret) {
|
||||
gf_msg (this->name, GF_LOG_ERROR, 0,
|
||||
@ -2114,12 +2148,16 @@ glusterd_retrieve_op_version (xlator_t *this, int *op_version)
|
||||
char *tmp = NULL;
|
||||
char path[PATH_MAX] = {0,};
|
||||
gf_store_handle_t *handle = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
priv = this->private;
|
||||
|
||||
if (!priv->handle) {
|
||||
snprintf (path, PATH_MAX, "%s/%s", priv->workdir,
|
||||
GLUSTERD_INFO_FILE);
|
||||
len = snprintf (path, PATH_MAX, "%s/%s", priv->workdir,
|
||||
GLUSTERD_INFO_FILE);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
goto out;
|
||||
}
|
||||
ret = gf_store_handle_retrieve (path, &handle);
|
||||
|
||||
if (ret) {
|
||||
@ -2167,6 +2205,7 @@ glusterd_retrieve_sys_snap_max_limit (xlator_t *this, uint64_t *limit,
|
||||
char *tmp = NULL;
|
||||
char path[PATH_MAX] = {0,};
|
||||
gf_store_handle_t *handle = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
GF_ASSERT (this);
|
||||
priv = this->private;
|
||||
@ -2176,8 +2215,11 @@ glusterd_retrieve_sys_snap_max_limit (xlator_t *this, uint64_t *limit,
|
||||
GF_ASSERT (key);
|
||||
|
||||
if (!priv->handle) {
|
||||
snprintf (path, PATH_MAX, "%s/%s", priv->workdir,
|
||||
GLUSTERD_INFO_FILE);
|
||||
len = snprintf (path, PATH_MAX, "%s/%s", priv->workdir,
|
||||
GLUSTERD_INFO_FILE);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
goto out;
|
||||
}
|
||||
ret = gf_store_handle_retrieve (path, &handle);
|
||||
|
||||
if (ret) {
|
||||
@ -2282,13 +2324,17 @@ glusterd_retrieve_uuid ()
|
||||
glusterd_conf_t *priv = NULL;
|
||||
xlator_t *this = NULL;
|
||||
char path[PATH_MAX] = {0,};
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
priv = this->private;
|
||||
|
||||
if (!priv->handle) {
|
||||
snprintf (path, PATH_MAX, "%s/%s", priv->workdir,
|
||||
GLUSTERD_INFO_FILE);
|
||||
len = snprintf (path, PATH_MAX, "%s/%s", priv->workdir,
|
||||
GLUSTERD_INFO_FILE);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
goto out;
|
||||
}
|
||||
ret = gf_store_handle_retrieve (path, &handle);
|
||||
|
||||
if (ret) {
|
||||
@ -2332,6 +2378,7 @@ glusterd_store_retrieve_snapd (glusterd_volinfo_t *volinfo)
|
||||
glusterd_conf_t *conf = NULL;
|
||||
gf_store_iter_t *iter = NULL;
|
||||
gf_store_op_errno_t op_errno = GD_STORE_SUCCESS;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -2364,8 +2411,11 @@ glusterd_store_retrieve_snapd (glusterd_volinfo_t *volinfo)
|
||||
|
||||
GLUSTERD_GET_VOLUME_DIR(volpath, volinfo, conf);
|
||||
|
||||
snprintf (path, sizeof (path), "%s/%s", volpath,
|
||||
GLUSTERD_VOLUME_SNAPD_INFO_FILE);
|
||||
len = snprintf (path, sizeof (path), "%s/%s", volpath,
|
||||
GLUSTERD_VOLUME_SNAPD_INFO_FILE);
|
||||
if ((len < 0) || (len >= sizeof(path))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = gf_store_handle_retrieve (path, &volinfo->snapd.handle);
|
||||
if (ret) {
|
||||
@ -2438,6 +2488,7 @@ glusterd_store_retrieve_bricks (glusterd_volinfo_t *volinfo)
|
||||
xlator_t *this = NULL;
|
||||
int brickid = 0;
|
||||
gf_store_op_errno_t op_errno = GD_STORE_SUCCESS;
|
||||
int32_t len = 0;
|
||||
|
||||
GF_ASSERT (volinfo);
|
||||
GF_ASSERT (volinfo->volname);
|
||||
@ -2460,11 +2511,14 @@ glusterd_store_retrieve_bricks (glusterd_volinfo_t *volinfo)
|
||||
snprintf (tmpkey, sizeof (tmpkey), "%s-%d",
|
||||
GLUSTERD_STORE_KEY_VOL_BRICK,brick_count);
|
||||
ret = gf_store_iter_get_matching (tmpiter, tmpkey, &tmpvalue);
|
||||
snprintf (path, sizeof (path), "%s/%s", brickdir, tmpvalue);
|
||||
|
||||
len = snprintf (path, sizeof (path), "%s/%s", brickdir,
|
||||
tmpvalue);
|
||||
GF_FREE (tmpvalue);
|
||||
|
||||
tmpvalue = NULL;
|
||||
if ((len < 0) || (len >= sizeof(path))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = gf_store_handle_retrieve (path, &brickinfo->shandle);
|
||||
|
||||
@ -2674,6 +2728,7 @@ glusterd_store_retrieve_node_state (glusterd_volinfo_t *volinfo)
|
||||
gf_store_op_errno_t op_errno = GD_STORE_SUCCESS;
|
||||
dict_t *tmp_dict = NULL;
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -2682,8 +2737,11 @@ glusterd_store_retrieve_node_state (glusterd_volinfo_t *volinfo)
|
||||
GF_ASSERT (volinfo);
|
||||
|
||||
GLUSTERD_GET_VOLUME_DIR(volpath, volinfo, priv);
|
||||
snprintf (path, sizeof (path), "%s/%s", volpath,
|
||||
GLUSTERD_NODE_STATE_FILE);
|
||||
len = snprintf (path, sizeof (path), "%s/%s", volpath,
|
||||
GLUSTERD_NODE_STATE_FILE);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = gf_store_handle_retrieve (path, &volinfo->node_state_shandle);
|
||||
if (ret)
|
||||
@ -2846,6 +2904,7 @@ glusterd_store_update_volinfo (glusterd_volinfo_t *volinfo)
|
||||
glusterd_conf_t *conf = NULL;
|
||||
gf_store_iter_t *iter = NULL;
|
||||
gf_store_op_errno_t op_errno = GD_STORE_SUCCESS;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -2854,8 +2913,11 @@ glusterd_store_update_volinfo (glusterd_volinfo_t *volinfo)
|
||||
|
||||
GLUSTERD_GET_VOLUME_DIR(volpath, volinfo, conf);
|
||||
|
||||
snprintf (path, sizeof (path), "%s/%s", volpath,
|
||||
GLUSTERD_VOLUME_INFO_FILE);
|
||||
len = snprintf (path, sizeof (path), "%s/%s", volpath,
|
||||
GLUSTERD_VOLUME_INFO_FILE);
|
||||
if ((len < 0) || (len >= sizeof(path))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = gf_store_handle_retrieve (path, &volinfo->shandle);
|
||||
if (ret) {
|
||||
@ -3332,6 +3394,7 @@ glusterd_store_retrieve_volumes (xlator_t *this, glusterd_snap_t *snap)
|
||||
glusterd_volinfo_t *volinfo = NULL;
|
||||
struct stat st = {0,};
|
||||
char entry_path[PATH_MAX] = {0,};
|
||||
int32_t len = 0;
|
||||
|
||||
GF_ASSERT (this);
|
||||
priv = this->private;
|
||||
@ -3339,11 +3402,14 @@ glusterd_store_retrieve_volumes (xlator_t *this, glusterd_snap_t *snap)
|
||||
GF_ASSERT (priv);
|
||||
|
||||
if (snap)
|
||||
snprintf (path, PATH_MAX, "%s/snaps/%s", priv->workdir,
|
||||
snap->snapname);
|
||||
len = snprintf (path, PATH_MAX, "%s/snaps/%s", priv->workdir,
|
||||
snap->snapname);
|
||||
else
|
||||
snprintf (path, PATH_MAX, "%s/%s", priv->workdir,
|
||||
GLUSTERD_VOLUME_DIR_PREFIX);
|
||||
len = snprintf (path, PATH_MAX, "%s/%s", priv->workdir,
|
||||
GLUSTERD_VOLUME_DIR_PREFIX);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
dir = sys_opendir (path);
|
||||
|
||||
@ -3360,7 +3426,12 @@ glusterd_store_retrieve_volumes (xlator_t *this, glusterd_snap_t *snap)
|
||||
(!strcmp (entry->d_name, "info"))))
|
||||
goto next;
|
||||
|
||||
snprintf (entry_path, PATH_MAX, "%s/%s", path, entry->d_name);
|
||||
len = snprintf (entry_path, PATH_MAX, "%s/%s", path,
|
||||
entry->d_name);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto next;
|
||||
}
|
||||
ret = sys_lstat (entry_path, &st);
|
||||
if (ret == -1) {
|
||||
gf_msg (this->name, GF_LOG_ERROR, 0,
|
||||
@ -3678,6 +3749,7 @@ glusterd_store_update_snap (glusterd_snap_t *snap)
|
||||
glusterd_conf_t *conf = NULL;
|
||||
gf_store_iter_t *iter = NULL;
|
||||
gf_store_op_errno_t op_errno = GD_STORE_SUCCESS;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
conf = this->private;
|
||||
@ -3685,8 +3757,11 @@ glusterd_store_update_snap (glusterd_snap_t *snap)
|
||||
|
||||
GLUSTERD_GET_SNAP_DIR (snappath, snap, conf);
|
||||
|
||||
snprintf (path, sizeof (path), "%s/%s", snappath,
|
||||
GLUSTERD_SNAP_INFO_FILE);
|
||||
len = snprintf (path, sizeof (path), "%s/%s", snappath,
|
||||
GLUSTERD_SNAP_INFO_FILE);
|
||||
if ((len < 0) || (len >= sizeof(path))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = gf_store_handle_retrieve (path, &snap->shandle);
|
||||
if (ret) {
|
||||
@ -3918,13 +3993,18 @@ glusterd_store_retrieve_snaps (xlator_t *this)
|
||||
DIR *dir = NULL;
|
||||
struct dirent *entry = NULL;
|
||||
struct dirent scratch[2] = {{0,},};
|
||||
int32_t len = 0;
|
||||
|
||||
GF_ASSERT (this);
|
||||
priv = this->private;
|
||||
|
||||
GF_ASSERT (priv);
|
||||
|
||||
snprintf (path, PATH_MAX, "%s/snaps", priv->workdir);
|
||||
len = snprintf (path, PATH_MAX, "%s/snaps", priv->workdir);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
dir = sys_opendir (path);
|
||||
|
||||
@ -4093,6 +4173,7 @@ glusterd_store_delete_peerinfo (glusterd_peerinfo_t *peerinfo)
|
||||
char peerdir[PATH_MAX] = {0,};
|
||||
char filepath[PATH_MAX] = {0,};
|
||||
char hostname_path[PATH_MAX] = {0,};
|
||||
int32_t len = 0;
|
||||
|
||||
|
||||
if (!peerinfo) {
|
||||
@ -4103,24 +4184,34 @@ glusterd_store_delete_peerinfo (glusterd_peerinfo_t *peerinfo)
|
||||
this = THIS;
|
||||
priv = this->private;
|
||||
|
||||
snprintf (peerdir, PATH_MAX, "%s/peers", priv->workdir);
|
||||
|
||||
len = snprintf (peerdir, PATH_MAX, "%s/peers", priv->workdir);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (gf_uuid_is_null (peerinfo->uuid)) {
|
||||
|
||||
if (peerinfo->hostname) {
|
||||
snprintf (filepath, PATH_MAX, "%s/%s", peerdir,
|
||||
peerinfo->hostname);
|
||||
len = snprintf (filepath, PATH_MAX, "%s/%s", peerdir,
|
||||
peerinfo->hostname);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
goto out;
|
||||
}
|
||||
} else {
|
||||
ret = 0;
|
||||
goto out;
|
||||
}
|
||||
} else {
|
||||
|
||||
snprintf (filepath, PATH_MAX, "%s/%s", peerdir,
|
||||
uuid_utoa (peerinfo->uuid));
|
||||
snprintf (hostname_path, PATH_MAX, "%s/%s",
|
||||
peerdir, peerinfo->hostname);
|
||||
len = snprintf (filepath, PATH_MAX, "%s/%s", peerdir,
|
||||
uuid_utoa (peerinfo->uuid));
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
goto out;
|
||||
}
|
||||
len = snprintf (hostname_path, PATH_MAX, "%s/%s",
|
||||
peerdir, peerinfo->hostname);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = sys_unlink (hostname_path);
|
||||
|
||||
@ -4362,14 +4453,19 @@ glusterd_store_retrieve_peers (xlator_t *this)
|
||||
glusterd_peer_hostname_t *address = NULL;
|
||||
uuid_t tmp_uuid;
|
||||
gf_boolean_t is_ok;
|
||||
int32_t len;
|
||||
|
||||
GF_ASSERT (this);
|
||||
priv = this->private;
|
||||
|
||||
GF_ASSERT (priv);
|
||||
|
||||
snprintf (path, PATH_MAX, "%s/%s", priv->workdir,
|
||||
GLUSTERD_PEER_DIR_PREFIX);
|
||||
len = snprintf (path, PATH_MAX, "%s/%s", priv->workdir,
|
||||
GLUSTERD_PEER_DIR_PREFIX);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
dir = sys_opendir (path);
|
||||
|
||||
@ -4392,7 +4488,11 @@ glusterd_store_retrieve_peers (xlator_t *this)
|
||||
continue;
|
||||
}
|
||||
is_ok = _gf_false;
|
||||
snprintf (filepath, PATH_MAX, "%s/%s", path, entry->d_name);
|
||||
len = snprintf (filepath, PATH_MAX, "%s/%s", path,
|
||||
entry->d_name);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
goto next;
|
||||
}
|
||||
ret = gf_store_handle_retrieve (filepath, &shandle);
|
||||
if (ret)
|
||||
goto next;
|
||||
@ -4751,6 +4851,7 @@ glusterd_store_retrieve_quota_version (glusterd_volinfo_t *volinfo)
|
||||
xlator_t *this = NULL;
|
||||
glusterd_conf_t *conf = NULL;
|
||||
gf_store_handle_t *handle = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -4758,8 +4859,11 @@ glusterd_store_retrieve_quota_version (glusterd_volinfo_t *volinfo)
|
||||
GF_ASSERT (conf);
|
||||
|
||||
GLUSTERD_GET_VOLUME_DIR (path, volinfo, conf);
|
||||
snprintf (cksum_path, sizeof (cksum_path), "%s/%s", path,
|
||||
GLUSTERD_VOL_QUOTA_CKSUM_FILE);
|
||||
len = snprintf (cksum_path, sizeof (cksum_path), "%s/%s", path,
|
||||
GLUSTERD_VOL_QUOTA_CKSUM_FILE);
|
||||
if ((len < 0) || (len >= sizeof(cksum_path))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = gf_store_handle_new (cksum_path, &handle);
|
||||
if (ret) {
|
||||
@ -4803,13 +4907,17 @@ glusterd_store_save_quota_version_and_cksum (glusterd_volinfo_t *volinfo)
|
||||
char buf[256] = {0};
|
||||
int fd = -1;
|
||||
int32_t ret = -1;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
conf = this->private;
|
||||
|
||||
GLUSTERD_GET_VOLUME_DIR (path, volinfo, conf);
|
||||
snprintf (cksum_path, sizeof (cksum_path), "%s/%s", path,
|
||||
GLUSTERD_VOL_QUOTA_CKSUM_FILE);
|
||||
len = snprintf (cksum_path, sizeof (cksum_path), "%s/%s", path,
|
||||
GLUSTERD_VOL_QUOTA_CKSUM_FILE);
|
||||
if ((len < 0) || (len >= sizeof(cksum_path))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = gf_store_handle_new (cksum_path, &shandle);
|
||||
if (ret)
|
||||
|
@ -153,6 +153,7 @@ glusterd_svc_start (glusterd_svc_t *svc, int flags, dict_t *cmdline)
|
||||
char *localtime_logging = NULL;
|
||||
char *log_level = NULL;
|
||||
char daemon_log_level[30] = {0};
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -176,8 +177,13 @@ glusterd_svc_start (glusterd_svc_t *svc, int flags, dict_t *cmdline)
|
||||
runinit (&runner);
|
||||
|
||||
if (this->ctx->cmd_args.valgrind) {
|
||||
snprintf (valgrind_logfile, PATH_MAX, "%s/valgrind-%s.log",
|
||||
svc->proc.logfile, svc->name);
|
||||
len = snprintf (valgrind_logfile, PATH_MAX,
|
||||
"%s/valgrind-%s.log", svc->proc.logfile,
|
||||
svc->name);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
runner_add_args (&runner, "valgrind", "--leak-check=full",
|
||||
"--trace-children=yes", "--track-origins=yes",
|
||||
|
@ -1113,7 +1113,7 @@ glusterd_add_tierd_to_dict (glusterd_volinfo_t *volinfo,
|
||||
int32_t pid = -1;
|
||||
int32_t brick_online = -1;
|
||||
char key[1024] = {0};
|
||||
char base_key[1024] = {0};
|
||||
char base_key[32] = {0};
|
||||
char pidfile[PATH_MAX] = {0};
|
||||
xlator_t *this = NULL;
|
||||
|
||||
|
@ -34,10 +34,14 @@ glusterd_svc_build_tierd_socket_filepath (glusterd_volinfo_t *volinfo,
|
||||
{
|
||||
char sockfilepath[PATH_MAX] = {0,};
|
||||
char rundir[PATH_MAX] = {0,};
|
||||
int32_t len = 0;
|
||||
|
||||
glusterd_svc_build_tierd_rundir (volinfo, rundir, sizeof (rundir));
|
||||
snprintf (sockfilepath, sizeof (sockfilepath), "%s/run-%s",
|
||||
rundir, uuid_utoa (MY_UUID));
|
||||
len = snprintf (sockfilepath, sizeof (sockfilepath), "%s/run-%s",
|
||||
rundir, uuid_utoa (MY_UUID));
|
||||
if ((len < 0) || (len >= sizeof(sockfilepath))) {
|
||||
sockfilepath[0] = 0;
|
||||
}
|
||||
|
||||
glusterd_set_socket_filepath (sockfilepath, path, path_len);
|
||||
}
|
||||
|
@ -53,6 +53,7 @@ glusterd_tierdsvc_init (void *data)
|
||||
glusterd_conn_notify_t notify = NULL;
|
||||
xlator_t *this = NULL;
|
||||
char *volfileserver = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_VALIDATE_OR_GOTO (THIS->name, this, out);
|
||||
@ -98,7 +99,12 @@ glusterd_tierdsvc_init (void *data)
|
||||
goto out;
|
||||
}
|
||||
glusterd_svc_build_tierd_logfile (logfile, logdir, sizeof (logfile));
|
||||
snprintf (volfileid, sizeof (volfileid), "tierd/%s", volinfo->volname);
|
||||
len = snprintf (volfileid, sizeof (volfileid), "tierd/%s",
|
||||
volinfo->volname);
|
||||
if ((len < 0) || (len >= sizeof(volfileid))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (dict_get_str (this->options, "transport.socket.bind-address",
|
||||
&volfileserver) != 0) {
|
||||
@ -260,6 +266,7 @@ glusterd_tierdsvc_start (glusterd_svc_t *svc, int flags)
|
||||
glusterd_tierdsvc_t *tierd = NULL;
|
||||
int cmd = GF_DEFRAG_CMD_START_TIER;
|
||||
char *localtime_logging = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_VALIDATE_OR_GOTO (THIS->name, this, out);
|
||||
@ -315,8 +322,12 @@ glusterd_tierdsvc_start (glusterd_svc_t *svc, int flags)
|
||||
runinit (&runner);
|
||||
|
||||
if (this->ctx->cmd_args.valgrind) {
|
||||
snprintf (valgrind_logfile, PATH_MAX, "%s/valgrind-tierd.log",
|
||||
svc->proc.logdir);
|
||||
len = snprintf (valgrind_logfile, PATH_MAX,
|
||||
"%s/valgrind-tierd.log", svc->proc.logdir);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
runner_add_args (&runner, "valgrind", "--leak-check=full",
|
||||
"--trace-children=yes", "--track-origins=yes",
|
||||
|
@ -1449,14 +1449,15 @@ glusterd_validate_and_create_brickpath (glusterd_brickinfo_t *brickinfo,
|
||||
char msg[2048] = {0,};
|
||||
gf_boolean_t is_created = _gf_false;
|
||||
char glusterfs_dir_path[PATH_MAX] = {0};
|
||||
int32_t len = 0;
|
||||
|
||||
ret = sys_mkdir (brickinfo->path, 0777);
|
||||
if (ret) {
|
||||
if (errno != EEXIST) {
|
||||
snprintf (msg, sizeof (msg), "Failed to create brick "
|
||||
"directory for brick %s:%s. Reason : %s ",
|
||||
brickinfo->hostname, brickinfo->path,
|
||||
strerror (errno));
|
||||
len = snprintf (msg, sizeof (msg), "Failed to create "
|
||||
"brick directory for brick %s:%s. "
|
||||
"Reason : %s ", brickinfo->hostname,
|
||||
brickinfo->path, strerror (errno));
|
||||
goto out;
|
||||
}
|
||||
} else {
|
||||
@ -1465,60 +1466,70 @@ glusterd_validate_and_create_brickpath (glusterd_brickinfo_t *brickinfo,
|
||||
|
||||
ret = sys_lstat (brickinfo->path, &brick_st);
|
||||
if (ret) {
|
||||
snprintf (msg, sizeof (msg), "lstat failed on %s. Reason : %s",
|
||||
brickinfo->path, strerror (errno));
|
||||
len = snprintf (msg, sizeof (msg), "lstat failed on %s. "
|
||||
"Reason : %s", brickinfo->path,
|
||||
strerror (errno));
|
||||
goto out;
|
||||
}
|
||||
|
||||
if ((!is_created) && (!S_ISDIR (brick_st.st_mode))) {
|
||||
snprintf (msg, sizeof (msg), "The provided path %s which is "
|
||||
"already present, is not a directory",
|
||||
brickinfo->path);
|
||||
len = snprintf (msg, sizeof (msg), "The provided path %s "
|
||||
"which is already present, is not a directory",
|
||||
brickinfo->path);
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
snprintf (parentdir, sizeof (parentdir), "%s/..", brickinfo->path);
|
||||
len = snprintf (parentdir, sizeof (parentdir), "%s/..",
|
||||
brickinfo->path);
|
||||
if ((len < 0) || (len >= sizeof(parentdir))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = sys_lstat ("/", &root_st);
|
||||
if (ret) {
|
||||
snprintf (msg, sizeof (msg), "lstat failed on /. Reason : %s",
|
||||
strerror (errno));
|
||||
len = snprintf (msg, sizeof (msg), "lstat failed on /. "
|
||||
"Reason : %s", strerror (errno));
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = sys_lstat (parentdir, &parent_st);
|
||||
if (ret) {
|
||||
snprintf (msg, sizeof (msg), "lstat failed on %s. Reason : %s",
|
||||
parentdir, strerror (errno));
|
||||
len = snprintf (msg, sizeof (msg), "lstat failed on %s. "
|
||||
"Reason : %s", parentdir, strerror (errno));
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!is_force) {
|
||||
if (brick_st.st_dev != parent_st.st_dev) {
|
||||
snprintf (msg, sizeof (msg), "The brick %s:%s is a "
|
||||
"mount point. Please create a sub-directory "
|
||||
"under the mount point and use that as the "
|
||||
"brick directory. Or use 'force' at the end "
|
||||
"of the command if you want to override this "
|
||||
"behavior.", brickinfo->hostname,
|
||||
brickinfo->path);
|
||||
len = snprintf (msg, sizeof (msg), "The brick %s:%s "
|
||||
"is a mount point. Please create a "
|
||||
"sub-directory under the mount point "
|
||||
"and use that as the brick directory. "
|
||||
"Or use 'force' at the end of the "
|
||||
"command if you want to override this "
|
||||
"behavior.", brickinfo->hostname,
|
||||
brickinfo->path);
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
else if (parent_st.st_dev == root_st.st_dev) {
|
||||
snprintf (msg, sizeof (msg), "The brick %s:%s "
|
||||
"is being created in the root partition. It "
|
||||
"is recommended that you don't use the "
|
||||
"system's root partition for storage backend."
|
||||
" Or use 'force' at the end of the command if"
|
||||
" you want to override this behavior.",
|
||||
brickinfo->hostname, brickinfo->path);
|
||||
len = snprintf (msg, sizeof (msg), "The brick %s:%s "
|
||||
"is being created in the root "
|
||||
"partition. It is recommended that "
|
||||
"you don't use the system's root "
|
||||
"partition for storage backend. Or "
|
||||
"use 'force' at the end of the "
|
||||
"command if you want to override this "
|
||||
"behavior.", brickinfo->hostname,
|
||||
brickinfo->path);
|
||||
|
||||
/* If --wignore-partition flag is used, ignore warnings
|
||||
* related to bricks being on root partition when 'force'
|
||||
* is not used */
|
||||
if (!ignore_partition) {
|
||||
if ((len < 0) || (len >= sizeof(msg)) ||
|
||||
!ignore_partition) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
@ -1540,20 +1551,28 @@ glusterd_validate_and_create_brickpath (glusterd_brickinfo_t *brickinfo,
|
||||
goto out;
|
||||
|
||||
/* create .glusterfs directory */
|
||||
snprintf (glusterfs_dir_path, sizeof (glusterfs_dir_path), "%s/%s",
|
||||
brickinfo->path, ".glusterfs");
|
||||
len = snprintf (glusterfs_dir_path, sizeof (glusterfs_dir_path),
|
||||
"%s/%s", brickinfo->path, ".glusterfs");
|
||||
if ((len < 0) || (len >= sizeof(glusterfs_dir_path))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = sys_mkdir (glusterfs_dir_path, 0600);
|
||||
if (ret && (errno != EEXIST)) {
|
||||
snprintf (msg, sizeof (msg), "Failed to create .glusterfs "
|
||||
"directory for brick %s:%s. Reason : %s ",
|
||||
brickinfo->hostname, brickinfo->path,
|
||||
strerror (errno));
|
||||
len = snprintf (msg, sizeof (msg), "Failed to create "
|
||||
".glusterfs directory for brick %s:%s. "
|
||||
"Reason : %s ", brickinfo->hostname,
|
||||
brickinfo->path, strerror (errno));
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
||||
out:
|
||||
if (len < 0) {
|
||||
ret = -1;
|
||||
}
|
||||
if (ret && is_created) {
|
||||
(void)recursive_rmdir (brickinfo->path);
|
||||
}
|
||||
@ -1859,6 +1878,7 @@ glusterd_set_brick_socket_filepath (glusterd_volinfo_t *volinfo,
|
||||
int expected_file_len = 0;
|
||||
char export_path[PATH_MAX] = {0,};
|
||||
char sock_filepath[PATH_MAX] = {0,};
|
||||
int32_t slen = 0;
|
||||
|
||||
expected_file_len = strlen (GLUSTERD_SOCK_DIR) + strlen ("/") +
|
||||
SHA256_DIGEST_LENGTH*2 + strlen (".socket") + 1;
|
||||
@ -1870,8 +1890,11 @@ glusterd_set_brick_socket_filepath (glusterd_volinfo_t *volinfo,
|
||||
|
||||
GLUSTERD_GET_VOLUME_PID_DIR (volume_dir, volinfo, priv);
|
||||
GLUSTERD_REMOVE_SLASH_FROM_PATH (brickinfo->path, export_path);
|
||||
snprintf (sock_filepath, PATH_MAX, "%s/run/%s-%s",
|
||||
volume_dir, brickinfo->hostname, export_path);
|
||||
slen = snprintf (sock_filepath, PATH_MAX, "%s/run/%s-%s",
|
||||
volume_dir, brickinfo->hostname, export_path);
|
||||
if (slen < 0) {
|
||||
sock_filepath[0] = 0;
|
||||
}
|
||||
glusterd_set_socket_filepath (sock_filepath, sockpath, len);
|
||||
}
|
||||
|
||||
@ -1966,6 +1989,7 @@ glusterd_volume_start_glusterfs (glusterd_volinfo_t *volinfo,
|
||||
struct rpc_clnt *rpc = NULL;
|
||||
rpc_clnt_connection_t *conn = NULL;
|
||||
int pid = -1;
|
||||
int32_t len = 0;
|
||||
|
||||
GF_ASSERT (volinfo);
|
||||
GF_ASSERT (brickinfo);
|
||||
@ -2038,15 +2062,19 @@ retry:
|
||||
if (this->ctx->cmd_args.valgrind) {
|
||||
/* Run bricks with valgrind */
|
||||
if (volinfo->logdir) {
|
||||
snprintf (valgrind_logfile, PATH_MAX,
|
||||
"%s/valgrind-%s-%s.log",
|
||||
volinfo->logdir,
|
||||
volinfo->volname, exp_path);
|
||||
len = snprintf (valgrind_logfile, PATH_MAX,
|
||||
"%s/valgrind-%s-%s.log",
|
||||
volinfo->logdir,
|
||||
volinfo->volname, exp_path);
|
||||
} else {
|
||||
snprintf (valgrind_logfile, PATH_MAX,
|
||||
"%s/bricks/valgrind-%s-%s.log",
|
||||
DEFAULT_LOG_FILE_DIRECTORY,
|
||||
volinfo->volname, exp_path);
|
||||
len = snprintf (valgrind_logfile, PATH_MAX,
|
||||
"%s/bricks/valgrind-%s-%s.log",
|
||||
DEFAULT_LOG_FILE_DIRECTORY,
|
||||
volinfo->volname, exp_path);
|
||||
}
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
runner_add_args (&runner, "valgrind", "--leak-check=full",
|
||||
@ -2056,22 +2084,32 @@ retry:
|
||||
}
|
||||
|
||||
if (volinfo->is_snap_volume) {
|
||||
snprintf (volfile, PATH_MAX,"/%s/%s/%s.%s.%s",
|
||||
GLUSTERD_VOL_SNAP_DIR_PREFIX,
|
||||
volinfo->snapshot->snapname, volinfo->volname,
|
||||
brickinfo->hostname, exp_path);
|
||||
len = snprintf (volfile, PATH_MAX, "/%s/%s/%s.%s.%s",
|
||||
GLUSTERD_VOL_SNAP_DIR_PREFIX,
|
||||
volinfo->snapshot->snapname, volinfo->volname,
|
||||
brickinfo->hostname, exp_path);
|
||||
} else {
|
||||
snprintf (volfile, PATH_MAX, "%s.%s.%s", volinfo->volname,
|
||||
brickinfo->hostname, exp_path);
|
||||
len = snprintf (volfile, PATH_MAX, "%s.%s.%s",
|
||||
volinfo->volname, brickinfo->hostname,
|
||||
exp_path);
|
||||
}
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (volinfo->logdir) {
|
||||
snprintf (logfile, PATH_MAX, "%s/%s.log",
|
||||
volinfo->logdir, exp_path);
|
||||
len = snprintf (logfile, PATH_MAX, "%s/%s.log",
|
||||
volinfo->logdir, exp_path);
|
||||
} else {
|
||||
snprintf (logfile, PATH_MAX, "%s/bricks/%s.log",
|
||||
DEFAULT_LOG_FILE_DIRECTORY, exp_path);
|
||||
len = snprintf (logfile, PATH_MAX, "%s/bricks/%s.log",
|
||||
DEFAULT_LOG_FILE_DIRECTORY, exp_path);
|
||||
}
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!brickinfo->logfile)
|
||||
brickinfo->logfile = gf_strdup (logfile);
|
||||
|
||||
@ -2096,8 +2134,12 @@ retry:
|
||||
if (volinfo->transport_type != GF_TRANSPORT_BOTH_TCP_RDMA) {
|
||||
runner_argprintf (&runner, "%d", port);
|
||||
} else {
|
||||
snprintf (rdma_brick_path, sizeof(rdma_brick_path), "%s.rdma",
|
||||
brickinfo->path);
|
||||
len = snprintf (rdma_brick_path, sizeof(rdma_brick_path),
|
||||
"%s.rdma", brickinfo->path);
|
||||
if ((len < 0) || (len >= sizeof(rdma_brick_path))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
rdma_port = pmap_assign_port (THIS, brickinfo->rdma_port,
|
||||
rdma_brick_path);
|
||||
if (!rdma_port) {
|
||||
@ -2752,6 +2794,8 @@ int glusterd_compute_cksum (glusterd_volinfo_t *volinfo,
|
||||
char filepath[PATH_MAX] = {0,};
|
||||
glusterd_conf_t *conf = NULL;
|
||||
xlator_t *this = NULL;
|
||||
int32_t len1 = 0;
|
||||
int32_t len2 = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -2761,15 +2805,19 @@ int glusterd_compute_cksum (glusterd_volinfo_t *volinfo,
|
||||
GLUSTERD_GET_VOLUME_DIR (path, volinfo, conf);
|
||||
|
||||
if (is_quota_conf) {
|
||||
snprintf (cksum_path, sizeof (cksum_path), "%s/%s", path,
|
||||
GLUSTERD_VOL_QUOTA_CKSUM_FILE);
|
||||
snprintf (filepath, sizeof (filepath), "%s/%s", path,
|
||||
GLUSTERD_VOLUME_QUOTA_CONFIG);
|
||||
len1 = snprintf (cksum_path, sizeof (cksum_path), "%s/%s",
|
||||
path, GLUSTERD_VOL_QUOTA_CKSUM_FILE);
|
||||
len2 = snprintf (filepath, sizeof (filepath), "%s/%s", path,
|
||||
GLUSTERD_VOLUME_QUOTA_CONFIG);
|
||||
} else {
|
||||
snprintf (cksum_path, sizeof (cksum_path), "%s/%s", path,
|
||||
GLUSTERD_CKSUM_FILE);
|
||||
snprintf (filepath, sizeof (filepath), "%s/%s", path,
|
||||
GLUSTERD_VOLUME_INFO_FILE);
|
||||
len1 = snprintf (cksum_path, sizeof (cksum_path), "%s/%s",
|
||||
path, GLUSTERD_CKSUM_FILE);
|
||||
len2 = snprintf (filepath, sizeof (filepath), "%s/%s", path,
|
||||
GLUSTERD_VOLUME_INFO_FILE);
|
||||
}
|
||||
if ((len1 < 0) || (len2 < 0) ||
|
||||
(len1 >= sizeof(cksum_path)) || (len2 >= sizeof(filepath))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = glusterd_volume_compute_cksum (volinfo, cksum_path, filepath,
|
||||
@ -5568,6 +5616,7 @@ attach_brick (xlator_t *this,
|
||||
int ret = -1;
|
||||
int tries;
|
||||
rpc_clnt_t *rpc;
|
||||
int32_t len;
|
||||
|
||||
gf_log (this->name, GF_LOG_INFO,
|
||||
"add brick %s to existing process for %s",
|
||||
@ -5579,14 +5628,20 @@ attach_brick (xlator_t *this,
|
||||
GLUSTERD_GET_BRICK_PIDFILE (pidfile2, volinfo, brickinfo, conf);
|
||||
|
||||
if (volinfo->is_snap_volume) {
|
||||
snprintf (full_id, sizeof(full_id), "/%s/%s/%s.%s.%s",
|
||||
GLUSTERD_VOL_SNAP_DIR_PREFIX,
|
||||
volinfo->snapshot->snapname,
|
||||
volinfo->volname, brickinfo->hostname, unslashed);
|
||||
len = snprintf (full_id, sizeof(full_id), "/%s/%s/%s.%s.%s",
|
||||
GLUSTERD_VOL_SNAP_DIR_PREFIX,
|
||||
volinfo->snapshot->snapname,
|
||||
volinfo->volname, brickinfo->hostname,
|
||||
unslashed);
|
||||
} else {
|
||||
snprintf (full_id, sizeof(full_id), "%s.%s.%s",
|
||||
volinfo->volname, brickinfo->hostname, unslashed);
|
||||
len = snprintf (full_id, sizeof(full_id), "%s.%s.%s",
|
||||
volinfo->volname, brickinfo->hostname,
|
||||
unslashed);
|
||||
}
|
||||
if ((len < 0) || (len >= sizeof(full_id))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
(void) build_volfile_path (full_id, path, sizeof(path), NULL);
|
||||
|
||||
|
||||
@ -5646,6 +5701,7 @@ attach_brick (xlator_t *this,
|
||||
synclock_lock (&conf->big_lock);
|
||||
}
|
||||
|
||||
out:
|
||||
gf_log (this->name, GF_LOG_WARNING,
|
||||
"attach failed for %s", brickinfo->path);
|
||||
return ret;
|
||||
@ -6876,7 +6932,7 @@ glusterd_add_brick_mount_details (glusterd_brickinfo_t *brickinfo,
|
||||
int ret = -1;
|
||||
char key[1024] = {0};
|
||||
char buff [PATH_MAX] = {0};
|
||||
char base_key[1024] = {0};
|
||||
char base_key[32] = {0};
|
||||
struct mntent save_entry = {0};
|
||||
char *mnt_pt = NULL;
|
||||
struct mntent *entry = NULL;
|
||||
@ -6978,7 +7034,7 @@ glusterd_add_brick_detail_to_dict (glusterd_volinfo_t *volinfo,
|
||||
uint64_t inodes_total = 0;
|
||||
uint64_t inodes_free = 0;
|
||||
uint64_t block_size = 0;
|
||||
char key[1024] = {0};
|
||||
char key[1024 + 16] = {0};
|
||||
char base_key[1024] = {0};
|
||||
struct statvfs brickstat = {0};
|
||||
xlator_t *this = NULL;
|
||||
@ -7061,7 +7117,7 @@ glusterd_add_brick_to_dict (glusterd_volinfo_t *volinfo,
|
||||
|
||||
int ret = -1;
|
||||
int32_t pid = -1;
|
||||
char key[1024] = {0};
|
||||
char key[1024 + 16] = {0};
|
||||
char base_key[1024] = {0};
|
||||
char pidfile[PATH_MAX] = {0};
|
||||
xlator_t *this = NULL;
|
||||
@ -8653,13 +8709,17 @@ glusterd_get_bitd_filepath (char *filepath, glusterd_volinfo_t *volinfo)
|
||||
int ret = 0;
|
||||
char path[PATH_MAX] = {0,};
|
||||
glusterd_conf_t *priv = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
priv = THIS->private;
|
||||
|
||||
GLUSTERD_GET_VOLUME_DIR (path, volinfo, priv);
|
||||
|
||||
snprintf (filepath, PATH_MAX,
|
||||
"%s/%s-bitd.vol", path, volinfo->volname);
|
||||
len = snprintf (filepath, PATH_MAX,
|
||||
"%s/%s-bitd.vol", path, volinfo->volname);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -8671,6 +8731,7 @@ glusterd_get_client_filepath (char *filepath, glusterd_volinfo_t *volinfo,
|
||||
int ret = 0;
|
||||
char path[PATH_MAX] = {0,};
|
||||
glusterd_conf_t *priv = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
priv = THIS->private;
|
||||
|
||||
@ -8678,18 +8739,21 @@ glusterd_get_client_filepath (char *filepath, glusterd_volinfo_t *volinfo,
|
||||
|
||||
switch (type) {
|
||||
case GF_TRANSPORT_TCP:
|
||||
snprintf (filepath, PATH_MAX,
|
||||
"%s/%s.tcp-fuse.vol", path, volinfo->volname);
|
||||
len = snprintf (filepath, PATH_MAX,
|
||||
"%s/%s.tcp-fuse.vol", path, volinfo->volname);
|
||||
break;
|
||||
|
||||
case GF_TRANSPORT_RDMA:
|
||||
snprintf (filepath, PATH_MAX,
|
||||
"%s/%s.rdma-fuse.vol", path, volinfo->volname);
|
||||
len = snprintf (filepath, PATH_MAX,
|
||||
"%s/%s.rdma-fuse.vol", path, volinfo->volname);
|
||||
break;
|
||||
default:
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -8702,6 +8766,7 @@ glusterd_get_trusted_client_filepath (char *filepath,
|
||||
int ret = 0;
|
||||
char path[PATH_MAX] = {0,};
|
||||
glusterd_conf_t *priv = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
priv = THIS->private;
|
||||
|
||||
@ -8709,18 +8774,23 @@ glusterd_get_trusted_client_filepath (char *filepath,
|
||||
|
||||
switch (type) {
|
||||
case GF_TRANSPORT_TCP:
|
||||
snprintf (filepath, PATH_MAX, "%s/trusted-%s.tcp-fuse.vol",
|
||||
path, volinfo->volname);
|
||||
len = snprintf (filepath, PATH_MAX,
|
||||
"%s/trusted-%s.tcp-fuse.vol", path,
|
||||
volinfo->volname);
|
||||
break;
|
||||
|
||||
case GF_TRANSPORT_RDMA:
|
||||
snprintf (filepath, PATH_MAX, "%s/trusted-%s.rdma-fuse.vol",
|
||||
path, volinfo->volname);
|
||||
len = snprintf (filepath, PATH_MAX,
|
||||
"%s/trusted-%s.rdma-fuse.vol", path,
|
||||
volinfo->volname);
|
||||
break;
|
||||
default:
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -9686,7 +9756,7 @@ static int
|
||||
_profile_volume_add_friend_rsp (dict_t *this, char *key, data_t *value,
|
||||
void *data)
|
||||
{
|
||||
char new_key[256] = {0};
|
||||
char new_key[264] = {0};
|
||||
glusterd_pr_brick_rsp_conv_t *rsp_ctx = NULL;
|
||||
data_t *new_value = NULL;
|
||||
int brick_count = 0;
|
||||
@ -9753,7 +9823,8 @@ glusterd_volume_status_add_peer_rsp (dict_t *this, char *key, data_t *value,
|
||||
char brick_key[1024] = {0,};
|
||||
char new_key[1024] = {0,};
|
||||
int32_t index = 0;
|
||||
int32_t ret = 0;
|
||||
int32_t ret = -1;
|
||||
int32_t len = 0;
|
||||
|
||||
/* Skip the following keys, they are already present in the ctx_dict */
|
||||
/* Also, skip all the task related pairs. They will be added to the
|
||||
@ -9771,19 +9842,25 @@ glusterd_volume_status_add_peer_rsp (dict_t *this, char *key, data_t *value,
|
||||
sscanf (key, "brick%d.%s", &index, brick_key);
|
||||
|
||||
if (index > rsp_ctx->brick_index_max) {
|
||||
snprintf (new_key, sizeof (new_key), "brick%d.%s",
|
||||
index + rsp_ctx->other_count, brick_key);
|
||||
len = snprintf (new_key, sizeof (new_key), "brick%d.%s",
|
||||
index + rsp_ctx->other_count, brick_key);
|
||||
if ((len < 0) || (len >= sizeof(new_key))) {
|
||||
goto out;
|
||||
}
|
||||
} else {
|
||||
strncpy (new_key, key, sizeof (new_key));
|
||||
new_key[sizeof (new_key) - 1] = 0;
|
||||
}
|
||||
|
||||
ret = dict_set (rsp_ctx->dict, new_key, new_value);
|
||||
if (ret)
|
||||
out:
|
||||
if (ret) {
|
||||
data_unref(new_value);
|
||||
gf_msg ("glusterd", GF_LOG_ERROR, 0,
|
||||
GD_MSG_DICT_SET_FAILED,
|
||||
"Unable to set key: %s in dict",
|
||||
key);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -12538,6 +12615,7 @@ glusterd_clean_up_quota_store (glusterd_volinfo_t *volinfo)
|
||||
char cksum_path[PATH_MAX] = {0,};
|
||||
xlator_t *this = NULL;
|
||||
glusterd_conf_t *conf = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -12546,10 +12624,16 @@ glusterd_clean_up_quota_store (glusterd_volinfo_t *volinfo)
|
||||
|
||||
GLUSTERD_GET_VOLUME_DIR (voldir, volinfo, conf);
|
||||
|
||||
snprintf (quota_confpath, sizeof (quota_confpath), "%s/%s", voldir,
|
||||
GLUSTERD_VOLUME_QUOTA_CONFIG);
|
||||
snprintf (cksum_path, sizeof (cksum_path), "%s/%s", voldir,
|
||||
GLUSTERD_VOL_QUOTA_CKSUM_FILE);
|
||||
len = snprintf (quota_confpath, sizeof (quota_confpath), "%s/%s",
|
||||
voldir, GLUSTERD_VOLUME_QUOTA_CONFIG);
|
||||
if ((len < 0) || (len >= sizeof(quota_confpath))) {
|
||||
quota_confpath[0] = 0;
|
||||
}
|
||||
len = snprintf (cksum_path, sizeof (cksum_path), "%s/%s", voldir,
|
||||
GLUSTERD_VOL_QUOTA_CKSUM_FILE);
|
||||
if ((len < 0) || (len >= sizeof(cksum_path))) {
|
||||
cksum_path[0] = 0;
|
||||
}
|
||||
|
||||
sys_unlink (quota_confpath);
|
||||
sys_unlink (cksum_path);
|
||||
@ -13375,7 +13459,7 @@ cont:
|
||||
"Libxml not present");
|
||||
#endif
|
||||
|
||||
if (xml_out)
|
||||
if (xml_out) {
|
||||
#if (HAVE_LIB_XML)
|
||||
output = gf_strdup ((char *)buf->content);
|
||||
if (NULL == output) {
|
||||
@ -13387,6 +13471,7 @@ cont:
|
||||
GD_MSG_MODULE_NOT_INSTALLED,
|
||||
"Libxml not present");
|
||||
#endif
|
||||
}
|
||||
|
||||
ret = dict_set_dynstr (ctx, "help-str", output);
|
||||
if (ret >= 0) {
|
||||
|
@ -1830,6 +1830,7 @@ brick_graph_add_changelog (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
|
||||
xlator_t *xl = NULL;
|
||||
char changelog_basepath[PATH_MAX] = {0,};
|
||||
int ret = -1;
|
||||
int32_t len = 0;
|
||||
|
||||
if (!graph || !volinfo || !set_dict || !brickinfo)
|
||||
goto out;
|
||||
@ -1842,8 +1843,12 @@ brick_graph_add_changelog (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
snprintf (changelog_basepath, sizeof (changelog_basepath),
|
||||
"%s/%s", brickinfo->path, ".glusterfs/changelogs");
|
||||
len = snprintf (changelog_basepath, sizeof (changelog_basepath),
|
||||
"%s/%s", brickinfo->path, ".glusterfs/changelogs");
|
||||
if ((len < 0) || (len >= sizeof(changelog_basepath))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
ret = xlator_set_option (xl, "changelog-dir", changelog_basepath);
|
||||
if (ret)
|
||||
goto out;
|
||||
@ -2187,6 +2192,7 @@ brick_graph_add_index (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
|
||||
char *pending_xattr = NULL;
|
||||
char index_basepath[PATH_MAX] = {0};
|
||||
int ret = -1;
|
||||
int32_t len = 0;
|
||||
|
||||
if (!graph || !volinfo || !brickinfo || !set_dict)
|
||||
goto out;
|
||||
@ -2200,8 +2206,11 @@ brick_graph_add_index (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
|
||||
if (!xl)
|
||||
goto out;
|
||||
|
||||
snprintf (index_basepath, sizeof (index_basepath), "%s/%s",
|
||||
brickinfo->path, ".glusterfs/indices");
|
||||
len = snprintf (index_basepath, sizeof (index_basepath), "%s/%s",
|
||||
brickinfo->path, ".glusterfs/indices");
|
||||
if ((len < 0) || (len >= sizeof(index_basepath))) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = xlator_set_option (xl, "index-base", index_basepath);
|
||||
if (ret)
|
||||
@ -2474,6 +2483,7 @@ brick_graph_add_server (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
|
||||
char *ssl_user = NULL;
|
||||
char *volname = NULL;
|
||||
char *address_family_data = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
if (!graph || !volinfo || !set_dict || !brickinfo)
|
||||
goto out;
|
||||
@ -2523,8 +2533,11 @@ brick_graph_add_server (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
|
||||
|
||||
if (username) {
|
||||
memset (key, 0, sizeof (key));
|
||||
snprintf (key, sizeof (key), "auth.login.%s.allow",
|
||||
brickinfo->path);
|
||||
len = snprintf (key, sizeof (key), "auth.login.%s.allow",
|
||||
brickinfo->path);
|
||||
if ((len < 0) || (len >= sizeof(key))) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = xlator_set_option (xl, key, username);
|
||||
if (ret)
|
||||
@ -2563,8 +2576,11 @@ brick_graph_add_server (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
|
||||
|
||||
if (dict_get_str (volinfo->dict, "auth.ssl-allow", &ssl_user) == 0) {
|
||||
memset (key, 0, sizeof (key));
|
||||
snprintf (key, sizeof (key), "auth.login.%s.ssl-allow",
|
||||
brickinfo->path);
|
||||
len = snprintf (key, sizeof (key), "auth.login.%s.ssl-allow",
|
||||
brickinfo->path);
|
||||
if ((len < 0) || (len >= sizeof(key))) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = xlator_set_option (xl, key, ssl_user);
|
||||
if (ret)
|
||||
@ -5638,6 +5654,7 @@ get_brick_filepath (char *filename, glusterd_volinfo_t *volinfo,
|
||||
char path[PATH_MAX] = {0,};
|
||||
char brick[PATH_MAX] = {0,};
|
||||
glusterd_conf_t *priv = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
priv = THIS->private;
|
||||
|
||||
@ -5645,13 +5662,16 @@ get_brick_filepath (char *filename, glusterd_volinfo_t *volinfo,
|
||||
GLUSTERD_GET_VOLUME_DIR (path, volinfo, priv);
|
||||
|
||||
if (prefix)
|
||||
snprintf (filename, PATH_MAX, "%s/%s.%s.%s.%s.vol",
|
||||
path, volinfo->volname, prefix,
|
||||
brickinfo->hostname, brick);
|
||||
len = snprintf (filename, PATH_MAX, "%s/%s.%s.%s.%s.vol",
|
||||
path, volinfo->volname, prefix,
|
||||
brickinfo->hostname, brick);
|
||||
else
|
||||
snprintf (filename, PATH_MAX, "%s/%s.%s.%s.vol",
|
||||
path, volinfo->volname,
|
||||
brickinfo->hostname, brick);
|
||||
len = snprintf (filename, PATH_MAX, "%s/%s.%s.%s.vol",
|
||||
path, volinfo->volname,
|
||||
brickinfo->hostname, brick);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
filename[0] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -5877,16 +5897,18 @@ get_parent_vol_tstamp_file (char *filename, glusterd_volinfo_t *volinfo)
|
||||
{
|
||||
glusterd_conf_t *priv = NULL;
|
||||
xlator_t *this = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
priv = this->private;
|
||||
GF_ASSERT (priv);
|
||||
|
||||
snprintf (filename, PATH_MAX, "%s/vols/%s", priv->workdir,
|
||||
volinfo->parent_volname);
|
||||
strncat (filename, "/marker.tstamp",
|
||||
PATH_MAX - strlen(filename) - 1);
|
||||
len = snprintf (filename, PATH_MAX, "%s/vols/%s/marker.tstamp",
|
||||
priv->workdir, volinfo->parent_volname);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
filename[0] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@ -6438,7 +6460,7 @@ build_bitd_volume_graph (volgen_graph_t *graph,
|
||||
|
||||
get_transport_type (volinfo, set_dict, transt, _gf_false);
|
||||
if (!strncmp (transt, "tcp,rdma", strlen ("tcp,rdma")))
|
||||
strncpy (transt, "tcp", strlen ("tcp"));
|
||||
strncpy (transt, "tcp", sizeof(transt));
|
||||
|
||||
cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) {
|
||||
if (!glusterd_is_local_brick (this, volinfo, brickinfo))
|
||||
@ -6600,7 +6622,7 @@ build_scrub_volume_graph (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
|
||||
|
||||
get_transport_type (volinfo, set_dict, transt, _gf_false);
|
||||
if (!strncmp (transt, "tcp,rdma", strlen ("tcp,rdma")))
|
||||
strncpy (transt, "tcp", strlen ("tcp"));
|
||||
strncpy (transt, "tcp", sizeof(transt));
|
||||
|
||||
cds_list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) {
|
||||
if (!glusterd_is_local_brick (this, volinfo, brickinfo))
|
||||
|
@ -1507,6 +1507,7 @@ glusterd_op_stage_start_volume (dict_t *dict, char **op_errstr,
|
||||
char volid[50] = {0,};
|
||||
char xattr_volid[50] = {0,};
|
||||
int caps = 0;
|
||||
int32_t len = 0;
|
||||
|
||||
this = THIS;
|
||||
GF_ASSERT (this);
|
||||
@ -1585,19 +1586,25 @@ glusterd_op_stage_start_volume (dict_t *dict, char **op_errstr,
|
||||
if (ret && (flags & GF_CLI_FLAG_OP_FORCE)) {
|
||||
continue;
|
||||
} else if (ret) {
|
||||
snprintf (msg, sizeof (msg), "Failed to find "
|
||||
"brick directory %s for volume %s. "
|
||||
"Reason : %s", brickinfo->path,
|
||||
volname, strerror (errno));
|
||||
len = snprintf (msg, sizeof (msg), "Failed to find "
|
||||
"brick directory %s for volume %s. "
|
||||
"Reason : %s", brickinfo->path,
|
||||
volname, strerror (errno));
|
||||
if (len < 0) {
|
||||
strcpy(msg, "<error>");
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
ret = sys_lgetxattr (brickinfo->path, GF_XATTR_VOL_ID_KEY,
|
||||
volume_id, 16);
|
||||
if (ret < 0 && (!(flags & GF_CLI_FLAG_OP_FORCE))) {
|
||||
snprintf (msg, sizeof (msg), "Failed to get "
|
||||
"extended attribute %s for brick dir %s. "
|
||||
"Reason : %s", GF_XATTR_VOL_ID_KEY,
|
||||
brickinfo->path, strerror (errno));
|
||||
len = snprintf (msg, sizeof (msg), "Failed to get "
|
||||
"extended attribute %s for brick dir "
|
||||
"%s. Reason : %s", GF_XATTR_VOL_ID_KEY,
|
||||
brickinfo->path, strerror (errno));
|
||||
if (len < 0) {
|
||||
strcpy(msg, "<error>");
|
||||
}
|
||||
ret = -1;
|
||||
goto out;
|
||||
} else if (ret < 0) {
|
||||
@ -1606,22 +1613,30 @@ glusterd_op_stage_start_volume (dict_t *dict, char **op_errstr,
|
||||
volinfo->volume_id, 16,
|
||||
XATTR_CREATE);
|
||||
if (ret == -1) {
|
||||
snprintf (msg, sizeof (msg), "Failed to set "
|
||||
"extended attribute %s on %s. Reason: "
|
||||
"%s", GF_XATTR_VOL_ID_KEY,
|
||||
brickinfo->path, strerror (errno));
|
||||
len = snprintf (msg, sizeof (msg), "Failed to "
|
||||
"set extended attribute %s on "
|
||||
"%s. Reason: %s",
|
||||
GF_XATTR_VOL_ID_KEY,
|
||||
brickinfo->path,
|
||||
strerror (errno));
|
||||
if (len < 0) {
|
||||
strcpy(msg, "<error>");
|
||||
}
|
||||
goto out;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (gf_uuid_compare (volinfo->volume_id, volume_id)) {
|
||||
snprintf (msg, sizeof (msg), "Volume id mismatch for "
|
||||
"brick %s:%s. Expected volume id %s, "
|
||||
"volume id %s found", brickinfo->hostname,
|
||||
brickinfo->path,
|
||||
uuid_utoa_r (volinfo->volume_id, volid),
|
||||
uuid_utoa_r (volume_id, xattr_volid));
|
||||
len = snprintf (msg, sizeof (msg), "Volume id "
|
||||
"mismatch for brick %s:%s. Expected "
|
||||
"volume id %s, volume id %s found",
|
||||
brickinfo->hostname, brickinfo->path,
|
||||
uuid_utoa_r (volinfo->volume_id, volid),
|
||||
uuid_utoa_r (volume_id, xattr_volid));
|
||||
if (len < 0) {
|
||||
strcpy(msg, "<error>");
|
||||
}
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
@ -3070,6 +3085,7 @@ glusterd_clearlocks_get_local_client_ports (glusterd_volinfo_t *volinfo,
|
||||
int ret = -1;
|
||||
int i = 0;
|
||||
int port = 0;
|
||||
int32_t len = 0;
|
||||
|
||||
GF_ASSERT (xl_opts);
|
||||
if (!xl_opts) {
|
||||
@ -3085,11 +3101,15 @@ glusterd_clearlocks_get_local_client_ports (glusterd_volinfo_t *volinfo,
|
||||
continue;
|
||||
|
||||
if (volinfo->transport_type == GF_TRANSPORT_RDMA) {
|
||||
snprintf (brickname, sizeof(brickname), "%s.rdma",
|
||||
brickinfo->path);
|
||||
len = snprintf (brickname, sizeof(brickname),
|
||||
"%s.rdma", brickinfo->path);
|
||||
} else
|
||||
snprintf (brickname, sizeof(brickname), "%s",
|
||||
brickinfo->path);
|
||||
len = snprintf (brickname, sizeof(brickname), "%s",
|
||||
brickinfo->path);
|
||||
if ((len < 0) || (len >= sizeof(brickname))) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
port = pmap_registry_search (THIS, brickname,
|
||||
GF_PMAP_PORT_BRICKSERVER,
|
||||
|
@ -569,6 +569,7 @@ glusterd_crt_georep_folders (char *georepdir, glusterd_conf_t *conf)
|
||||
char *greplg_s = NULL;
|
||||
struct group *gr = NULL;
|
||||
int ret = 0;
|
||||
int32_t len = 0;
|
||||
|
||||
GF_ASSERT (georepdir);
|
||||
GF_ASSERT (conf);
|
||||
@ -582,7 +583,11 @@ glusterd_crt_georep_folders (char *georepdir, glusterd_conf_t *conf)
|
||||
goto out;
|
||||
}
|
||||
|
||||
snprintf (georepdir, PATH_MAX, "%s/"GEOREP, conf->workdir);
|
||||
len = snprintf (georepdir, PATH_MAX, "%s/"GEOREP, conf->workdir);
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
ret = mkdir_p (georepdir, 0777, _gf_true);
|
||||
if (-1 == ret) {
|
||||
gf_msg ("glusterd", GF_LOG_CRITICAL, errno,
|
||||
@ -1404,6 +1409,7 @@ init (xlator_t *this)
|
||||
gf_boolean_t upgrade = _gf_false;
|
||||
gf_boolean_t downgrade = _gf_false;
|
||||
char *localtime_logging = NULL;
|
||||
int32_t len = 0;
|
||||
|
||||
#ifndef GF_DARWIN_HOST_OS
|
||||
{
|
||||
@ -1503,8 +1509,13 @@ init (xlator_t *this)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
snprintf (snap_mount_dir, sizeof(snap_mount_dir), "%s%s",
|
||||
var_run_dir, GLUSTERD_DEFAULT_SNAPS_BRICK_DIR);
|
||||
len = snprintf (snap_mount_dir, sizeof(snap_mount_dir), "%s%s",
|
||||
var_run_dir, GLUSTERD_DEFAULT_SNAPS_BRICK_DIR);
|
||||
if ((len < 0) || (len >= sizeof(snap_mount_dir))) {
|
||||
gf_msg (this->name, GF_LOG_CRITICAL, 0,
|
||||
GD_MSG_DIR_OP_FAILED, "Snap mount dir too long");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ret = mkdir_p (GLUSTER_SHARED_STORAGE_BRICK_DIR, 0777,
|
||||
_gf_true);
|
||||
@ -1571,7 +1582,10 @@ init (xlator_t *this)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
snprintf (storedir, PATH_MAX, "%s/vols", workdir);
|
||||
len = snprintf (storedir, sizeof(storedir), "%s/vols", workdir);
|
||||
if ((len < 0) || (len >= sizeof(storedir))) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ret = sys_mkdir (storedir, 0777);
|
||||
|
||||
@ -1584,7 +1598,10 @@ init (xlator_t *this)
|
||||
}
|
||||
|
||||
/*keeping individual volume pid file information in /var/run/gluster* */
|
||||
snprintf (storedir, PATH_MAX, "%s/vols", rundir);
|
||||
len = snprintf (storedir, sizeof(storedir), "%s/vols", rundir);
|
||||
if ((len < 0) || (len >= sizeof(storedir))) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ret = sys_mkdir (storedir, 0777);
|
||||
|
||||
@ -1596,7 +1613,10 @@ init (xlator_t *this)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
snprintf (storedir, PATH_MAX, "%s/snaps", workdir);
|
||||
len = snprintf (storedir, sizeof(storedir), "%s/snaps", workdir);
|
||||
if ((len < 0) || (len >= sizeof(storedir))) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ret = sys_mkdir (storedir, 0777);
|
||||
|
||||
@ -1608,7 +1628,10 @@ init (xlator_t *this)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
snprintf (storedir, PATH_MAX, "%s/peers", workdir);
|
||||
len = snprintf (storedir, sizeof(storedir), "%s/peers", workdir);
|
||||
if ((len < 0) || (len >= sizeof(storedir))) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ret = sys_mkdir (storedir, 0777);
|
||||
|
||||
@ -1620,7 +1643,12 @@ init (xlator_t *this)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
snprintf (storedir, PATH_MAX, "%s/bricks", DEFAULT_LOG_FILE_DIRECTORY);
|
||||
len = snprintf (storedir, sizeof(storedir), "%s/bricks",
|
||||
DEFAULT_LOG_FILE_DIRECTORY);
|
||||
if ((len < 0) || (len >= sizeof(storedir))) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ret = sys_mkdir (storedir, 0777);
|
||||
if ((-1 == ret) && (errno != EEXIST)) {
|
||||
gf_msg (this->name, GF_LOG_CRITICAL, errno,
|
||||
@ -1630,7 +1658,10 @@ init (xlator_t *this)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
snprintf (storedir, PATH_MAX, "%s/nfs", workdir);
|
||||
len = snprintf (storedir, sizeof(storedir), "%s/nfs", workdir);
|
||||
if ((len < 0) || (len >= sizeof(storedir))) {
|
||||
exit(1);
|
||||
}
|
||||
ret = sys_mkdir (storedir, 0777);
|
||||
if ((-1 == ret) && (errno != EEXIST)) {
|
||||
gf_msg (this->name, GF_LOG_CRITICAL, errno,
|
||||
@ -1640,7 +1671,10 @@ init (xlator_t *this)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
snprintf (storedir, PATH_MAX, "%s/bitd", workdir);
|
||||
len = snprintf (storedir, sizeof(storedir), "%s/bitd", workdir);
|
||||
if ((len < 0) || (len >= sizeof(storedir))) {
|
||||
exit(1);
|
||||
}
|
||||
ret = sys_mkdir (storedir, 0777);
|
||||
if ((-1 == ret) && (errno != EEXIST)) {
|
||||
gf_msg (this->name, GF_LOG_CRITICAL, errno,
|
||||
@ -1650,7 +1684,10 @@ init (xlator_t *this)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
snprintf (storedir, PATH_MAX, "%s/scrub", workdir);
|
||||
len = snprintf (storedir, sizeof(storedir), "%s/scrub", workdir);
|
||||
if ((len < 0) || (len >= sizeof(storedir))) {
|
||||
exit(1);
|
||||
}
|
||||
ret = sys_mkdir (storedir, 0777);
|
||||
if ((-1 == ret) && (errno != EEXIST)) {
|
||||
gf_msg (this->name, GF_LOG_CRITICAL, errno,
|
||||
@ -1660,7 +1697,10 @@ init (xlator_t *this)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
snprintf (storedir, PATH_MAX, "%s/glustershd", workdir);
|
||||
len = snprintf (storedir, sizeof(storedir), "%s/glustershd", workdir);
|
||||
if ((len < 0) || (len >= sizeof(storedir))) {
|
||||
exit(1);
|
||||
}
|
||||
ret = sys_mkdir (storedir, 0777);
|
||||
if ((-1 == ret) && (errno != EEXIST)) {
|
||||
gf_msg (this->name, GF_LOG_CRITICAL, errno,
|
||||
@ -1670,7 +1710,10 @@ init (xlator_t *this)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
snprintf (storedir, PATH_MAX, "%s/quotad", workdir);
|
||||
len = snprintf (storedir, sizeof(storedir), "%s/quotad", workdir);
|
||||
if ((len < 0) || (len >= sizeof(storedir))) {
|
||||
exit(1);
|
||||
}
|
||||
ret = sys_mkdir (storedir, 0777);
|
||||
if ((-1 == ret) && (errno != EEXIST)) {
|
||||
gf_msg (this->name, GF_LOG_CRITICAL, errno,
|
||||
@ -1680,7 +1723,10 @@ init (xlator_t *this)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
snprintf (storedir, PATH_MAX, "%s/groups", workdir);
|
||||
len = snprintf (storedir, sizeof(storedir), "%s/groups", workdir);
|
||||
if ((len < 0) || (len >= sizeof(storedir))) {
|
||||
exit(1);
|
||||
}
|
||||
ret = sys_mkdir (storedir, 0777);
|
||||
if ((-1 == ret) && (errno != EEXIST)) {
|
||||
gf_msg (this->name, GF_LOG_CRITICAL, errno,
|
||||
|
@ -612,63 +612,119 @@ typedef enum {
|
||||
|
||||
typedef ssize_t (*gd_serialize_t) (struct iovec outmsg, void *args);
|
||||
|
||||
#define GLUSTERD_GET_VOLUME_DIR(path, volinfo, priv) \
|
||||
if (volinfo->is_snap_volume) { \
|
||||
snprintf (path, PATH_MAX, "%s/snaps/%s/%s", priv->workdir, \
|
||||
volinfo->snapshot->snapname, volinfo->volname); \
|
||||
} else { \
|
||||
snprintf (path, PATH_MAX, "%s/vols/%s", priv->workdir, \
|
||||
volinfo->volname); \
|
||||
}
|
||||
#define GLUSTERD_GET_VOLUME_DIR(path, volinfo, priv) \
|
||||
do { \
|
||||
int32_t len; \
|
||||
if (volinfo->is_snap_volume) { \
|
||||
len = snprintf (path, PATH_MAX, "%s/snaps/%s/%s", \
|
||||
priv->workdir, \
|
||||
volinfo->snapshot->snapname, \
|
||||
volinfo->volname); \
|
||||
} else { \
|
||||
len = snprintf (path, PATH_MAX, "%s/vols/%s", \
|
||||
priv->workdir, volinfo->volname); \
|
||||
} \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_TIER_DIR(path, volinfo, priv) do { \
|
||||
snprintf (path, PATH_MAX, "%s/tier/%s", priv->workdir, \
|
||||
volinfo->volname); \
|
||||
int32_t len; \
|
||||
len = snprintf (path, PATH_MAX, "%s/tier/%s", \
|
||||
priv->workdir, volinfo->volname); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_TIER_PID_FILE(path, volinfo, priv) do { \
|
||||
char tier_path[PATH_MAX]; \
|
||||
int32_t len; \
|
||||
GLUSTERD_GET_TIER_DIR(tier_path, volinfo, priv); \
|
||||
snprintf (path, PATH_MAX, "%s/run/%s-tierd.pid", tier_path,\
|
||||
volinfo->volname); \
|
||||
len = snprintf (path, PATH_MAX, "%s/run/%s-tierd.pid", \
|
||||
tier_path, volinfo->volname); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_VOLUME_PID_DIR(path, volinfo, priv) \
|
||||
do { \
|
||||
int32_t len; \
|
||||
if (volinfo->is_snap_volume) { \
|
||||
snprintf (path, PATH_MAX, "%s/snaps/%s/%s", \
|
||||
priv->rundir, \
|
||||
volinfo->snapshot->snapname, volinfo->volname); \
|
||||
len = snprintf (path, PATH_MAX, "%s/snaps/%s/%s", \
|
||||
priv->rundir, \
|
||||
volinfo->snapshot->snapname, \
|
||||
volinfo->volname); \
|
||||
} else { \
|
||||
snprintf (path, PATH_MAX, "%s/vols/%s", \
|
||||
priv->rundir, \
|
||||
volinfo->volname); \
|
||||
len = snprintf (path, PATH_MAX, "%s/vols/%s", \
|
||||
priv->rundir, \
|
||||
volinfo->volname); \
|
||||
} \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_SNAP_DIR(path, snap, priv) \
|
||||
snprintf (path, PATH_MAX, "%s/snaps/%s", priv->workdir, \
|
||||
snap->snapname);
|
||||
#define GLUSTERD_GET_SNAP_DIR(path, snap, priv) \
|
||||
do { \
|
||||
int32_t len; \
|
||||
len = snprintf (path, PATH_MAX, "%s/snaps/%s", priv->workdir, \
|
||||
snap->snapname); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_SNAP_GEO_REP_DIR(path, snap, priv) \
|
||||
snprintf (path, PATH_MAX, "%s/snaps/%s/%s", priv->workdir, \
|
||||
snap->snapname, GEOREP);
|
||||
do { \
|
||||
int32_t len; \
|
||||
len = snprintf (path, PATH_MAX, "%s/snaps/%s/%s", \
|
||||
priv->workdir, snap->snapname, GEOREP); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_BRICK_DIR(path, volinfo, priv) \
|
||||
if (volinfo->is_snap_volume) { \
|
||||
snprintf (path, PATH_MAX, "%s/snaps/%s/%s/%s", priv->workdir, \
|
||||
volinfo->snapshot->snapname, volinfo->volname, \
|
||||
GLUSTERD_BRICK_INFO_DIR); \
|
||||
} else { \
|
||||
snprintf (path, PATH_MAX, "%s/%s/%s/%s", priv->workdir, \
|
||||
GLUSTERD_VOLUME_DIR_PREFIX, volinfo->volname, \
|
||||
GLUSTERD_BRICK_INFO_DIR); \
|
||||
}
|
||||
do { \
|
||||
int32_t len; \
|
||||
if (volinfo->is_snap_volume) { \
|
||||
len = snprintf (path, PATH_MAX, "%s/snaps/%s/%s/%s", \
|
||||
priv->workdir, \
|
||||
volinfo->snapshot->snapname, \
|
||||
volinfo->volname, \
|
||||
GLUSTERD_BRICK_INFO_DIR); \
|
||||
} else { \
|
||||
len = snprintf (path, PATH_MAX, "%s/%s/%s/%s", \
|
||||
priv->workdir, \
|
||||
GLUSTERD_VOLUME_DIR_PREFIX, \
|
||||
volinfo->volname, \
|
||||
GLUSTERD_BRICK_INFO_DIR); \
|
||||
} \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_NFS_DIR(path, priv) \
|
||||
snprintf (path, PATH_MAX, "%s/nfs", priv->workdir);
|
||||
do { \
|
||||
int32_t len; \
|
||||
len = snprintf (path, PATH_MAX, "%s/nfs", priv->workdir); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_QUOTAD_DIR(path, priv) \
|
||||
snprintf (path, PATH_MAX, "%s/quotad", priv->workdir);
|
||||
do { \
|
||||
int32_t len; \
|
||||
len = snprintf (path, PATH_MAX, "%s/quotad", priv->workdir); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_QUOTA_LIMIT_MOUNT_PATH(abspath, volname, path) do { \
|
||||
snprintf (abspath, sizeof (abspath)-1, \
|
||||
@ -697,32 +753,48 @@ do { \
|
||||
#define GLUSTERD_GET_BRICK_PIDFILE(pidfile,volinfo,brickinfo, priv) do { \
|
||||
char exp_path[PATH_MAX] = {0,}; \
|
||||
char volpath[PATH_MAX] = {0,}; \
|
||||
int32_t len = 0; \
|
||||
GLUSTERD_GET_VOLUME_PID_DIR (volpath, volinfo, priv); \
|
||||
GLUSTERD_REMOVE_SLASH_FROM_PATH (brickinfo->path, exp_path); \
|
||||
snprintf (pidfile, PATH_MAX, "%s/%s-%s.pid", \
|
||||
volpath, brickinfo->hostname, exp_path); \
|
||||
len = snprintf (pidfile, PATH_MAX, "%s/%s-%s.pid", \
|
||||
volpath, brickinfo->hostname, exp_path); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
pidfile[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_NFS_PIDFILE(pidfile, nfspath, priv) { \
|
||||
snprintf (pidfile, PATH_MAX, "%s/nfs/nfs.pid", \
|
||||
priv->rundir); \
|
||||
}
|
||||
#define GLUSTERD_GET_NFS_PIDFILE(pidfile, nfspath, priv) do { \
|
||||
int32_t len; \
|
||||
len = snprintf (pidfile, PATH_MAX, "%s/nfs/nfs.pid", \
|
||||
priv->rundir); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
pidfile[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_QUOTAD_PIDFILE(pidfile, quotadpath, priv) { \
|
||||
snprintf (pidfile, PATH_MAX, "%s/quotad/quotad.pid", \
|
||||
priv->rundir); \
|
||||
}
|
||||
#define GLUSTERD_GET_QUOTAD_PIDFILE(pidfile, quotadpath, priv) do { \
|
||||
int32_t len; \
|
||||
len = snprintf (pidfile, PATH_MAX, "%s/quotad/quotad.pid", \
|
||||
priv->rundir); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
pidfile[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_QUOTA_CRAWL_PIDDIR(piddir, volinfo, type) do { \
|
||||
char _volpath[PATH_MAX] = {0,}; \
|
||||
int32_t len; \
|
||||
GLUSTERD_GET_VOLUME_DIR (_volpath, volinfo, priv); \
|
||||
if (type == GF_QUOTA_OPTION_TYPE_ENABLE || \
|
||||
type == GF_QUOTA_OPTION_TYPE_ENABLE_OBJECTS) \
|
||||
snprintf (piddir, PATH_MAX, "%s/run/quota/enable", \
|
||||
_volpath); \
|
||||
len = snprintf (piddir, PATH_MAX, \
|
||||
"%s/run/quota/enable", _volpath); \
|
||||
else \
|
||||
snprintf (piddir, PATH_MAX, "%s/run/quota/disable", \
|
||||
_volpath); \
|
||||
len = snprintf (piddir, PATH_MAX, \
|
||||
"%s/run/quota/disable", _volpath); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
piddir[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_STACK_DESTROY(frame) do {\
|
||||
@ -740,31 +812,49 @@ do { \
|
||||
#define GLUSTERD_GET_DEFRAG_DIR(path, volinfo, priv) do { \
|
||||
char vol_path[PATH_MAX]; \
|
||||
char operation[NAME_MAX]; \
|
||||
int32_t len; \
|
||||
GLUSTERD_GET_VOLUME_DIR(vol_path, volinfo, priv); \
|
||||
GLUSTERD_GET_DEFRAG_PROCESS(operation, volinfo); \
|
||||
snprintf (path, PATH_MAX, "%s/%s", vol_path, operation);\
|
||||
len = snprintf (path, PATH_MAX, "%s/%s", vol_path, \
|
||||
operation); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_DEFRAG_SOCK_FILE_OLD(path, volinfo, priv) do { \
|
||||
char defrag_path[PATH_MAX]; \
|
||||
int32_t len; \
|
||||
GLUSTERD_GET_DEFRAG_DIR(defrag_path, volinfo, priv); \
|
||||
snprintf (path, PATH_MAX, "%s/%s.sock", defrag_path, \
|
||||
uuid_utoa(MY_UUID)); \
|
||||
len = snprintf (path, PATH_MAX, "%s/%s.sock", \
|
||||
defrag_path, uuid_utoa(MY_UUID)); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_DEFRAG_SOCK_FILE(path, volinfo) do { \
|
||||
char operation[NAME_MAX]; \
|
||||
GLUSTERD_GET_DEFRAG_PROCESS(operation, volinfo); \
|
||||
snprintf (path, UNIX_PATH_MAX, DEFAULT_VAR_RUN_DIRECTORY \
|
||||
"/gluster-%s-%s.sock", operation, \
|
||||
uuid_utoa(volinfo->volume_id)); \
|
||||
#define GLUSTERD_GET_DEFRAG_SOCK_FILE(path, volinfo) do { \
|
||||
char operation[NAME_MAX]; \
|
||||
int32_t len; \
|
||||
GLUSTERD_GET_DEFRAG_PROCESS(operation, volinfo); \
|
||||
len = snprintf (path, UNIX_PATH_MAX, \
|
||||
DEFAULT_VAR_RUN_DIRECTORY \
|
||||
"/gluster-%s-%s.sock", operation, \
|
||||
uuid_utoa(volinfo->volume_id)); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_GET_DEFRAG_PID_FILE(path, volinfo, priv) do { \
|
||||
char defrag_path[PATH_MAX]; \
|
||||
int32_t len; \
|
||||
GLUSTERD_GET_DEFRAG_DIR(defrag_path, volinfo, priv); \
|
||||
snprintf (path, PATH_MAX, "%s/%s.pid", defrag_path, \
|
||||
uuid_utoa(MY_UUID)); \
|
||||
len = snprintf (path, PATH_MAX, "%s/%s.pid", \
|
||||
defrag_path, uuid_utoa(MY_UUID)); \
|
||||
if ((len < 0) || (len >= PATH_MAX)) { \
|
||||
path[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERFS_GET_QUOTA_LIMIT_MOUNT_PIDFILE(pidfile, volname) { \
|
||||
@ -796,15 +886,11 @@ do { \
|
||||
} while (0)
|
||||
|
||||
#define GLUSTERD_DUMP_PEERS(head, member, xpeers) do { \
|
||||
glusterd_peerinfo_t *_peerinfo = NULL; \
|
||||
int index = 1; \
|
||||
char key[GF_DUMP_MAX_BUF_LEN] = {0,}; \
|
||||
glusterd_peerinfo_t *_peerinfo = NULL; \
|
||||
int index = 1; \
|
||||
char *key = NULL; \
|
||||
\
|
||||
if (!xpeers) \
|
||||
snprintf (key, sizeof (key), "glusterd.peer"); \
|
||||
else \
|
||||
snprintf (key, sizeof (key), \
|
||||
"glusterd.xaction_peer"); \
|
||||
key = xpeers ? "glusterd.xaction_peer" : "glusterd.peer"; \
|
||||
\
|
||||
rcu_read_lock (); \
|
||||
cds_list_for_each_entry_rcu (_peerinfo, head, member) { \
|
||||
|
@ -2687,8 +2687,12 @@ posix_resolve_dirgfid_to_path (const uuid_t dirgfid, const char *brick_path,
|
||||
(void) snprintf (gpath, PATH_MAX, "%s/.glusterfs/", brick_path);
|
||||
|
||||
while (!(__is_root_gfid (pargfid))) {
|
||||
snprintf (dir_handle, PATH_MAX, "%s/%02x/%02x/%s", gpath,
|
||||
pargfid[0], pargfid[1], uuid_utoa (pargfid));
|
||||
len = snprintf (dir_handle, PATH_MAX, "%s/%02x/%02x/%s", gpath,
|
||||
pargfid[0], pargfid[1], uuid_utoa (pargfid));
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
len = sys_readlink (dir_handle, linkname, PATH_MAX);
|
||||
if (len < 0) {
|
||||
@ -2707,10 +2711,14 @@ posix_resolve_dirgfid_to_path (const uuid_t dirgfid, const char *brick_path,
|
||||
dir_name = strtok_r (NULL, "/", &saveptr);
|
||||
|
||||
if (strlen(pre_dir_name) != 0) { /* Remove '/' at the end */
|
||||
snprintf (result, PATH_MAX, "%s/%s", dir_name,
|
||||
pre_dir_name);
|
||||
len = snprintf (result, PATH_MAX, "%s/%s", dir_name,
|
||||
pre_dir_name);
|
||||
} else {
|
||||
snprintf (result, PATH_MAX, "%s", dir_name);
|
||||
len = snprintf (result, PATH_MAX, "%s", dir_name);
|
||||
}
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
strncpy (pre_dir_name, result, sizeof(pre_dir_name));
|
||||
@ -2720,12 +2728,20 @@ posix_resolve_dirgfid_to_path (const uuid_t dirgfid, const char *brick_path,
|
||||
}
|
||||
|
||||
if (bname) {
|
||||
snprintf (result1, PATH_MAX, "/%s/%s", result, bname);
|
||||
len = snprintf (result1, PATH_MAX, "/%s/%s", result, bname);
|
||||
} else {
|
||||
snprintf (result1, PATH_MAX, "/%s", result);
|
||||
len = snprintf (result1, PATH_MAX, "/%s", result);
|
||||
}
|
||||
if ((len < 0) || (len >= PATH_MAX)) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
*path = gf_strdup (result1);
|
||||
if (*path == NULL) {
|
||||
ret = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
out:
|
||||
return ret;
|
||||
|
Loading…
x
Reference in New Issue
Block a user