From 946d1fb5c7f4a593567b407222c9235f8fac7a59 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Fri, 9 Nov 2018 23:42:51 +0100 Subject: dbug log: verbosely detach conn<->lchan When reading the log of OS#3686, I wished for explicit logging of when exactly an lchan disassociates from a conn. Here is the debug logging I would have liked to see. I'm not sure whether we really need to merge this patch... Change-Id: I97558b899e7f2578ba98287e7352dc072d02ce44 --- src/osmo-bsc/bsc_subscr_conn_fsm.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'src/osmo-bsc/bsc_subscr_conn_fsm.c') diff --git a/src/osmo-bsc/bsc_subscr_conn_fsm.c b/src/osmo-bsc/bsc_subscr_conn_fsm.c index bca9e1f87..4d6521f83 100644 --- a/src/osmo-bsc/bsc_subscr_conn_fsm.c +++ b/src/osmo-bsc/bsc_subscr_conn_fsm.c @@ -651,14 +651,36 @@ void gscon_lchan_releasing(struct gsm_subscriber_connection *conn, struct gsm_lc /* An lchan was deallocated. */ void gscon_forget_lchan(struct gsm_subscriber_connection *conn, struct gsm_lchan *lchan) { + const char *detach_label = NULL; + if (!conn) + return; if (!lchan) return; - if (conn->assignment.new_lchan == lchan) + + if (conn->assignment.new_lchan == lchan) { conn->assignment.new_lchan = NULL; - if (conn->ho.new_lchan == lchan) + detach_label = "assignment.new_lchan"; + } + if (conn->ho.new_lchan == lchan) { conn->ho.new_lchan = NULL; - if (conn->lchan == lchan) + detach_label = "ho.new_lchan"; + } + if (conn->lchan == lchan) { conn->lchan = NULL; + detach_label = "primary lchan"; + } + + /* Log for both lchan FSM and conn FSM to ease reading the log in case of problems */ + if (detach_label) { + if (conn->fi) + LOGPFSML(conn->fi, LOGL_DEBUG, "conn detaches lchan %s\n", + lchan->fi? osmo_fsm_inst_name(lchan->fi) : gsm_lchan_name(lchan)); + + if (lchan->fi) + LOGPFSML(lchan->fi, LOGL_DEBUG, "conn %s detaches lchan (%s)\n", + conn->fi? osmo_fsm_inst_name(conn->fi) : "(conn without FSM)", + detach_label); + } if (conn->fi->state != ST_CLEARING && !conn->lchan -- cgit v1.2.3