server-list-and-volume-updates-20040730
authorJeffrey Altman <jaltman@mit.edu>
Fri, 30 Jul 2004 21:02:57 +0000 (21:02 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Fri, 30 Jul 2004 21:02:57 +0000 (21:02 +0000)
commit6eaeb762448b0887cd3319bbd4cdb242838bc3b2
treeaf496af107830ef16b985ab4b86a97f5c8290e5a
parent24411ebbd7a2644225b60b83c1fb36912fb34145
server-list-and-volume-updates-20040730

As discovered previously, the cm_serverRef_t objects were not reference
counted.  This resulted in the objects being freed while they were
still in use.  This patch adds reference counting to the cm_serverRef_t
objects which are locked using the cm_serverLock.

Once the reference counting was fixed it became immediately obvious
that cm_VolumeUpdates could not succeed in altering the state of a
server list from ALLOFFLINE to NOTBUSY. cm_VolumeUpdate calls cm_Analyze
without a fid_t object which was required to obtain the server list for
the affected volume.  Of course, cm_VolumeUpdate has a pointer to the
volume so cm_Analyze was updated to take an optional pointer to a
cm_serverRef_t which avoids the need for the fid_t object.
src/WINNT/afsd/cm_callback.c
src/WINNT/afsd/cm_cell.c
src/WINNT/afsd/cm_conn.c
src/WINNT/afsd/cm_conn.h
src/WINNT/afsd/cm_dcache.c
src/WINNT/afsd/cm_ioctl.c
src/WINNT/afsd/cm_server.c
src/WINNT/afsd/cm_server.h
src/WINNT/afsd/cm_vnodeops.c
src/WINNT/afsd/cm_volume.c