mirror of
https://git.openafs.org/openafs.git
synced 2025-01-31 13:38:01 +00:00
viced-alloc-hosts-held-and-locked-20030114
to avoid potential race as we chain in while allocating then try to lock after returning to h_GetHost_r
This commit is contained in:
parent
c52ddf77fa
commit
cff9ae0f10
@ -525,7 +525,7 @@ return;
|
||||
|
||||
/*
|
||||
* Allocate a host. It will be identified by the peer (ip,port) info in the
|
||||
* rx connection provided. The host is returned un-held and un-locked
|
||||
* rx connection provided. The host is returned held and locked
|
||||
*/
|
||||
#define DEF_ROPCONS 2115
|
||||
|
||||
@ -586,6 +586,8 @@ struct host *h_Alloc_r(register struct rx_connection *r_con)
|
||||
h_gethostcps(host); /* do this under host lock */
|
||||
#endif
|
||||
host->FirstClient = 0;
|
||||
h_Hold_r(host);
|
||||
h_Lock_r(host);
|
||||
h_InsertList_r(host); /* update global host List */
|
||||
#if FS_STATS_DETAILED
|
||||
/*
|
||||
@ -1008,9 +1010,7 @@ retry:
|
||||
goto retry;
|
||||
}
|
||||
} else {
|
||||
host = h_Alloc_r(tcon);
|
||||
h_Hold_r(host);
|
||||
h_Lock_r(host);
|
||||
host = h_Alloc_r(tcon); /* returned held and locked */
|
||||
h_gethostcps_r(host,FT_ApproxTime());
|
||||
if (!(host->Console&1)) {
|
||||
if (!identP || !interfValid) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user