Re: [devel] [PATCH 1/1] mds: Unset flow control env var [#3109]
Hi Vu, Please find comments below. Thanks Minh On 31/10/19 6:15 pm, Nguyen Minh Vu wrote: Hi Minh, Ack with minor comments. Regards, Vu On 10/31/19 11:55 AM, Minh Chau wrote: Patch unsets MDS_TIPC_FCTRL_ENABLED, MDS_TIPC_FCTRL_ACKTIMEOUT, and MDS_TIPC_FCTRL_ACKSIZE to prevent child process inheritance. --- src/mds/mds_dt_tipc.c | 39 +-- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/src/mds/mds_dt_tipc.c b/src/mds/mds_dt_tipc.c index e7a7b48..096e4ca 100644 --- a/src/mds/mds_dt_tipc.c +++ b/src/mds/mds_dt_tipc.c @@ -167,6 +167,8 @@ uint32_t mdtm_global_frag_num; const unsigned int MAX_RECV_THRESHOLD = 30; uint8_t gl_mds_pro_ver = MDS_PROT | MDS_VERSION; +int gl_mds_fctrl_acksize = -1; +int gl_mds_fctrl_ackto = -1; [Vu] Should we declare these ones as static variables if they are only used in this file ? [M]: Yes, make them static static bool get_tipc_port_id(int sock, struct tipc_portid* port_id) { struct sockaddr_tipc addr; @@ -347,32 +349,49 @@ uint32_t mdtm_tipc_init(NODE_ID nodeid, uint32_t *mds_tipc_ref) if ((ptr = getenv("MDS_TIPC_FCTRL_ENABLED")) != NULL) { if (atoi(ptr) == 1) { gl_mds_pro_ver = MDS_PROT_FCTRL; - int ackto = -1; - int acksize = -1; if ((ptr = getenv("MDS_TIPC_FCTRL_ACKTIMEOUT")) != NULL) { - ackto = atoi(ptr); - if (ackto == 0) { + gl_mds_fctrl_ackto = atoi(ptr); + if (gl_mds_fctrl_ackto == 0) { syslog(LOG_ERR, "MDTM:TIPC Invalid " "MDS_TIPC_FCTRL_ACKTIMEOUT, using default value"); - ackto = -1; + gl_mds_fctrl_ackto = -1; } } if ((ptr = getenv("MDS_TIPC_FCTRL_ACKSIZE")) != NULL) { - acksize = atoi(ptr); - if (acksize == 0) { + gl_mds_fctrl_acksize = atoi(ptr); + if (gl_mds_fctrl_acksize == 0) { syslog(LOG_ERR, "MDTM:TIPC Invalid " "MDS_TIPC_FCTRL_ACKSIZE, using default value"); - acksize = -1; + gl_mds_fctrl_acksize = -1; } } - mds_tipc_fctrl_initialize(tipc_cb.BSRsock, port_id, optval, - ackto, acksize, tipc_mcast_enabled); + /* unset the env var to prevent child process inheritance */ + if (unsetenv("MDS_TIPC_FCTRL_ENABLED") != 0) { + syslog(LOG_ERR, + "MDTM:TIPC Failed to unset MDS_TIPC_FCTRL_ENABLED"); + } + if (gl_mds_fctrl_ackto != -1 && + unsetenv("MDS_TIPC_FCTRL_ACKTIMEOUT") != 0) { + syslog(LOG_ERR, + "MDTM:TIPC Failed to unset MDS_TIPC_FCTRL_ACKTIMEOUT"); + } + if (gl_mds_fctrl_acksize != -1 && + unsetenv("MDS_TIPC_FCTRL_ACKSIZE") != 0) { + syslog(LOG_ERR, + "MDTM:TIPC Failed to unset MDS_TIPC_FCTRL_ACKSIZE"); + } } else { + gl_mds_pro_ver = MDS_PROT | MDS_VERSION; [Vu] This line may be not necessary as the default value of gl_mds_pro_ver is `MDS_PROT | MDS_VERSION`. [M] It may be invalid value by setenv() in the scenario you suggested: Init/Finalize/Init with setenv(invalid value). syslog(LOG_ERR, "MDTM:TIPC Invalid value of" "MDS_TIPC_FCTRL_ENABLED"); } } + if (gl_mds_pro_ver == MDS_PROT_FCTRL) { + mds_tipc_fctrl_initialize(tipc_cb.BSRsock, port_id, optval, + gl_mds_fctrl_ackto, gl_mds_fctrl_acksize, tipc_mcast_enabled); + } + /* Create a task to receive the events and data */ if (mdtm_create_rcv_task(tipc_cb.hdle_mdtm) != NCSCC_RC_SUCCESS) { syslog(LOG_ERR, ___ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel
Re: [devel] [PATCH 1/1] mds: Unset flow control env var [#3109]
Hi Minh, Ack with minor comments. Regards, Vu On 10/31/19 11:55 AM, Minh Chau wrote: Patch unsets MDS_TIPC_FCTRL_ENABLED, MDS_TIPC_FCTRL_ACKTIMEOUT, and MDS_TIPC_FCTRL_ACKSIZE to prevent child process inheritance. --- src/mds/mds_dt_tipc.c | 39 +-- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/src/mds/mds_dt_tipc.c b/src/mds/mds_dt_tipc.c index e7a7b48..096e4ca 100644 --- a/src/mds/mds_dt_tipc.c +++ b/src/mds/mds_dt_tipc.c @@ -167,6 +167,8 @@ uint32_t mdtm_global_frag_num; const unsigned int MAX_RECV_THRESHOLD = 30; uint8_t gl_mds_pro_ver = MDS_PROT | MDS_VERSION; +int gl_mds_fctrl_acksize = -1; +int gl_mds_fctrl_ackto = -1; [Vu] Should we declare these ones as static variables if they are only used in this file ? static bool get_tipc_port_id(int sock, struct tipc_portid* port_id) { struct sockaddr_tipc addr; @@ -347,32 +349,49 @@ uint32_t mdtm_tipc_init(NODE_ID nodeid, uint32_t *mds_tipc_ref) if ((ptr = getenv("MDS_TIPC_FCTRL_ENABLED")) != NULL) { if (atoi(ptr) == 1) { gl_mds_pro_ver = MDS_PROT_FCTRL; - int ackto = -1; - int acksize = -1; if ((ptr = getenv("MDS_TIPC_FCTRL_ACKTIMEOUT")) != NULL) { - ackto = atoi(ptr); - if (ackto == 0) { + gl_mds_fctrl_ackto = atoi(ptr); + if (gl_mds_fctrl_ackto == 0) { syslog(LOG_ERR, "MDTM:TIPC Invalid " "MDS_TIPC_FCTRL_ACKTIMEOUT, using default value"); - ackto = -1; + gl_mds_fctrl_ackto = -1; } } if ((ptr = getenv("MDS_TIPC_FCTRL_ACKSIZE")) != NULL) { - acksize = atoi(ptr); - if (acksize == 0) { + gl_mds_fctrl_acksize = atoi(ptr); + if (gl_mds_fctrl_acksize == 0) { syslog(LOG_ERR, "MDTM:TIPC Invalid " "MDS_TIPC_FCTRL_ACKSIZE, using default value"); - acksize = -1; + gl_mds_fctrl_acksize = -1; } } - mds_tipc_fctrl_initialize(tipc_cb.BSRsock, port_id, optval, - ackto, acksize, tipc_mcast_enabled); + /* unset the env var to prevent child process inheritance */ + if (unsetenv("MDS_TIPC_FCTRL_ENABLED") != 0) { + syslog(LOG_ERR, + "MDTM:TIPC Failed to unset MDS_TIPC_FCTRL_ENABLED"); + } + if (gl_mds_fctrl_ackto != -1 && + unsetenv("MDS_TIPC_FCTRL_ACKTIMEOUT") != 0) { + syslog(LOG_ERR, + "MDTM:TIPC Failed to unset MDS_TIPC_FCTRL_ACKTIMEOUT"); + } + if (gl_mds_fctrl_acksize != -1 && + unsetenv("MDS_TIPC_FCTRL_ACKSIZE") != 0) { + syslog(LOG_ERR, + "MDTM:TIPC Failed to unset MDS_TIPC_FCTRL_ACKSIZE"); + } } else { + gl_mds_pro_ver = MDS_PROT | MDS_VERSION; [Vu] This line may be not necessary as the default value of gl_mds_pro_ver is `MDS_PROT | MDS_VERSION`. syslog(LOG_ERR, "MDTM:TIPC Invalid value of" "MDS_TIPC_FCTRL_ENABLED"); } } + if (gl_mds_pro_ver == MDS_PROT_FCTRL) { + mds_tipc_fctrl_initialize(tipc_cb.BSRsock, port_id, optval, + gl_mds_fctrl_ackto, gl_mds_fctrl_acksize, tipc_mcast_enabled); + } + /* Create a task to receive the events and data */ if (mdtm_create_rcv_task(tipc_cb.hdle_mdtm) != NCSCC_RC_SUCCESS) { syslog(LOG_ERR, ___ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel
Re: [devel] [PATCH 1/1] mds: Unset flow control env var [#3109]
Hi Vu, I think users will lose the value set in env var if users repeat Init/Finalize/Init. I have sent out V2. Thanks Minh On 31/10/19 2:33 pm, Nguyen Minh Vu wrote: Hi Minh, Ack with one question. What happens if user does following sequence: 1) Init service handle --> Have this env variable set, then unset later on. 2) Finalize the handle 3) Init service handle --> I am not sure if previous unset has any affects to tipc flow control from this point e.g. has tipc flow control been disabled from previous unset? Regards, Vu On 10/31/19 5:32 AM, Minh Chau wrote: Patch unsets MDS_TIPC_FCTRL_ENABLED, MDS_TIPC_FCTRL_ACKTIMEOUT, and MDS_TIPC_FCTRL_ACKSIZE to prevent child process inheritance. --- src/mds/mds_dt_tipc.c | 13 + 1 file changed, 13 insertions(+) diff --git a/src/mds/mds_dt_tipc.c b/src/mds/mds_dt_tipc.c index e7a7b48..12b275d 100644 --- a/src/mds/mds_dt_tipc.c +++ b/src/mds/mds_dt_tipc.c @@ -367,6 +367,19 @@ uint32_t mdtm_tipc_init(NODE_ID nodeid, uint32_t *mds_tipc_ref) } mds_tipc_fctrl_initialize(tipc_cb.BSRsock, port_id, optval, ackto, acksize, tipc_mcast_enabled); + /* unset the env var to prevent child process inheritance */ + if (unsetenv("MDS_TIPC_FCTRL_ENABLED") != 0) { + syslog(LOG_ERR, + "MDTM:TIPC Failed to unset MDS_TIPC_FCTRL_ENABLED"); + } + if (ackto != -1 && unsetenv("MDS_TIPC_FCTRL_ACKTIMEOUT") != 0) { + syslog(LOG_ERR, + "MDTM:TIPC Failed to unset MDS_TIPC_FCTRL_ACKTIMEOUT"); + } + if (acksize != -1 && unsetenv("MDS_TIPC_FCTRL_ACKSIZE") != 0) { + syslog(LOG_ERR, + "MDTM:TIPC Failed to unset MDS_TIPC_FCTRL_ACKSIZE"); + } } else { syslog(LOG_ERR, "MDTM:TIPC Invalid value of" "MDS_TIPC_FCTRL_ENABLED"); ___ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel
Re: [devel] [PATCH 1/1] mds: Unset flow control env var [#3109]
Hi Minh, Ack with one question. What happens if user does following sequence: 1) Init service handle --> Have this env variable set, then unset later on. 2) Finalize the handle 3) Init service handle --> I am not sure if previous unset has any affects to tipc flow control from this point e.g. has tipc flow control been disabled from previous unset? Regards, Vu On 10/31/19 5:32 AM, Minh Chau wrote: Patch unsets MDS_TIPC_FCTRL_ENABLED, MDS_TIPC_FCTRL_ACKTIMEOUT, and MDS_TIPC_FCTRL_ACKSIZE to prevent child process inheritance. --- src/mds/mds_dt_tipc.c | 13 + 1 file changed, 13 insertions(+) diff --git a/src/mds/mds_dt_tipc.c b/src/mds/mds_dt_tipc.c index e7a7b48..12b275d 100644 --- a/src/mds/mds_dt_tipc.c +++ b/src/mds/mds_dt_tipc.c @@ -367,6 +367,19 @@ uint32_t mdtm_tipc_init(NODE_ID nodeid, uint32_t *mds_tipc_ref) } mds_tipc_fctrl_initialize(tipc_cb.BSRsock, port_id, optval, ackto, acksize, tipc_mcast_enabled); + /* unset the env var to prevent child process inheritance */ + if (unsetenv("MDS_TIPC_FCTRL_ENABLED") != 0) { + syslog(LOG_ERR, + "MDTM:TIPC Failed to unset MDS_TIPC_FCTRL_ENABLED"); + } + if (ackto != -1 && unsetenv("MDS_TIPC_FCTRL_ACKTIMEOUT") != 0) { + syslog(LOG_ERR, + "MDTM:TIPC Failed to unset MDS_TIPC_FCTRL_ACKTIMEOUT"); + } + if (acksize != -1 && unsetenv("MDS_TIPC_FCTRL_ACKSIZE") != 0) { + syslog(LOG_ERR, + "MDTM:TIPC Failed to unset MDS_TIPC_FCTRL_ACKSIZE"); + } } else { syslog(LOG_ERR, "MDTM:TIPC Invalid value of" "MDS_TIPC_FCTRL_ENABLED"); ___ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel