[OpenAFS-devel] Yet another place: RX server thread IDs get mangled in the pthread fileserver

Rainer Toebbicke rtb@pclella.cern.ch
Fri, 14 Feb 2003 16:02:05 +0100


This is a multi-part message in MIME format.
--------------070309050306020708070405
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Yet another place where the RX thread IDs get mangled, this time the standard 
server threads:

The RX thread ID is set upon server thread creation by incrementing 
rxi_availProcs in rx_pthread.c. It is used for call scheduling purposes (one 
thread processes incoming calls fcfs) *and* as index into the host hold table 
(fileserver).

rxi_availProcs turns out to be an unfortunate choice, as it is already 
decremented if calls arrive while the server threads are still initialising, 
causing threads to inadvertently share IDs.

Correction: use the recently introduced rxi_pthread_hinum to assign IDs, and 
remember the number of the first thread created for call-queue-hopping 
decisions in rx.c instead of relying on one thread having ID 0.

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Rainer Toebbicke        http://cern.ch/~rtb         rtb@mail.cern.ch  O__
European Laboratory for Particle Physics(CERN) - Geneva, Switzerland   > |
Phone: +41 22 767 8985       Fax: +41 22 767 7155                     ( )\( )

--------------070309050306020708070405
Content-Type: application/x-java-vm;
 name="p_rx_threadid"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="p_rx_threadid"

KioqIG9wZW5hZnMtMS4yLjYvc3JjL3J4L3J4LmMJRnJpIEZlYiAgNyAxNDo1NTowOCAyMDAz
Ci0tLSBvcGVuYWZzL3NyYy9yeC9yeC5jCUZyaSBGZWIgIDcgMTA6Mjc6MjMgMjAwMwoqKioq
KioqKioqKioqKioKKioqIDE0NDcsMTQ1NCAqKioqCiAgCSAgICAgIGlmICghUXVvdGFPSyhz
ZXJ2aWNlKSkgewogIAkJY29udGludWU7CiAgCSAgICAgIH0KISAJICAgICAgaWYgKCF0bm8g
fHwgIXRjYWxsLT5xdWV1ZV9pdGVtX2hlYWRlci5uZXh0ICApIHsKISAJCS8qIElmIHdlJ3Jl
IHRocmVhZCAwLCB0aGVuICB3ZSdsbCBqdXN0IHVzZSAKICAJCSAqIHRoaXMgY2FsbC4gSWYg
d2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8gZmluZCBhbiBvcHRpbWFsIAogIAkJICogY2hvaWNl
LCBhbmQgd2UncmUgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgdGhlbiB1c2UgYSAKICAJCSAq
IDJkIGNob2ljZSBpZiBvbmUgaGFzIGJlZW4gaWRlbnRpZmllZC4gIE90aGVyd2lzZS4uLiAq
LwotLS0gMTQ0NywxNDU0IC0tLS0KICAJICAgICAgaWYgKCFRdW90YU9LKHNlcnZpY2UpKSB7
CiAgCQljb250aW51ZTsKICAJICAgICAgfQohIAkgICAgICBpZiAodG5vPT1yeGlfZmNmc190
aHJlYWRfbnVtIHx8ICF0Y2FsbC0+cXVldWVfaXRlbV9oZWFkZXIubmV4dCAgKSB7CiEgCQkv
KiBJZiB3ZSdyZSB0aGUgZmNmcyB0aHJlYWQgLCB0aGVuICB3ZSdsbCBqdXN0IHVzZSAKICAJ
CSAqIHRoaXMgY2FsbC4gSWYgd2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8gZmluZCBhbiBvcHRp
bWFsIAogIAkJICogY2hvaWNlLCBhbmQgd2UncmUgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwg
dGhlbiB1c2UgYSAKICAJCSAqIDJkIGNob2ljZSBpZiBvbmUgaGFzIGJlZW4gaWRlbnRpZmll
ZC4gIE90aGVyd2lzZS4uLiAqLwoqKioqKioqKioqKioqKioKKioqIDE2MDUsMTYxMiAqKioq
CiAgCWZvciAocXVldWVfU2NhbigmcnhfaW5jb21pbmdDYWxsUXVldWUsIHRjYWxsLCBuY2Fs
bCwgcnhfY2FsbCkpIHsKICAJICBzZXJ2aWNlID0gdGNhbGwtPmNvbm4tPnNlcnZpY2U7CiAg
CSAgaWYgKFF1b3RhT0soc2VydmljZSkpIHsKISAJICAgICBpZiAoIXRubyB8fCAhdGNhbGwt
PnF1ZXVlX2l0ZW1faGVhZGVyLm5leHQgICkgewohIAkJIC8qIElmIHdlJ3JlIHRocmVhZCAw
LCB0aGVuICB3ZSdsbCBqdXN0IHVzZSAKICAJCSAgKiB0aGlzIGNhbGwuIElmIHdlIGhhdmVu
J3QgYmVlbiBhYmxlIHRvIGZpbmQgYW4gb3B0aW1hbCAKICAJCSAgKiBjaG9pY2UsIGFuZCB3
ZSdyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LCB0aGVuIHVzZSBhIAogIAkJICAqIDJkIGNo
b2ljZSBpZiBvbmUgaGFzIGJlZW4gaWRlbnRpZmllZC4gIE90aGVyd2lzZS4uLiAqLwotLS0g
MTYwNSwxNjEyIC0tLS0KICAJZm9yIChxdWV1ZV9TY2FuKCZyeF9pbmNvbWluZ0NhbGxRdWV1
ZSwgdGNhbGwsIG5jYWxsLCByeF9jYWxsKSkgewogIAkgIHNlcnZpY2UgPSB0Y2FsbC0+Y29u
bi0+c2VydmljZTsKICAJICBpZiAoUXVvdGFPSyhzZXJ2aWNlKSkgewohIAkgICAgIGlmICh0
bm89PXJ4aV9mY2ZzX3RocmVhZF9udW0gfHwgIXRjYWxsLT5xdWV1ZV9pdGVtX2hlYWRlci5u
ZXh0ICApIHsKISAJCSAvKiBJZiB3ZSdyZSB0aGUgZmNmcyB0aHJlYWQsIHRoZW4gIHdlJ2xs
IGp1c3QgdXNlIAogIAkJICAqIHRoaXMgY2FsbC4gSWYgd2UgaGF2ZW4ndCBiZWVuIGFibGUg
dG8gZmluZCBhbiBvcHRpbWFsIAogIAkJICAqIGNob2ljZSwgYW5kIHdlJ3JlIGF0IHRoZSBl
bmQgb2YgdGhlIGxpc3QsIHRoZW4gdXNlIGEgCiAgCQkgICogMmQgY2hvaWNlIGlmIG9uZSBo
YXMgYmVlbiBpZGVudGlmaWVkLiAgT3RoZXJ3aXNlLi4uICovCioqKiBvcGVuYWZzLTEuMi42
L3NyYy9yeC9yeF9nbG9iYWxzLmgJV2VkIEphbiAyOSAxNTo1MDo1MSAyMDAzCi0tLSBvcGVu
YWZzL3NyYy9yeC9yeF9nbG9iYWxzLmgJVGh1IEZlYiAgNiAxNTo0MDo1MiAyMDAzCioqKioq
KioqKioqKioqKgoqKiogMzc0LDM4NCAqKioqCi0tLSAzNzQsMzg3IC0tLS0KICAgKi8KICAK
ICAjaWYgZGVmaW5lZChBRlNfUFRIUkVBRF9FTlYpCisgRVhUIGludAlyeGlfZmNmc190aHJl
YWRfbnVtIElOSVQoMCk7CiAgRVhUIHB0aHJlYWRfa2V5X3QgcnhfdGhyZWFkX2lkX2tleTsK
ICAvKiBrZWVwIHRyYWNrIG9mIHB0aHJlYWQgbnVtYmVycwogIAlwcm90ZWN0ZWQgYnkgcnhf
c3RhdHNfbXV0ZXgsIGV4Y2VwdCBpbiByeF9Jbml0KCkgYmVmb3JlIG11dGV4IGV4aXN0cyAh
IQogICAqLwogIEVYVCBpbnQgcnhpX3B0aHJlYWRfaGludW0gSU5JVCgwKTsKKyAjZWxzZQor
ICNkZWZpbmUgcnhpX2ZjZnNfdGhyZWFkX251bSAoMCkKICAjZW5kaWYKICAKICAjaWYgZGVm
aW5lZChSWF9FTkFCTEVfTE9DS1MpCioqKiBvcGVuYWZzL3NyYy9yeC9yeF9wdGhyZWFkLmMu
b3JpZwlNb24gRmViIDEwIDExOjA2OjIyIDIwMDMKLS0tIG9wZW5hZnMvc3JjL3J4L3J4X3B0
aHJlYWQuYwlNb24gRmViIDEwIDExOjEwOjE1IDIwMDMKKioqKioqKioqKioqKioqCioqKiAx
MzMsMTQxICoqKioKICAJcHJpbnRmKCJVbmFibGUgdG8gQ3JlYXRlIFJ4IHNlcnZlciB0aHJl
YWRcbiIpOwogIAlleGl0KDEpOwogICAgICB9Ci0gCU1VVEVYX0VOVEVSKCZyeF9zdGF0c19t
dXRleCk7Ci0gCSsrcnhpX3B0aHJlYWRfaGludW07Ci0gCU1VVEVYX0VYSVQoJnJ4X3N0YXRz
X211dGV4KTsKICAgICAgQUZTX1NJR1NFVF9SRVNUT1JFKCk7CiAgfQogIAotLS0gMTMzLDEz
OCAtLS0tCioqKioqKioqKioqKioqKgoqKiogMjgyLDI4OCAqKioqCiAgICAgIHJ4aV9kYXRh
UXVvdGEgKz0gcnhfaW5pdFNlbmRXaW5kb3c7CS8qIFJlc2VydmUgc29tZSBwa3RzIGZvciBo
YXJkIHRpbWVzICovCiAgICAgIC8qIHRocmVhZElEIGlzIHVzZWQgZm9yIG1ha2luZyBkZWNp
c2lvbnMgaW4gR2V0Q2FsbC4gIEdldCBpdCBieSBidW1waW5nCiAgICAgICAqIG51bWJlciBv
ZiB0aHJlYWRzIGhhbmRsaW5nIGluY29taW5nIGNhbGxzICovCiEgICAgIHRocmVhZElEID0g
cnhpX2F2YWlsUHJvY3MrKzsKICAgICAgTVVURVhfRVhJVCgmcnhfc3RhdHNfbXV0ZXgpOwog
IAogICAgICB3aGlsZSgxKSB7Ci0tLSAyNzksMjk5IC0tLS0KICAgICAgcnhpX2RhdGFRdW90
YSArPSByeF9pbml0U2VuZFdpbmRvdzsJLyogUmVzZXJ2ZSBzb21lIHBrdHMgZm9yIGhhcmQg
dGltZXMgKi8KICAgICAgLyogdGhyZWFkSUQgaXMgdXNlZCBmb3IgbWFraW5nIGRlY2lzaW9u
cyBpbiBHZXRDYWxsLiAgR2V0IGl0IGJ5IGJ1bXBpbmcKICAgICAgICogbnVtYmVyIG9mIHRo
cmVhZHMgaGFuZGxpbmcgaW5jb21pbmcgY2FsbHMgKi8KISAJLyogVW5pcXVlIHRocmVhZCBJ
RDogdXNlZCBmb3Igc2NoZWR1bGluZyBwdXJwb3NlcyAqYW5kKiBhcyBpbmRleCBpbnRvCiEg
CQl0aGUgaG9zdCBob2xkIHRhYmxlIChmaWxlc2VydmVyKS4gCiEgCQlUaGUgcHJldmlvdXNs
eSB1c2VkIHJ4aV9hdmFpbFByb2NzIGlzIHVuc3VpdGFibGUgYXMgaXQKISAJCXdpbGwgYWxy
ZWFkeSBnbyB1cCBhbmQgZG93biBhcyBwYWNrZXRzIGFycml2ZSB3aGlsZSB0aGUgc2VydmVy
CiEgCQl0aHJlYWRzIGFyZSBzdGlsbCBpbml0aWFsaXNpbmchIFRoZSByZWNlbnRseSBpbnRy
b2R1Y2VkCiEgCQlyeGlfcHRocmVhZF9oaW51bSBkb2VzIG5vdCBuZWNlc3NhcmlseSBsZWFk
IHRvIGEgc2VydmVyCiEgCQl0aHJlYWQgd2l0aCBpZCAwLCB3aGljaCBpcyBub3QgYWxsb3dl
ZCB0byBob3AgdGhyb3VnaCB0aGUKISAJCWluY29taW5nIGNhbGwgcXVldWUuCiEgCQlTbyBl
aXRoZXIgaW50cm9kdWNlIHlldCBhbm90aGVyIGNvdW50ZXIgb3IgZmxhZyB0aGUgRkNGUwoh
IAkJdGhyZWFkLi4uIGNob3NlIHRoZSBsYXR0ZXIuCiEgCSovCiEgCXRocmVhZElEID0gKyty
eGlfcHRocmVhZF9oaW51bTsKISAJaWYgKHJ4aV9mY2ZzX3RocmVhZF9udW09PTAgJiYgcnhp
X2ZjZnNfdGhyZWFkX251bSE9dGhyZWFkSUQpCiEgCQlyeGlfZmNmc190aHJlYWRfbnVtPXRo
cmVhZElEOwohIAkrK3J4aV9hdmFpbFByb2NzOwogICAgICBNVVRFWF9FWElUKCZyeF9zdGF0
c19tdXRleCk7CiAgCiAgICAgIHdoaWxlKDEpIHsK
--------------070309050306020708070405--