diff options
author | Mohit Agrawal <moagrawal@redhat.com> | 2020-03-12 21:12:13 +0530 |
---|---|---|
committer | MOHIT AGRAWAL <moagrawa@redhat.com> | 2020-03-20 04:08:42 +0000 |
commit | fb20713b380e1df8d7f9e9df96563be2f9144fd6 (patch) | |
tree | cd61da00b382c7b805e74d5e9370e11df2718f49 /libglusterfs/src | |
parent | 5410cc35ea09b1932c8eae4933fbf84f462e61ea (diff) | |
download | glusterfs-fb20713b380e1df8d7f9e9df96563be2f9144fd6.tar.gz glusterfs-fb20713b380e1df8d7f9e9df96563be2f9144fd6.tar.xz glusterfs-fb20713b380e1df8d7f9e9df96563be2f9144fd6.zip |
Posix: Use simple approach to close fd
Problem: posix_release(dir) functions add the fd's into a ctx->janitor_fds
and janitor thread closes the fd's.In brick_mux environment it is
difficult to handle race condition in janitor threads because brick
spawns a single janitor thread for all bricks.
Solution: Use synctask to execute posix_release(dir) functions instead of
using background a thread to close fds.
Credits: Pranith Karampuri <pkarampu@redhat.com>
Change-Id: Iffb031f0695a7da83d5a2f6bac8863dad225317e
Fixes: bz#1811631
Signed-off-by: Mohit Agrawal <moagrawal@redhat.com>
Diffstat (limited to 'libglusterfs/src')
-rw-r--r-- | libglusterfs/src/glusterfs/glusterfs.h | 6 | ||||
-rw-r--r-- | libglusterfs/src/glusterfs/syncop.h | 7 |
2 files changed, 2 insertions, 11 deletions
diff --git a/libglusterfs/src/glusterfs/glusterfs.h b/libglusterfs/src/glusterfs/glusterfs.h index bbb66d264e..6d6ac36cfd 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 3614d96926..bfdec491ba 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) /* |