2013-02-26 14:02:04

by Bodo Stroesser

[permalink] [raw]
Subject: Re: [PATCH 1/2] sunrpc/cache: remove races with queuing an upcall.

T24gMjYgRmViIDIwMTMgMDc6Mzc6MDAgKzAxMDAgTmVpbEJyb3duIDxuZWlsYkBzdXNlLmRl
PiB3cm90ZToKCj4gV2UgY3VycmVudGx5IHF1ZXVlIGFuIHVwY2FsbCBhZnRlciBzZXR0aW5n
IENBQ0hFX1BFTkRJTkcsIGFuZCBkZXF1ZXVlIGFmdGVyIGNsZWFyaW5nIENBQ0hFX1BFTkRJ
TkcuCj4gU28gYSByZXF1ZXN0IHNob3VsZCBvbmx5IGJlIHByZXNlbnQgd2hlbiBDQUNIRV9Q
RU5ESU5HIGlzIHNldC4KPiAKPiBIb3dldmVyIHdlIGRvbid0IGNvbWJpbmUgdGhlIHRlc3Qg
YW5kIHRoZSBlbnF1ZXVlL2RlcXVldWUgaW4gYSBwcm90ZWN0ZWQgcmVnaW9uLCBzbyBpdCBp
cyBwb3NzaWJsZSAoaWYgdW5saWtlbHkpIGZvciBhIHJhY2UgdG8gcmVzdWx0IGluIGEgcmVx
dWVzdCBiZWluZyBxdWV1ZWQgd2l0aG91dCBDQUNIRV9QRU5ESU5HIHNldCwgb3IgYSByZXF1
ZXN0IHRvIGJlIGFic2VudCBkZXNwaXRlIENBQ0hFX1BFTkRJTkcuCj4gCj4gU286IGluY2x1
ZGUgYSB0ZXN0IGZvciBDQUNIRV9QRU5ESU5HIGluc2lkZSB0aGUgcmVnaW9ucyBvZiBlbnF1
ZXVlIGFuZCBkZXF1ZXVlIHdoZXJlIHF1ZXVlX2xvY2sgaXMgaGVsZCwgYW5kIGFib3J0IHRo
ZSBvcGVyYXRpb24gaWYgdGhlIHZhbHVlIGlzIG5vdCBhcyBleHBlY3RlZC4KPiAKPiBXaXRo
IHRoaXMsIGl0IHBlcmZlY3RseSBzYWZlIGFuZCBjb3JyZWN0IHRvOgo+ICAtIGNhbGwgY2Fj
aGVfZGVxdWV1ZSgpIGlmIGFuZCBvbmx5IGlmIHdlIGhhdmUganVzdAo+ICAgIGNsZWFyZWQg
Q0FDSEVfUEVORElORwo+ICAtIGNhbGwgc3VucnBjX2NhY2hlX3BpcGVfdXBjYWxsKCkgKHZp
YSBjYWNoZV9tYWtlX3VwY2FsbCkKPiAgICBpZiBhbmQgb25seSBpZiB3ZSBoYXZlIGp1c3Qg
c2V0IENBQ0hFX1BFTkRJTkcuCj4gCj4gUmVwb3J0ZWQtYnk6IEJvZG8gU3Ryb2Vzc2VyIDxi
c3Ryb2Vzc2VyQHRzLmZ1aml0c3UuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE5laWxCcm93biA8
bmVpbGJAc3VzZS5kZT4KClNvcnJ5LCBJIGRvbid0IGFncmVlIHdpdGggdGhpcyBwYXRjaCwg
YXMgaXQgZml4ZXMgdGhlIGZpcnN0IHNjZW5hcmlvIG9mIG15IG1haWwKZnJvbSAyNCBGZWIg
MjAxMywgYnV0IEFGQUlDUyBjaGFuZ2VzIHRoZSBzZWNvbmQgb25lICh3aGljaCBoYXMgYmVl
biBhIG1pbm9yCnBvaW50IHRoYXQgZGlkbid0IG5lZWQgZml4aW5nIG5lY2Vzc2FyaWx5KSB0
byBhIG1lbW9yeSBsZWFrLgoKSSdsbCB0cnkgdG8gZXhwYWluIG15IGRvdWJ0czoKCkFnYWlu
LCBhc3N1bWUgdHdvIHRocmVhZHMgY2FsbGluZyBjYWNoZV9jaGVjaygpIGNvbmN1cnJlbnRs
eSBmb3IgdGhlIHNhbWUgY2FjaGUKZW50cnkgb2YgYSBjYWNoZSB0aGF0IGhhcyBhIHJlYWRl
ci4KQm90aCB0aHJlYWRzIGdldCByZXN1bHQgLUVBR0FJTiBmcm9tIGNhY2hlX2lzX3ZhbGlk
KCkuIFRoZSBzZWNvbmQgdGhyZWFkIGF0IHRoYXQKbW9tZW50IGlzIGludGVycnVwdGVkIGFu
ZCBzdXNwZW5kZWQgZm9yIGEgd2hpbGUuClRoZSBmaXJzdCB0aHJlYWQgc2V0cyBDQUNIRV9Q
RU5ESU5HIGFuZCBxdWV1ZXMgYW4gdXBjYWxsIHJlcXVlc3QgYW5kIHNsZWVwcwp3YWl0aW5n
IGZvciB0aGUgcmVwbHkuClRoZSByZWFkZXIgcmVhZHMgdGhlIHJlcXVlc3QgYW5kIHJlcGxp
ZXMgYWNjb3JkaW5nbHkuIEluIHN1bnJwY19jYWNoZV91cGRhdGUoKQp0aGUgcmVhZGVyIGNo
YW5nZXMgdGhlIGVudHJ5IHRvIENBQ0hFX1ZBTElEIGFuZCBjYWxscyBjYWNoZV9mcmVzaF91
bmxvY2tlZCgpLgpJbiBjYWNoZV9mcmVzaF91bmxvY2tlZCgpIGl0IHJlc2V0cyBDQUNIRV9Q
RU5ESU5HLiBBdCB0aGlzIG1vbWVudCBpdCBpcwppbnRlcnJ1cHRlZCBhbmQgc3VzcGVuZGVk
LgpOb3cgdGhlIHNlY29uZCB0aHJlYWQgd2FrZXMgdXAsIHNldHMgQ0FDSEVfUEVORElORyBh
Z2FpbiBhbmQgcXVldWVzIGEgbmV3IHVwY2FsbApyZXF1ZXN0LgpUaGUgcmVhZGVyIHdha2Vz
IHVwIGFuZCBzZWVzLCB0aGF0IENBQ0hFX1BFTkRJTkcgaXMgc2V0IGFnYWluIGFuZCBkb2Vz
IG5vdApkZXF1ZXVlIHRoZSBvbGQgcmVxdWVzdC4gLS0+IG1lbW9yeSBsZWFrICg/KQoKSW4g
bXkgb3BpbmlvbiwgdGhlcmUgYXJlIHR3byBwb3NzaWJsZSBmaXhlcyB0aGF0IGNvdWxkIHJl
cGxhY2UgdGhpcyBwYXRjaDoKCjEpIERvbid0IGNhbGwgY2FjaGVfZGVxdWV1ZSgpIGZyb20g
Y2FjaGVfY2hlY2soKS4gVHJ5aW5nIHRvIGRlcXVldWUgc29tZXRoaW5nCiAgIGV2ZW4gaWYg
d2Uga25vdywgdGhhdCB3ZSBoYXZlbid0IHF1ZXVlZCwgbG9va3Mgc3RyYW5nZSB0byBtZS4g
KEFuZCB5ZXMsIEkKICAgdW5kZXJzdGFuZCB0aGUgcmVhc29uLCB3aHkgeW91IGRvbid0IGxp
a2UgaXQsIGJ1dCBuZXZlcnRoZWxlc3MgSSBjb25zaWRlcgogICB0aGlzIHRoZSBiZXN0IHNv
bHV0aW9uLikKICAgVGhpcyBvbmUgd291bGQgZml4IG15IGZpcnN0IHNjZW5hcmlvcCBvbmx5
LCBidXQgbm90IHRoZSBzZWNvbmQuCgoyKSBJIHRoaW5rLCB0aGUgc3RhcnRpbmcgcG9pbnQg
b2YgYWxsIHRyb3VibGUgaXMgaW4gY2FjaGVfY2hlY2soKS4KICAgQ3VycmVudGx5LCBpZiBh
IHRocmVhZCBoYXMgc2V0IENBQ0hFX1BFTkRJTkcsIGlzIHdvcmtzIHVzaW5nIGEgCiAgIHBv
c3NpYmx5IG5vIGxvbmdlciB2YWxpZCBzdGF0ZSBvZiB0aGUgY2FjaGUgZW50cnkgKHJ2KS4K
ICAgQUZBSUNTLCBpdCB3b3VsZCBmaXggbW9zdCBvZiB0aGUgcHJvYmxlbXMgdG8gcmUtY2hl
Y2sgdGhlCiAgIGNhY2hlIGVudHJ5J3Mgc3RhdGUgYmV0d2VlbiBzZXR0aW5nIENBQ0hFX1BF
TkRJTkcgYW5kIHRoZSB1cGNhbGwuCiAgIFRoZSB1cGNhbGwgc2hvdWxkIGJlIGRvbmUgb25s
eSwgaWYgc3RpbGwgbmVjZXNzYXJ5LgogICBUaGlzIG9uZSBjb3VsZCBiZSBjb21iaW5lZCB3
aXRoIGEgbmV3IGJpdCBpbiB0aGUgZW50cnkncyBzdGF0ZSwgdGhhdCBpcwogICBzZXQgaWYg
YSB2YWxpZCBlbnRyeSBpcyB1cGRhdGVkICh0aGF0IGlzOiByZXBsYWNlZCkuIENoZWNraW5n
IHRoaXMKICAgYml0IGFsc28gaW1tZWRpYXRlbHkgYmVmb3JlIGNhY2hlX21ha2VfdXBjYWxs
KCkgaXMgY2FsbGVkIHdvdWxkCiAgIGFsc28gZml4IG15IHNlY29uZCBzY2VuYXJpbyBmdWxs
eSBpbiB0aGF0IGl0IGF2b2lkcyB1bm5lY2Vzc2FyeQogICB1cGNhbGxzLgoKQm9kbwoKCgo+
IC0tLQo+ICBuZXQvc3VucnBjL2NhY2hlLmMgfCAgIDE2ICsrKysrKysrKysrKysrLS0KPiAg
MSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gCj4g
ZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMvY2FjaGUuYyBiL25ldC9zdW5ycGMvY2FjaGUuYyBp
bmRleCA5YWZhNDM5Li5iNDhjOGVmIDEwMDY0NAo+IC0tLSBhL25ldC9zdW5ycGMvY2FjaGUu
Ywo+ICsrKyBiL25ldC9zdW5ycGMvY2FjaGUuYwo+IEBAIC0xMDIyLDYgKzEwMjIsOSBAQCBz
dGF0aWMgdm9pZCBjYWNoZV9kZXF1ZXVlKHN0cnVjdCBjYWNoZV9kZXRhaWwgKmRldGFpbCwg
c3RydWN0IGNhY2hlX2hlYWQgKmNoKQo+ICAJCQlzdHJ1Y3QgY2FjaGVfcmVxdWVzdCAqY3Ig
PSBjb250YWluZXJfb2YoY3EsIHN0cnVjdCBjYWNoZV9yZXF1ZXN0LCBxKTsKPiAgCQkJaWYg
KGNyLT5pdGVtICE9IGNoKQo+ICAJCQkJY29udGludWU7Cj4gKwkJCWlmICh0ZXN0X2JpdChD
QUNIRV9QRU5ESU5HLCAmY2gtPmZsYWdzKSkKPiArCQkJCS8qIExvc3QgYSByYWNlIGFuZCBp
dCBpcyBwZW5kaW5nIGFnYWluICovCj4gKwkJCQlicmVhazsKPiAgCQkJaWYgKGNyLT5yZWFk
ZXJzICE9IDApCj4gIAkJCQljb250aW51ZTsKPiAgCQkJbGlzdF9kZWwoJmNyLT5xLmxpc3Qp
Owo+IEBAIC0xMTUxLDYgKzExNTQsNyBAQCBpbnQgc3VucnBjX2NhY2hlX3BpcGVfdXBjYWxs
KHN0cnVjdCBjYWNoZV9kZXRhaWwgKmRldGFpbCwgc3RydWN0IGNhY2hlX2hlYWQgKmgsCj4g
IAlzdHJ1Y3QgY2FjaGVfcmVxdWVzdCAqY3JxOwo+ICAJY2hhciAqYnA7Cj4gIAlpbnQgbGVu
Owo+ICsJaW50IHJldCA9IDA7Cj4gIAo+ICAJaWYgKCFjYWNoZV9saXN0ZW5lcnNfZXhpc3Qo
ZGV0YWlsKSkgewo+ICAJCXdhcm5fbm9fbGlzdGVuZXIoZGV0YWlsKTsKPiBAQCAtMTE4Miwx
MCArMTE4NiwxOCBAQCBpbnQgc3VucnBjX2NhY2hlX3BpcGVfdXBjYWxsKHN0cnVjdCBjYWNo
ZV9kZXRhaWwgKmRldGFpbCwgc3RydWN0IGNhY2hlX2hlYWQgKmgsCj4gIAljcnEtPmxlbiA9
IFBBR0VfU0laRSAtIGxlbjsKPiAgCWNycS0+cmVhZGVycyA9IDA7Cj4gIAlzcGluX2xvY2so
JnF1ZXVlX2xvY2spOwo+IC0JbGlzdF9hZGRfdGFpbCgmY3JxLT5xLmxpc3QsICZkZXRhaWwt
PnF1ZXVlKTsKPiArCWlmICh0ZXN0X2JpdChDQUNIRV9QRU5ESU5HLCAmaC0+ZmxhZ3MpKQo+
ICsJCWxpc3RfYWRkX3RhaWwoJmNycS0+cS5saXN0LCAmZGV0YWlsLT5xdWV1ZSk7Cj4gKwll
bHNlCj4gKwkJLyogTG9zdCBhIHJhY2UsIG5vIGxvbmdlciBQRU5ESU5HLCBzbyBkb24ndCBl
bnF1ZXVlICovCj4gKwkJcmV0ID0gLUVBR0FJTjsKPiAgCXNwaW5fdW5sb2NrKCZxdWV1ZV9s
b2NrKTsKPiAgCXdha2VfdXAoJnF1ZXVlX3dhaXQpOwo+IC0JcmV0dXJuIDA7Cj4gKwlpZiAo
cmV0ID09IC1FQUdBSU4pIHsKPiArCQlrZnJlZShidWYpOwo+ICsJCWtmcmVlKGNycSk7Cj4g
Kwl9Cj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIEVYUE9SVF9TWU1CT0xfR1BMKHN1bnJwY19j
YWNoZV9waXBlX3VwY2FsbCk7Cj4gIAo+IAo=