core: Brick is not able to detach successfully in brick_mux environment
Problem: In brick_mux environment, while volumes are stopped in a
loop bricks are not detached successfully. Brick's are not
detached because xprtrefcnt has not become 0 for detached brick.
At the time of initiating brick detach process server_notify
saves xprtrefcnt on detach brick and once counter has become
0 then server_rpc_notify spawn a server_graph_janitor_threads
for cleanup brick resources.xprtrefcnt has not become 0 because
socket framework is not working due to assigning 0 as a fd for socket.
In commit dc25d2c1ee
there was a change in changelog fini to close htime_fd if htime_fd is not
negative, by default htime_fd is 0 so it close 0 also.
Solution: Initialize htime_fd to -1 after just allocate changelog_priv
by GF_CALLOC
> Fixes: bz#1699025
> Change-Id: I5f7ca62a0eb1c0510c3e9b880d6ab8af8d736a25
> Signed-off-by: Mohit Agrawal <moagrawal@redhat.com>
> (cherry picked from commit b777d83001d8006420b6c7d2d88fe68950aa7e00)
Change-Id: I7a2b6fc2d36405d51990376333e093661be48475
Fixes: bz#1699714
Signed-off-by: Mohit Agrawal <moagrawal@redhat.com>
This commit is contained in:
parent
08278e8823
commit
88ecd64604
@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
|
||||
. $(dirname $0)/../../include.rc
|
||||
. $(dirname $0)/../../volume.rc
|
||||
. $(dirname $0)/../../cluster.rc
|
||||
|
||||
function count_brick_processes {
|
||||
pgrep glusterfsd | wc -l
|
||||
}
|
||||
|
||||
cleanup
|
||||
|
||||
#bug-1444596 - validating brick mux
|
||||
|
||||
TEST glusterd
|
||||
TEST $CLI volume create $V0 $H0:$B0/brick{0,1}
|
||||
TEST $CLI volume create $V1 $H0:$B0/brick{2,3}
|
||||
|
||||
TEST $CLI volume set all cluster.brick-multiplex on
|
||||
|
||||
TEST $CLI volume start $V0
|
||||
TEST $CLI volume start $V1
|
||||
EXPECT_WITHIN $PROCESS_UP_TIMEOUT 4 online_brick_count
|
||||
EXPECT 1 count_brick_processes
|
||||
|
||||
TEST $CLI volume stop $V1
|
||||
# At the time initialize brick daemon it always keeps open
|
||||
# standard fd's (0, 1 , 2) so after stop 1 volume fd's should
|
||||
# be open
|
||||
nofds=$(ls -lrth /proc/`pgrep glusterfsd`/fd | grep dev/null | wc -l)
|
||||
TEST [ $((nofds)) -eq 3 ]
|
||||
|
||||
cleanup
|
@ -2740,6 +2740,7 @@ init(xlator_t *this)
|
||||
GF_ATOMIC_INIT(priv->clntcnt, 0);
|
||||
GF_ATOMIC_INIT(priv->xprtcnt, 0);
|
||||
INIT_LIST_HEAD(&priv->xprt_list);
|
||||
priv->htime_fd = -1;
|
||||
|
||||
ret = changelog_init_options(this, priv);
|
||||
if (ret)
|
||||
|
Loading…
Reference in New Issue
Block a user