From: Jeffrey Altman Date: Wed, 11 Feb 2015 06:25:04 +0000 (-0500) Subject: ubik: DISK_UpdateInterfaceAddr == server restart X-Git-Tag: upstream/1.8.0_pre1^2~350 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=30667a5d7b86b29f9aafe2b490d89b8e01bfc541;p=packages%2Fo%2Fopenafs.git ubik: DISK_UpdateInterfaceAddr == server restart If a DISK_UpdateInterfaceAddr RPC is received the server that sent it restarted. Force the urecovery code to verify the server state. Change-Id: I465863dc3a52d844b56d576bd55229435556cfd6 Reviewed-on: http://gerrit.openafs.org/11738 Tested-by: BuildBot Reviewed-by: Daria Brashear Reviewed-by: Jeffrey Hutzelman Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Jeffrey Altman --- diff --git a/src/ubik/remote.c b/src/ubik/remote.c index d9e1b1c60..fe6ea2d3c 100644 --- a/src/ubik/remote.c +++ b/src/ubik/remote.c @@ -679,6 +679,18 @@ SDISK_UpdateInterfaceAddr(struct rx_call *rxcall, ubik_print("... %s\n", afs_inet_ntoa_r(ts->addr[i], hoststr)); UBIK_ADDR_UNLOCK; + + /* + * The most likely cause of a DISK_UpdateInterfaceAddr RPC + * is because the server was restarted. Reset its state + * so that no DISK_Begin RPCs will be issued until the + * known database version is current. + */ + UBIK_BEACON_LOCK; + ts->beaconSinceDown = 0; + ts->currentDB = 0; + urecovery_LostServer(ts); + UBIK_BEACON_UNLOCK; return 0; }