afs: Avoid creating unused conns 37/14637/2
authorAndrew Deason <adeason@sinenomine.net>
Mon, 7 Jun 2021 23:23:39 +0000 (18:23 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Thu, 10 Jun 2021 16:17:56 +0000 (12:17 -0400)
commitb60754ed1c1f2d1593ffc35a5febf39a50404134
tree1049f6eaae218a8244becae6e222be49db7ead3b
parenta73d337a55d4800b67b0ce3c60cb1d5f5fbc7519
afs: Avoid creating unused conns

In afs_LoopServers and PCallBackAddr, we loop over our known servers
to issue an RPC, but we skip over servers on various conditions. For
most of those, we skip over the server before creating the relevant
conn (via afs_ConnBySA), but not for the
SRVADDR_ISDOWN/afs_HaveCallBacksFrom check. If we skip over the server
for that reason, we'll create an afs_conn and rx_connection, and then
release our refs without using them.

This doesn't cause any big problems, but it does create extra
connections and peers that linger around for at least a couple of
hours (until they get cleaned up by afs_GCUserData).

It's very easy to avoid these extra useless conns; just perform the
SRVADDR_ISDOWN/afs_HaveCallBacksFrom check before we call
afs_ConnBYSA. This also makes the check a bit more consistent with the
other checks we do.

Change-Id: Ie49b87e5dd755f77364502528a02c14944e8c23d
Reviewed-on: https://gerrit.openafs.org/14637
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/afs/afs_pioctl.c
src/afs/afs_server.c