From 30667a5d7b86b29f9aafe2b490d89b8e01bfc541 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Wed, 11 Feb 2015 01:25:04 -0500 Subject: [PATCH] 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 --- src/ubik/remote.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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; } -- 2.39.5