client: reload routing state after mutate without restarting

A completed gkfs_malleability mutate updates the daemons via forward_mutate_reload() but never an already-connected client, which keeps routing RPCs to removed daemons forever (NA_TIMEOUT retry storm, confirmed via live pstack against DMR malleable-checkpoint workloads on MN5).

Adds an in-process reload: PreloadContext now holds hosts/distributor/ local_host_id as one mutex-guarded RoutingSnapshot swapped atomically via commit_routing(), and a dedicated watcher thread (sigwait on LIBGKFS_RELOAD_SIGNAL, default SIGUSR1, blocked process-wide so it can only be consumed there) calls reload_client_topology() to reparse the hosts file and rebuild routing state live -- mirroring MalleableManager::reload_hosts_file() on the daemon side, without tearing down the Margo/Mercury engine or restarting the process.

Merge request reports

Loading
Loading