]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
viced: Do not try to reuse deleted client
authorAndrew Deason <adeason@sinenomine.net>
Wed, 27 Apr 2011 20:36:44 +0000 (15:36 -0500)
committerDerrick Brashear <shadow@dementix.org>
Fri, 16 Dec 2011 11:01:03 +0000 (03:01 -0800)
When h_FindClient_r encounters a deleted client structure, it does not
try to find a different client structure to use. Force it to use a new
client structure by setting client to NULL when it detects a deleted
client.

This arguably reverts part of
4e55e30f5b2c149b350b6d6875793adf722fdc21, but the code paths in
h_FindClient_r are very different now, so that commit is probably not
too relevant.

Reviewed-on: http://gerrit.openafs.org/4582
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit b2c6a850738437256626e0dfe743a09224879ad4)

Change-Id: I5e3a12ee79847a915edeec732946b43270a35697
Reviewed-on: http://gerrit.openafs.org/6296
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
src/viced/host.c

index 2ae1c8f866214f4d5eba99be46ce657c0b537741..8f6dd48740026f4d7a69b27ff1635256f0a0b5a9 100644 (file)
@@ -2386,11 +2386,12 @@ h_FindClient_r(struct rx_connection *tcon)
     client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key);
     if (client && client->sid == rxr_CidOf(tcon)
        && client->VenusEpoch == rxr_GetEpoch(tcon)
-       && !(client->host->hostFlags & HOSTDELETED)) {
+       && !(client->host->hostFlags & HOSTDELETED)
+       && !client->deleted) {
 
        client->refCount++;
        h_Hold_r(client->host);
-       if (!client->deleted && client->prfail != 2) {
+       if (client->prfail != 2) {
            /* Could add shared lock on client here */
            /* note that we don't have to lock entry in this path to
             * ensure CPS is initialized, since we don't call rx_SetSpecific