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 <buildbot@rampaginggeek.com>
Reviewed-by: Daria Brashear <shadow@your-file-system.com>
Reviewed-by: Jeffrey Hutzelman <jhutz@cmu.edu>
Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
(cherry picked from commit 30667a5d7b86b29f9aafe2b490d89b8e01bfc541)
Reviewed-on: http://gerrit.openafs.org/11774
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Reviewed-by: Chas Williams <3chas3@gmail.com>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
This commit is contained in:
Jeffrey Altman 2015-02-11 01:25:04 -05:00 committed by Stephan Wiesand
parent 09c1b9d5cf
commit 539b0d7597

View File

@ -724,6 +724,15 @@ SDISK_UpdateInterfaceAddr(struct rx_call *rxcall,
for (i = 0; i < UBIK_MAX_INTERFACE_ADDR && ts->addr[i]; i++)
ubik_print("... %s\n", afs_inet_ntoa_r(ts->addr[i], hoststr));
/*
* 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.
*/
ts->beaconSinceDown = 0;
ts->currentDB = 0;
urecovery_LostServer();
return 0;
}