This code is in
vicecb.cc
.
The file server keeps a table of hosts that are up, see the section on connection handling. Each time a call back is granted to a client, a file entry is entered in the hash table. When the file is modified, all clients holding the callback are notified.
Callback management handles a hash table for FileEntry's and for CallBackEntry's. A CallBackEntry is attached/removed to each FileEntry as needed.
A CallBackEntry contains a pointer to the host HostTable (the host (vicedep/srv.h) so that the host to notify can be found back. All structures are managed in VM. For locality of referenence, CallBacks and FileEntry are allocated in blocks. Routines are present to delete the callbacks for a Fid, or to remove all backbacks for a Venus which has failed.