From 5bc4594dabc08fd4de1940c044946e33037f2ac7 Mon Sep 17 00:00:00 2001 From: Mohit Agrawal Date: Tue, 2 Oct 2018 08:54:28 +0530 Subject: core: glusterfsd keeping fd open in index xlator Problem: Current resource cleanup sequence is not perfect while brick mux is enabled Solution: 1) Destroying xprt after cleanup all fd associated with a client 2) Before call fini for brick xlators ensure no stub should be running on a brick Change-Id: I86195785e428f57d3ef0da3e4061021fafacd435 fixes: bz#1631357 Signed-off-by: Mohit Agrawal --- xlators/storage/posix/src/posix-common.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'xlators/storage/posix/src/posix-common.c') diff --git a/xlators/storage/posix/src/posix-common.c b/xlators/storage/posix/src/posix-common.c index 9c9d52e3609..03cb532e2c5 100644 --- a/xlators/storage/posix/src/posix-common.c +++ b/xlators/storage/posix/src/posix-common.c @@ -143,11 +143,21 @@ posix_inode(xlator_t *this) int32_t posix_notify(xlator_t *this, int32_t event, void *data, ...) { + xlator_t *victim = data; + switch (event) { case GF_EVENT_PARENT_UP: { /* Tell the parent that posix xlator is up */ default_notify(this, GF_EVENT_CHILD_UP, data); } break; + + case GF_EVENT_PARENT_DOWN: { + if (!victim->cleanup_starting) + break; + gf_log(this->name, GF_LOG_INFO, "Sending CHILD_DOWN for brick %s", + victim->name); + default_notify(this->parents->xlator, GF_EVENT_CHILD_DOWN, data); + } break; default: /* */ break; -- cgit