summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libglusterfs/src/glusterfs/glusterfs.h6
-rw-r--r--libglusterfs/src/glusterfs/syncop.h7
-rw-r--r--rpc/rpc-lib/src/rpcsvc.c6
-rwxr-xr-xrun-tests.sh3
-rwxr-xr-xtests/features/ssl-authz.t7
-rw-r--r--xlators/storage/posix/src/posix-common.c4
-rw-r--r--xlators/storage/posix/src/posix-helpers.c98
-rw-r--r--xlators/storage/posix/src/posix-inode-fd-ops.c28
-rw-r--r--xlators/storage/posix/src/posix.h3
9 files changed, 19 insertions, 143 deletions
diff --git a/libglusterfs/src/glusterfs/glusterfs.h b/libglusterfs/src/glusterfs/glusterfs.h
index bbb66d2..6d6ac36 100644
--- a/libglusterfs/src/glusterfs/glusterfs.h
+++ b/libglusterfs/src/glusterfs/glusterfs.h
@@ -728,12 +728,6 @@ struct _glusterfs_ctx {
struct list_head volfile_list;
- /* Add members to manage janitor threads for cleanup fd */
- struct list_head janitor_fds;
- pthread_cond_t janitor_cond;
- pthread_mutex_t janitor_lock;
- pthread_t janitor;
-
char volume_id[GF_UUID_BUF_SIZE]; /* Used only in protocol/client */
};
typedef struct _glusterfs_ctx glusterfs_ctx_t;
diff --git a/libglusterfs/src/glusterfs/syncop.h b/libglusterfs/src/glusterfs/syncop.h
index 3614d96..bfdec49 100644
--- a/libglusterfs/src/glusterfs/syncop.h
+++ b/libglusterfs/src/glusterfs/syncop.h
@@ -240,7 +240,7 @@ struct syncopctx {
task = synctask_get(); \
stb->task = task; \
if (task) \
- frame = task->opframe; \
+ frame = copy_frame(task->opframe); \
else \
frame = syncop_create_frame(THIS); \
\
@@ -261,10 +261,7 @@ struct syncopctx {
STACK_WIND_COOKIE(frame, cbk, (void *)stb, subvol, fn_op, params); \
\
__yield(stb); \
- if (task) \
- STACK_RESET(frame->root); \
- else \
- STACK_DESTROY(frame->root); \
+ STACK_DESTROY(frame->root); \
} while (0)
/*
diff --git a/rpc/rpc-lib/src/rpcsvc.c b/rpc/rpc-lib/src/rpcsvc.c
index 81d40c8..f7d911b 100644
--- a/rpc/rpc-lib/src/rpcsvc.c
+++ b/rpc/rpc-lib/src/rpcsvc.c
@@ -365,6 +365,12 @@ rpcsvc_program_actor(rpcsvc_request_t *req)
req->ownthread = program->ownthread;
req->synctask = program->synctask;
+ if (((req->procnum == GFS3_OP_RELEASE) ||
+ (req->procnum == GFS3_OP_RELEASEDIR)) &&
+ (program->prognum == GLUSTER_FOP_PROGRAM)) {
+ req->ownthread = _gf_false;
+ req->synctask = _gf_true;
+ }
err = SUCCESS;
gf_log(GF_RPCSVC, GF_LOG_TRACE, "Actor found: %s - %s for %s",
diff --git a/run-tests.sh b/run-tests.sh
index d3ff78d..2768adb 100755
--- a/run-tests.sh
+++ b/run-tests.sh
@@ -357,8 +357,7 @@ function run_tests()
selected_tests=$((selected_tests+1))
echo
echo $section_separator$section_separator
- if [[ $(get_test_status $t) == "BAD_TEST" ]] || \
- [[ $(get_test_status $t) == "BRICK_MUX_BAD_TEST" ]] && \
+ if [[ $(get_test_status $t) =~ "BAD_TEST" ]] && \
[[ $skip_bad_tests == "yes" ]]
then
skipped_bad_tests=$((skipped_bad_tests+1))
diff --git a/tests/features/ssl-authz.t b/tests/features/ssl-authz.t
index 132b598..497083e 100755
--- a/tests/features/ssl-authz.t
+++ b/tests/features/ssl-authz.t
@@ -67,13 +67,14 @@ echo "Memory consumption for glusterfsd process"
for i in $(seq 1 100); do
gluster v heal $V0 info >/dev/null
done
-
+#Wait to cleanup memory
+sleep 10
end=`pmap -x $glusterfsd_pid | grep total | awk -F " " '{print $4}'`
diff=$((end-start))
-# If memory consumption is more than 5M some leak in SSL code path
+# If memory consumption is more than 15M some leak in SSL code path
-TEST [ $diff -lt 5000 ]
+TEST [ $diff -lt 15000 ]
# Set ssl-allow to a wildcard that includes our identity.
diff --git a/xlators/storage/posix/src/posix-common.c b/xlators/storage/posix/src/posix-common.c
index f400394..20a8d23 100644
--- a/xlators/storage/posix/src/posix-common.c
+++ b/xlators/storage/posix/src/posix-common.c
@@ -1029,10 +1029,6 @@ posix_init(xlator_t *this)
pthread_mutex_init(&_private->janitor_mutex, NULL);
pthread_cond_init(&_private->janitor_cond, NULL);
INIT_LIST_HEAD(&_private->fsyncs);
- ret = posix_spawn_ctx_janitor_thread(this);
- if (ret)
- goto out;
-
ret = gf_thread_create(&_private->fsyncer, NULL, posix_fsyncer, this,
"posixfsy");
if (ret) {
diff --git a/xlators/storage/posix/src/posix-helpers.c b/xlators/storage/posix/src/posix-helpers.c
index 4919cbd..d18db10 100644
--- a/xlators/storage/posix/src/posix-helpers.c
+++ b/xlators/storage/posix/src/posix-helpers.c
@@ -1587,104 +1587,6 @@ unlock:
return;
}
-static struct posix_fd *
-janitor_get_next_fd(glusterfs_ctx_t *ctx, int32_t janitor_sleep)
-{
- struct posix_fd *pfd = NULL;
-
- struct timespec timeout;
-
- pthread_mutex_lock(&ctx->janitor_lock);
- {
- if (list_empty(&ctx->janitor_fds)) {
- time(&timeout.tv_sec);
- timeout.tv_sec += janitor_sleep;
- timeout.tv_nsec = 0;
-
- pthread_cond_timedwait(&ctx->janitor_cond, &ctx->janitor_lock,
- &timeout);
- goto unlock;
- }
-
- pfd = list_entry(ctx->janitor_fds.next, struct posix_fd, list);
-
- list_del(ctx->janitor_fds.next);
- }
-unlock:
- pthread_mutex_unlock(&ctx->janitor_lock);
-
- return pfd;
-}
-
-static void *
-posix_ctx_janitor_thread_proc(void *data)
-{
- xlator_t *this = NULL;
- struct posix_fd *pfd;
- glusterfs_ctx_t *ctx = NULL;
- struct posix_private *priv = NULL;
- int32_t sleep_duration = 0;
-
- this = data;
- ctx = THIS->ctx;
- THIS = this;
-
- priv = this->private;
- sleep_duration = priv->janitor_sleep_duration;
- while (1) {
- pfd = janitor_get_next_fd(ctx, sleep_duration);
- if (pfd) {
- if (pfd->dir == NULL) {
- gf_msg_trace(this->name, 0, "janitor: closing file fd=%d",
- pfd->fd);
- sys_close(pfd->fd);
- } else {
- gf_msg_debug(this->name, 0, "janitor: closing dir fd=%p",
- pfd->dir);
- sys_closedir(pfd->dir);
- }
-
- GF_FREE(pfd);
- }
- }
-
- return NULL;
-}
-
-int
-posix_spawn_ctx_janitor_thread(xlator_t *this)
-{
- struct posix_private *priv = NULL;
- int ret = 0;
- glusterfs_ctx_t *ctx = NULL;
-
- priv = this->private;
- ctx = THIS->ctx;
-
- LOCK(&priv->lock);
- {
- if (!ctx->janitor) {
- pthread_mutex_init(&ctx->janitor_lock, NULL);
- pthread_cond_init(&ctx->janitor_cond, NULL);
- INIT_LIST_HEAD(&ctx->janitor_fds);
-
- ret = gf_thread_create(&ctx->janitor, NULL,
- posix_ctx_janitor_thread_proc, this,
- "posixctxjan");
-
- if (ret) {
- gf_msg(this->name, GF_LOG_ERROR, errno, P_MSG_THREAD_FAILED,
- "spawning janitor "
- "thread failed");
- goto unlock;
- }
- }
- }
-unlock:
- UNLOCK(&priv->lock);
- return ret;
-}
-
static int
is_fresh_file(int64_t sec, int64_t ns)
{
diff --git a/xlators/storage/posix/src/posix-inode-fd-ops.c b/xlators/storage/posix/src/posix-inode-fd-ops.c
index a6c2b51..439a436 100644
--- a/xlators/storage/posix/src/posix-inode-fd-ops.c
+++ b/xlators/storage/posix/src/posix-inode-fd-ops.c
@@ -1366,7 +1366,6 @@ posix_releasedir(xlator_t *this, fd_t *fd)
struct posix_fd *pfd = NULL;
uint64_t tmp_pfd = 0;
int ret = 0;
- glusterfs_ctx_t *ctx = NULL;
VALIDATE_OR_GOTO(this, out);
VALIDATE_OR_GOTO(fd, out);
@@ -1384,21 +1383,11 @@ posix_releasedir(xlator_t *this, fd_t *fd)
goto out;
}
- ctx = THIS->ctx;
-
- pthread_mutex_lock(&ctx->janitor_lock);
- {
- INIT_LIST_HEAD(&pfd->list);
- list_add_tail(&pfd->list, &ctx->janitor_fds);
- pthread_cond_signal(&ctx->janitor_cond);
- }
- pthread_mutex_unlock(&ctx->janitor_lock);
-
- /*gf_msg_debug(this->name, 0, "janitor: closing dir fd=%p", pfd->dir);
+ gf_msg_debug(this->name, 0, "janitor: closing dir fd=%p", pfd->dir);
sys_closedir(pfd->dir);
GF_FREE(pfd);
- */
+
out:
return 0;
}
@@ -2525,13 +2514,11 @@ posix_release(xlator_t *this, fd_t *fd)
struct posix_fd *pfd = NULL;
int ret = -1;
uint64_t tmp_pfd = 0;
- glusterfs_ctx_t *ctx = NULL;
VALIDATE_OR_GOTO(this, out);
VALIDATE_OR_GOTO(fd, out);
priv = this->private;
- ctx = THIS->ctx;
ret = fd_ctx_del(fd, this, &tmp_pfd);
if (ret < 0) {
@@ -2546,13 +2533,10 @@ posix_release(xlator_t *this, fd_t *fd)
"pfd->dir is %p (not NULL) for file fd=%p", pfd->dir, fd);
}
- pthread_mutex_lock(&ctx->janitor_lock);
- {
- INIT_LIST_HEAD(&pfd->list);
- list_add_tail(&pfd->list, &ctx->janitor_fds);
- pthread_cond_signal(&ctx->janitor_cond);
- }
- pthread_mutex_unlock(&ctx->janitor_lock);
+ gf_msg_debug(this->name, 0, "janitor: closing dir fd=%p", pfd->dir);
+
+ sys_close(pfd->fd);
+ GF_FREE(pfd);
if (!priv)
goto out;
diff --git a/xlators/storage/posix/src/posix.h b/xlators/storage/posix/src/posix.h
index 359b838..fb609df 100644
--- a/xlators/storage/posix/src/posix.h
+++ b/xlators/storage/posix/src/posix.h
@@ -659,9 +659,6 @@ posix_cs_maintenance(xlator_t *this, fd_t *fd, loc_t *loc, int *pfd,
int
posix_check_dev_file(xlator_t *this, inode_t *inode, char *fop, int *op_errno);
-int
-posix_spawn_ctx_janitor_thread(xlator_t *this);
-
void
posix_update_iatt_buf(struct iatt *buf, int fd, char *loc, dict_t *xdata);