Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Apr 2009 19:19:09 +0400
From:      =?UTF-8?B?0JzQtdC90YzRiNC40LrQvtCyINCa0L7QvdGB0YLQsNC90YLQuNC9?= <k.menshikov@peterhost.ru>
To:        freebsd-jail@freebsd.org
Subject:   CPU limit for Jails(patch for ULE scheduler)
Message-ID:  <49EC926D.6020404@peterhost.ru>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------010407030304050405020607
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hello all!
Many users want have limits on resourse for jail, for examle cpu and 
memory limit.
I`m rewrire original cdjones patch  for cpu limit for jail under ULE
scheduler.
So,  this work simple.
We count cpu usage for all jails, and if jail use cpu more than have
shared cpu, we move his threads to IDLE queue and return to TIMESHARE in 
  reverse case.
Jailed thread can use all avaliable cpu time, if  system has avaliable cpu.
If system under heavy load, jailed thread can`t use cpu long as ratio
(shared cpu for jail/ all shared cpu) < (estimate usage cpu for jail /
all usage cpu) .
Unjailed thread and interactive thread are not subject to this regime.
Add 2 sysctl
kern.sched.total_sched_shares - total count shares cpu in system,
increase if we have more cpu
kern.sched.flush_estcpu_interval - flush estcpu interval in ticks,
default is 2560 = 2 * 128 * 10, NCPU*stathz*sec, increase if we have
more cpu
For use cpu limit, you need use flag -S NSharedCPU in /usr/sbin/jail
program.
My example jail -S100 /usr/jails/root/ root.kostjn.pht  192.168.0.245
/bin/csh

I`m tested this under 10 simultaneous process in jail and in main
system. test program is infinity cycle an 8 core xeon, use RELENG_7.
First run process in jail, and after in main system.
This one process tracking cpu usage
Jail
root    1052  0.0  0.0  3692   784  p1  RJ    7:38PM   0:00.39 /test.o
root    1052 21.2  0.0  3692   784  p1  RJ    7:38PM   0:02.40 /test.o
root    1052 35.6  0.0  3692   784  p1  RJ    7:38PM   0:04.40 /test.o
root    1052 47.5  0.0  3692   784  p1  RJ    7:38PM   0:06.41 /test.o
root    1052 39.9  0.0  3692   784  p1  RJ    7:38PM   0:06.62 /test.o
root    1052 33.2  0.0  3692   784  p1  RJ    7:38PM   0:06.62 /test.o
root    1052 27.6  0.0  3692   784  p1  RJ    7:38PM   0:06.62 /test.o
root    1052 22.9  0.0  3692   784  p1  RJ    7:38PM   0:06.62 /test.o
root    1052 19.0  0.0  3692   784  p1  RJ    7:38PM   0:06.62 /test.o
root    1052 15.8  0.0  3692   784  p1  RJ    7:38PM   0:06.62 /test.o
root    1052 13.0  0.0  3692   784  p1  RJ    7:38PM   0:06.62 /test.o
root    1052 10.8  0.0  3692   784  p1  RJ    7:38PM   0:06.62 /test.o
root    1052  8.9  0.0  3692   784  p1  RJ    7:38PM   0:06.62 /tes

Main system
root    1088 14.9  0.0  3692   780  p0  R     7:38PM   0:01.57 /root/test.o
root    1088 30.8  0.0  3692   780  p0  R     7:38PM   0:03.60 /root/test.o
root    1088 43.8  0.0  3692   780  p0  R     7:38PM   0:05.60 /root/test.o
root    1088 51.0  0.0  3692   780  p0  R     7:38PM   0:07.25 /root/test.o
root    1088 50.8  0.0  3692   780  p0  R     7:38PM   0:08.28 /root/test.o
root    1088 49.1  0.0  3692   780  p0  R     7:38PM   0:09.21 /root/test.o
root    1088 48.1  0.0  3692   780  p0  R     7:38PM   0:10.24 /root/test.o
root    1088 46.2  0.0  3692   780  p0  R     7:38PM   0:11.17 /root/test.o
root    1088 42.9  0.0  3692   780  p0  R     7:38PM   0:11.95 /root/test.o

So we see, that after run in main system, jailed process can`t usage cpu.

Please communicate me  about all problem in this patch.
This is initial version, without tune jail parameter in runtime.

So, this work. But i`m not sure, that is best way.

Attempt increase priority for jailed thread not work, because non 
interactive thread (that utilize many cpu) already have small 
prioriry(numerical high).
Attempt decrease number ticks in cpu time slice, also not good idea, 
because, this increase number context switching on high load.
May be you see other way for do this?
Share you idea.

Thank.
Original cdjones  cpu and memory limit patch
http://wiki.freebsd.org/JailResourceLimits



--------------010407030304050405020607
Content-Type: text/plain;
 name="patch-jail-limit-7RELENG"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="patch-jail-limit-7RELENG"

ZGlmZiAtVTMgLXIgLS1zaG93LWMtZnVuY3Rpb24gLS1pZ25vcmUtYWxsLXNwYWNlIC0taWdu
b3JlLXRhYi1leHBhbnNpb24gLS1pZ25vcmUtYmxhbmstbGluZXMgc3lzL2tlcm4va2Vybl9q
YWlsLmMgc3lzLm5ldy9rZXJuL2tlcm5famFpbC5jCi0tLSBzeXMva2Vybi9rZXJuX2phaWwu
YwkyMDA5LTAzLTEwIDIyOjMzOjUwLjAwMDAwMDAwMCArMDMwMAorKysgc3lzLm5ldy9rZXJu
L2tlcm5famFpbC5jCTIwMDktMDQtMTcgMTg6NTE6MzQuMDAwMDAwMDAwICswNDAwCkBAIC01
MzEsNiArNTMyLDcgQEAga2Vybl9qYWlsKHN0cnVjdCB0aHJlYWQgKnRkLCBzdHJ1Y3QgamFp
bAogCX0KICNlbmRpZgogCXByLT5wcl9saW51eCA9IE5VTEw7CisgICAgcHItPnByX3NjaGVk
X3NoYXJlcyA9IGotPnNjaGVkX3NoYXJlczsKIAlwci0+cHJfc2VjdXJlbGV2ZWwgPSBzZWN1
cmVsZXZlbDsKIAlpZiAocHJpc29uX3NlcnZpY2Vfc2xvdHMgPT0gMCkKIAkJcHItPnByX3Ns
b3RzID0gTlVMTDsKZGlmZiAtVTMgLXIgLS1zaG93LWMtZnVuY3Rpb24gLS1pZ25vcmUtYWxs
LXNwYWNlIC0taWdub3JlLXRhYi1leHBhbnNpb24gLS1pZ25vcmUtYmxhbmstbGluZXMgc3lz
L2tlcm4vc2NoZWRfdWxlLmMgc3lzLm5ldy9rZXJuL3NjaGVkX3VsZS5jCi0tLSBzeXMva2Vy
bi9zY2hlZF91bGUuYwkyMDA5LTAzLTMwIDIzOjIwOjU2LjAwMDAwMDAwMCArMDQwMAorKysg
c3lzLm5ldy9rZXJuL3NjaGVkX3VsZS5jCTIwMDktMDQtMTcgMTk6MTA6MDcuMDAwMDAwMDAw
ICswNDAwCkBAIC02MSw2ICs2MSw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRDogc3JjL3N5cy9r
ZXJuL3NjaGVkX3UKICNpbmNsdWRlIDxzeXMvdW10eC5oPgogI2luY2x1ZGUgPHN5cy92bW1l
dGVyLmg+CiAjaW5jbHVkZSA8c3lzL2NwdXNldC5oPgorI2luY2x1ZGUgPHN5cy9qYWlsLmg+
CiAjaWZkZWYgS1RSQUNFCiAjaW5jbHVkZSA8c3lzL3Vpby5oPgogI2luY2x1ZGUgPHN5cy9r
dHJhY2UuaD4KQEAgLTE4Niw2ICsxODcsMjIgQEAgc3RhdGljIGludCBzY2hlZF9pbnRlcmFj
dCA9IFNDSEVEX0lOVEVSQQogc3RhdGljIGludCByZWFsc3RhdGh6Owogc3RhdGljIGludCB0
aWNraW5jcjsKIHN0YXRpYyBpbnQgc2NoZWRfc2xpY2U7CisKKyNkZWZpbmUgRVNUQ1BVX1NI
SUZUCTEwCisvKgorICogZXN0Y3B1OgkJCQkJR2xvYmFsIGNvdW50ZXIgdGlja3MgZnJvbSBz
dGF0IHRpbWVyIAorICogZmx1c2hfZXN0Y3B1X2ludGVydmFsOiAgIE51bWJlciB0aWNrcywg
YWZ0ZXIgdGhhdCB3ZSB0byB6ZXJvIGVzdGNwdSwKKyAqICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbHVzaF9lc3RjcHVfaW50ZXJ2YWwgPSBtcF9uY3B1cypzdGF0aHoqMTAsIAorICoJ
CQkJCQkJZGVmYXVsdCAyKjEyOCoxMCA9IDI1NjAKKyAqIHRvdGFsX3NjaGVkX3NoYXJlczog
ICAgICBUb3RhbCBjb3VudCBzaGFyZXMgY3B1LCAxMDAwIHBlciBjb3JlLCAKKyAqCQkJCQkJ
CWRlZmF1bHQgMioxMDAwID0gMjAwMCAKKyovCisKKworc3RhdGljIGludCBlc3RjcHU7Citz
dGF0aWMgaW50IGZsdXNoX2VzdGNwdV9pbnRlcnZhbCA9IDI1NjA7CitzdGF0aWMgaW50IHRv
dGFsX3NjaGVkX3NoYXJlcyA9IDIwMDA7CisKICNpZmRlZiBQUkVFTVBUSU9OCiAjaWZkZWYg
RlVMTF9QUkVFTVBUSU9OCiBzdGF0aWMgaW50IHByZWVtcHRfdGhyZXNoID0gUFJJX01BWF9J
RExFOwpAQCAtMjIwMCw2ICsyMjE5LDcgQEAgc2NoZWRfY2xvY2soc3RydWN0IHRocmVhZCAq
dGQpCiB7CiAJc3RydWN0IHRkcSAqdGRxOwogCXN0cnVjdCB0ZF9zY2hlZCAqdHM7CisJc3Ry
dWN0IHByaXNvbiAqcHIgPSB0ZC0+dGRfcHJvYy0+cF91Y3JlZC0+Y3JfcHJpc29uOwogCiAJ
VEhSRUFEX0xPQ0tfQVNTRVJUKHRkLCBNQV9PV05FRCk7CiAJdGRxID0gVERRX1NFTEYoKTsK
QEAgLTIyMzQsNiArMjI1NCwyMCBAQCBzY2hlZF9jbG9jayhzdHJ1Y3QgdGhyZWFkICp0ZCkK
IAkJdGQtPnRkX3NjaGVkLT50c19ydW50aW1lICs9IHRpY2tpbmNyOwogCQlzY2hlZF9pbnRl
cmFjdF91cGRhdGUodGQpOwogCX0KKworCS8qIEluY3JlYXNlIGNvdW50ZXIgYW5kIGZsdXNo
IGlmIG5lZWQgKi8KKwllc3RjcHUrKzsKKwlpZiAocHIgIT0gTlVMTCkKKwkJcHItPnByX2Vz
dGNwdSsrOworCisJaWYgKGVzdGNwdSA+IGZsdXNoX2VzdGNwdV9pbnRlcnZhbCl7CisJCWVz
dGNwdSA9IDA7CisJCUxJU1RfRk9SRUFDSChwciwgJmFsbHByaXNvbiwgcHJfbGlzdCkgewor
CQkJcHItPnByX2VzdGNwdSA9IDA7CisJCX0KKwkJQ1RSMChLVFJfU0NIRUQsIkZsdXNoIGVz
dGNwdSBhbmQgcHJfZXN0Y3B1IGZvciBhbGwgamFpbHMiKTsKKwl9CisKIAkvKgogCSAqIFdl
IHVzZWQgdXAgb25lIHRpbWUgc2xpY2UuCiAJICovCkBAIC0yMzc1LDYgKzI0MDksOCBAQCB0
ZHFfYWRkKHN0cnVjdCB0ZHEgKnRkcSwgc3RydWN0IHRocmVhZCAqCiAJaW50IGNwdW1hc2s7
CiAjZW5kaWYKIAorICAgIHN0cnVjdCBwcmlzb24gKnByID0gdGQtPnRkX3Byb2MtPnBfdWNy
ZWQtPmNyX3ByaXNvbjsKKwogCVREUV9MT0NLX0FTU0VSVCh0ZHEsIE1BX09XTkVEKTsKIAlL
QVNTRVJUKCh0ZC0+dGRfaW5oaWJpdG9ycyA9PSAwKSwKIAkgICAgKCJzY2hlZF9hZGQ6IHRy
eWluZyB0byBydW4gaW5oaWJpdGVkIHRocmVhZCIpKTsKQEAgLTIzODMsNiArMjQxOSwzMiBA
QCB0ZHFfYWRkKHN0cnVjdCB0ZHEgKnRkcSwgc3RydWN0IHRocmVhZCAqCiAJS0FTU0VSVCh0
ZC0+dGRfZmxhZ3MgJiBUREZfSU5NRU0sCiAJICAgICgic2NoZWRfYWRkOiB0aHJlYWQgc3dh
cHBlZCBvdXQiKSk7CiAKKyAgICAgICAgLyogV2UgbW92ZSB0aHJlYWQgaW4gSURMRSBxdWV1
ZSBpZiBwcmlzb24gZXN0aW1hdGUgY3B1IG1vcmUgdGhhbiBzaGFyZXMKKwkJICogY3B1IGFu
ZCB0aHJlYWQgaXMgbm90IGludGVyYWN0aXZlLiBVc2UgRVNUQ1BVX1NISUZUIHRvIGF2b2lk
CisJCSAqIHJvdW5kaW5nIGF3YXkgcmVzdWx0cyAqLworICAgIGlmKHByICE9IE5VTEwpCisg
ICAgCUNUUjYoS1RSX1NDSEVELCJwaWQgJWksIHByaXNvbiAlaSwgcHJfZXN0Y3B1ICVpLFwK
KwkJCQkJCWVzdGNwdSAlaSBzaGFyZXMgJWkgaW50ZXJhY3QgJWkiLAorICAgICAgICAgICAg
ICAgICAgIAkJdGQtPnRkX3Byb2MtPnBfcGlkLHByLT5wcl9pZCxwci0+cHJfZXN0Y3B1LAor
CQkJCQkJZXN0Y3B1LCBwci0+cHJfc2NoZWRfc2hhcmVzLCBzY2hlZF9pbnRlcmFjdF9zY29y
ZSh0ZCkpOworICAgIGlmIChwciAhPSBOVUxMICYmIHByLT5wcl9zY2hlZF9zaGFyZXMgIT0g
MCAmJgorICAgICAgICBzY2hlZF9pbnRlcmFjdF9zY29yZSh0ZCkgPiBzY2hlZF9pbnRlcmFj
dCAmJgorCQllc3RjcHUgIT0gMCAmJiB0b3RhbF9zY2hlZF9zaGFyZXMgIT0gMCl7CisKKyAg
ICAJaWYgKChwci0+cHJfZXN0Y3B1ICAgICAgICAgIDw8IEVTVENQVV9TSElGVCkgIC8gKGVz
dGNwdSkgPgorICAgICAgICAgIAkocHItPnByX3NjaGVkX3NoYXJlcyAgICA8PCBFU1RDUFVf
U0hJRlQpICAvICh0b3RhbF9zY2hlZF9zaGFyZXMpKQorICAgICAgICB7CisgICAgICAgICAg
CXRkLT50ZF9wcmlvcml0eSAgPSBQUklfTUlOX0lETEU7IAorCQkJdGQtPnRkX3ByaV9jbGFz
cyA9IFBSSV9JRExFOworICAgICAgICAgICAgQ1RSMihLVFJfU0NIRUQsInByaXNvbiAlaSBl
eGNlc3MgY3B1IGxpbWl0ISEhIG5ldyBwcmkgPSAlaSAiLHByLT5wcl9pZCx0ZC0+dGRfcHJp
b3JpdHkpOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBDVFIxKEtUUl9TQ0hF
RCwicHJpc29uICVpIHVzZSBjcHUgbGVzcyBsaW1pdCIscHItPnByX2lkKTsgICAgIAorCQkJ
c2NoZWRfcHJpb3JpdHkodGQpOworCQkJdGQtPnRkX3ByaV9jbGFzcyA9IFBSSV9USU1FU0hB
UkU7CisgICAgICAgIH0KKyAgICB9CisKIAl0cyA9IHRkLT50ZF9zY2hlZDsKIAljbGFzcyA9
IFBSSV9CQVNFKHRkLT50ZF9wcmlfY2xhc3MpOwogICAgICAgICBURF9TRVRfUlVOUSh0ZCk7
CkBAIC0yNzQ2LDYgKzI4MDgsMTAgQEAgU1lTQ1RMX0lOVChfa2Vybl9zY2hlZCwgT0lEX0FV
VE8sIGludGVyYQogICAgICAiSW50ZXJhY3Rpdml0eSBzY29yZSB0aHJlc2hvbGQiKTsKIFNZ
U0NUTF9JTlQoX2tlcm5fc2NoZWQsIE9JRF9BVVRPLCBwcmVlbXB0X3RocmVzaCwgQ1RMRkxB
R19SVywgJnByZWVtcHRfdGhyZXNoLAogICAgICAwLCJNaW4gcHJpb3JpdHkgZm9yIHByZWVt
cHRpb24sIGxvd2VyIHByaW9yaXRpZXMgaGF2ZSBncmVhdGVyIHByZWNlZGVuY2UiKTsKK1NZ
U0NUTF9JTlQoX2tlcm5fc2NoZWQsIE9JRF9BVVRPLCBmbHVzaF9lc3RjcHVfaW50ZXJ2YWws
IENUTEZMQUdfUlcsICZmbHVzaF9lc3RjcHVfaW50ZXJ2YWwsCisgICAgIDAsIk51bWJlciB0
aWNrcyBzdGF0IHRpbWVyIGFmdGVyIHRoYXIgd2UgemVybyBlc3RjcHUgY291bnRlciIpOwor
U1lTQ1RMX0lOVChfa2Vybl9zY2hlZCwgT0lEX0FVVE8sIHRvdGFsX3NjaGVkX3NoYXJlcywg
Q1RMRkxBR19SVywgJnRvdGFsX3NjaGVkX3NoYXJlcywKKyAgICAgMCwiVG90YWwgbnVtYmVy
IHNoYXJlZCBjcHUgZm9yIHN5c3RlbSIpOwogI2lmZGVmIFNNUAogU1lTQ1RMX0lOVChfa2Vy
bl9zY2hlZCwgT0lEX0FVVE8sIHBpY2tfcHJpLCBDVExGTEFHX1JXLCAmcGlja19wcmksIDAs
CiAgICAgIlBpY2sgdGhlIHRhcmdldCBjcHUgYmFzZWQgb24gcHJpb3JpdHkgcmF0aGVyIHRo
YW4gbG9hZC4iKTsKZGlmZiAtVTMgLXIgLS1zaG93LWMtZnVuY3Rpb24gLS1pZ25vcmUtYWxs
LXNwYWNlIC0taWdub3JlLXRhYi1leHBhbnNpb24gLS1pZ25vcmUtYmxhbmstbGluZXMgc3lz
L3N5cy9qYWlsLmggc3lzLm5ldy9zeXMvamFpbC5oCi0tLSBzeXMvc3lzL2phaWwuaAkyMDA5
LTAyLTE4IDIzOjEyOjA4LjAwMDAwMDAwMCArMDMwMAorKysgc3lzLm5ldy9zeXMvamFpbC5o
CTIwMDktMDQtMTcgMTg6NTM6NDMuMDAwMDAwMDAwICswNDAwCkBAIC0zMSw2ICszMSw3IEBA
IHN0cnVjdCBqYWlsIHsKIAl1aW50MzJfdAlpcDZzOwogCXN0cnVjdCBpbl9hZGRyCSppcDQ7
CiAJc3RydWN0IGluNl9hZGRyCSppcDY7CisJdWludDMyX3QJc2NoZWRfc2hhcmVzOwogfTsK
ICNkZWZpbmUJSkFJTF9BUElfVkVSU0lPTiAyCiAKQEAgLTEzMiw2ICsxMzMsOSBAQCBzdHJ1
Y3QgcHJpc29uIHsKIAlzdHJ1Y3QgdGFzawkgcHJfdGFzazsJCQkvKiAoZCkgZGVzdHJveSB0
YXNrICovCiAJc3RydWN0IG10eAkgcHJfbXR4OwogCXZvaWQJCSoqcHJfc2xvdHM7CQkJLyog
KHApIGFkZGl0aW9uYWwgZGF0YSAqLworCXVpbnQzMl90CXByX2VzdGNwdTsJCQkvKiAocCkg
Y3B1IHVzYWdlICovCisJdWludDMyX3QJcHJfc2NoZWRfc2hhcmVzOwkvKiAoYykgbnVtYmVy
IHZpcnR1YWwgY3B1ICovCisKIAlpbnQJCSBwcl9pcDRzOwkJCS8qIChjKSBudW1iZXIgb2Yg
djQgSVBzICovCiAJc3RydWN0IGluX2FkZHIJKnByX2lwNDsJCQkvKiAoYykgdjQgSVBzIG9m
IGphaWwgKi8KIAlpbnQJCSBwcl9pcDZzOwkJCS8qIChjKSBudW1iZXIgb2YgdjYgSVBzICov
CmRpZmYgLVUzIC1yIC0tc2hvdy1jLWZ1bmN0aW9uIC0taWdub3JlLWFsbC1zcGFjZSAtLWln
bm9yZS10YWItZXhwYW5zaW9uIC0taWdub3JlLWJsYW5rLWxpbmVzIHVzci5zYmluL2phaWwv
amFpbC5jIHVzci5zYmluLm5ldy9qYWlsL2phaWwuYwotLS0gdXNyLnNiaW4vamFpbC9qYWls
LmMJMjAwOS0wMi0wNyAxNjoxOTowOC4wMDAwMDAwMDAgKzAzMDAKKysrIHVzci5zYmluLm5l
dy9qYWlsL2phaWwuYwkyMDA5LTA0LTE3IDE4OjU3OjE1LjAwMDAwMDAwMCArMDQwMApAQCAt
ODMsNiArODMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpbnQgY2gsIGVy
cm9yLCBpLCBuZ3JvdXBzLCBzZWN1cmVsZXZlbDsKIAlpbnQgaGZsYWcsIGlmbGFnLCBKZmxh
ZywgbGZsYWcsIHVmbGFnLCBVZmxhZzsKIAljaGFyIHBhdGhbUEFUSF9NQVhdLCAqamFpbG5h
bWUsICplcCwgKnVzZXJuYW1lLCAqSmlkRmlsZSwgKmlwOworCXVpbnQzMl90IHNjaGVkX3No
YXJlcyA9IDA7CiAJc3RhdGljIGNoYXIgKmNsZWFuZW52OwogCWNvbnN0IGNoYXIgKnNoZWxs
LCAqcCA9IE5VTEw7CiAJbG9uZyBsdG1wOwpAQCAtOTQsNyArOTUsNyBAQCBtYWluKGludCBh
cmdjLCBjaGFyICoqYXJndikKIAlqYWlsbmFtZSA9IHVzZXJuYW1lID0gSmlkRmlsZSA9IGNs
ZWFuZW52ID0gTlVMTDsKIAlmcCA9IE5VTEw7CiAKLQl3aGlsZSAoKGNoID0gZ2V0b3B0KGFy
Z2MsIGFyZ3YsICJoaWxuOnM6dTpVOko6IikpICE9IC0xKSB7CisJd2hpbGUgKChjaCA9IGdl
dG9wdChhcmdjLCBhcmd2LCAiaGlsUzpuOnM6dTpVOko6IikpICE9IC0xKSB7CiAJCXN3aXRj
aCAoY2gpIHsKIAkJY2FzZSAnaCc6CiAJCQloZmxhZyA9IDE7CkBAIC0xMTUsNiArMTE2LDkg
QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJZXJyeCgxLCAiaW52YWxpZCBz
ZWN1cmVsZXZlbDogYCVzJyIsIG9wdGFyZyk7CiAJCQlzZWN1cmVsZXZlbCA9IGx0bXA7CiAJ
CQlicmVhazsKKwkJY2FzZSAnUyc6CisJCQlzY2hlZF9zaGFyZXMgPSAodWludDMyX3Qpc3Ry
dG9sKG9wdGFyZyxOVUxMLDEwKTsKKwkJCWJyZWFrOwogCQljYXNlICd1JzoKIAkJCXVzZXJu
YW1lID0gb3B0YXJnOwogCQkJdWZsYWcgPSAxOwpAQCAtMTUyLDYgKzE1Niw4IEBAIG1haW4o
aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWlmIChqYWlsbmFtZSAhPSBOVUxMKQogCQlqLmph
aWxuYW1lID0gamFpbG5hbWU7CiAKKwlqLnNjaGVkX3NoYXJlcyA9IHNjaGVkX3NoYXJlczsK
KwogCS8qIEhhbmRsZSBJUCBhZGRyZXNzZXMuIElmIHJlcXVlc3RlZCByZXNvbHZlIGhvc3Ru
YW1lIHRvby4gKi8KIAliemVybygmaGludHMsIHNpemVvZihzdHJ1Y3QgYWRkcmluZm8pKTsK
IAloaW50cy5haV9wcm90b2NvbCA9IElQUFJPVE9fVENQOwpAQCAtMjY0LDkgKzI3MCwxMCBA
QCBzdGF0aWMgdm9pZAogdXNhZ2Uodm9pZCkKIHsKIAotCSh2b2lkKWZwcmludGYoc3RkZXJy
LCAiJXMlcyVzXG4iLAorCSh2b2lkKWZwcmludGYoc3RkZXJyLCAiJXMlcyVzJXNcbiIsCiAJ
ICAgICAidXNhZ2U6IGphaWwgWy1oaV0gWy1uIGphaWxuYW1lXSBbLUogamlkX2ZpbGVdICIs
CiAJICAgICAiWy1zIHNlY3VyZWxldmVsXSBbLWwgLXUgdXNlcm5hbWUgfCAtVSB1c2VybmFt
ZV0gIiwKKwkJICJbLVMgbnVtYmVyIHNoYXJlZCBjcHVdICIsCiAJICAgICAicGF0aCBob3N0
bmFtZSBbaXBbLC4uXV0gY29tbWFuZCAuLi4iKTsKIAlleGl0KDEpOwogfQo=
--------------010407030304050405020607
Content-Type: text/plain;
 name="patch-jail-limit-71RELEASE"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="patch-jail-limit-71RELEASE"

ZGlmZiAtVTMgLXIgLS1zaG93LWMtZnVuY3Rpb24gLS1pZ25vcmUtYWxsLXNwYWNlIC0taWdu
b3JlLXRhYi1leHBhbnNpb24gLS1pZ25vcmUtYmxhbmstbGluZXMgc3lzL2tlcm4va2Vybl9q
YWlsLmMgc3lzLm5ldy9rZXJuL2tlcm5famFpbC5jCi0tLSBzeXMva2Vybi9rZXJuX2phaWwu
YwkyMDA4LTExLTI1IDA1OjU5OjI5LjAwMDAwMDAwMCArMDMwMAorKysgc3lzLm5ldy9rZXJu
L2tlcm5famFpbC5jCTIwMDktMDQtMTcgMjA6MjM6NDAuMDAwMDAwMDAwICswNDAwCkBAIC0x
NTYsNiArMTU2LDcgQEAgamFpbChzdHJ1Y3QgdGhyZWFkICp0ZCwgc3RydWN0IGphaWxfYXJn
cwogCQlnb3RvIGVfZHJvcHZucmVmOwogCXByLT5wcl9pcCA9IGouaXBfbnVtYmVyOwogCXBy
LT5wcl9saW51eCA9IE5VTEw7CisgICAgcHItPnByX3NjaGVkX3NoYXJlcyA9IGotPnNjaGVk
X3NoYXJlczsKIAlwci0+cHJfc2VjdXJlbGV2ZWwgPSBzZWN1cmVsZXZlbDsKIAlpZiAocHJp
c29uX3NlcnZpY2Vfc2xvdHMgPT0gMCkKIAkJcHItPnByX3Nsb3RzID0gTlVMTDsKZGlmZiAt
VTMgLXIgLS1zaG93LWMtZnVuY3Rpb24gLS1pZ25vcmUtYWxsLXNwYWNlIC0taWdub3JlLXRh
Yi1leHBhbnNpb24gLS1pZ25vcmUtYmxhbmstbGluZXMgc3lzL2tlcm4vc2NoZWRfdWxlLmMg
c3lzLm5ldy9rZXJuL3NjaGVkX3VsZS5jCi0tLSBzeXMva2Vybi9zY2hlZF91bGUuYwkyMDA4
LTExLTI1IDA1OjU5OjI5LjAwMDAwMDAwMCArMDMwMAorKysgc3lzLm5ldy9rZXJuL3NjaGVk
X3VsZS5jCTIwMDktMDQtMTcgMjA6MjM6NDAuMDAwMDAwMDAwICswNDAwCkBAIC02MSw2ICs2
MSw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRDogc3JjL3N5cy9rZXJuL3NjaGVkX3UKICNpbmNs
dWRlIDxzeXMvdW10eC5oPgogI2luY2x1ZGUgPHN5cy92bW1ldGVyLmg+CiAjaW5jbHVkZSA8
c3lzL2NwdXNldC5oPgorI2luY2x1ZGUgPHN5cy9qYWlsLmg+CiAjaWZkZWYgS1RSQUNFCiAj
aW5jbHVkZSA8c3lzL3Vpby5oPgogI2luY2x1ZGUgPHN5cy9rdHJhY2UuaD4KQEAgLTE4Niw2
ICsxODcsMjIgQEAgc3RhdGljIGludCBzY2hlZF9pbnRlcmFjdCA9IFNDSEVEX0lOVEVSQQog
c3RhdGljIGludCByZWFsc3RhdGh6Owogc3RhdGljIGludCB0aWNraW5jcjsKIHN0YXRpYyBp
bnQgc2NoZWRfc2xpY2U7CisKKyNkZWZpbmUgRVNUQ1BVX1NISUZUCTEwCisvKgorICogZXN0
Y3B1OgkJCQkJR2xvYmFsIGNvdW50ZXIgdGlja3MgZnJvbSBzdGF0IHRpbWVyIAorICogZmx1
c2hfZXN0Y3B1X2ludGVydmFsOiAgIE51bWJlciB0aWNrcywgYWZ0ZXIgdGhhdCB3ZSB0byB6
ZXJvIGVzdGNwdSwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBmbHVzaF9lc3RjcHVf
aW50ZXJ2YWwgPSBtcF9uY3B1cypzdGF0aHoqMTAsIAorICoJCQkJCQkJZGVmYXVsdCAyKjEy
OCoxMCA9IDI1NjAKKyAqIHRvdGFsX3NjaGVkX3NoYXJlczogICAgICBUb3RhbCBjb3VudCBz
aGFyZXMgY3B1LCAxMDAwIHBlciBjb3JlLCAKKyAqCQkJCQkJCWRlZmF1bHQgMioxMDAwID0g
MjAwMCAKKyovCisKKworc3RhdGljIGludCBlc3RjcHU7CitzdGF0aWMgaW50IGZsdXNoX2Vz
dGNwdV9pbnRlcnZhbCA9IDI1NjA7CitzdGF0aWMgaW50IHRvdGFsX3NjaGVkX3NoYXJlcyA9
IDIwMDA7CisKICNpZmRlZiBQUkVFTVBUSU9OCiAjaWZkZWYgRlVMTF9QUkVFTVBUSU9OCiBz
dGF0aWMgaW50IHByZWVtcHRfdGhyZXNoID0gUFJJX01BWF9JRExFOwpAQCAtMjIwMCw2ICsy
MjE3LDcgQEAgc2NoZWRfY2xvY2soc3RydWN0IHRocmVhZCAqdGQpCiB7CiAJc3RydWN0IHRk
cSAqdGRxOwogCXN0cnVjdCB0ZF9zY2hlZCAqdHM7CisJc3RydWN0IHByaXNvbiAqcHIgPSB0
ZC0+dGRfcHJvYy0+cF91Y3JlZC0+Y3JfcHJpc29uOwogCiAJVEhSRUFEX0xPQ0tfQVNTRVJU
KHRkLCBNQV9PV05FRCk7CiAJdGRxID0gVERRX1NFTEYoKTsKQEAgLTIyMzQsNiArMjI1Miwy
MCBAQCBzY2hlZF9jbG9jayhzdHJ1Y3QgdGhyZWFkICp0ZCkKIAkJdGQtPnRkX3NjaGVkLT50
c19ydW50aW1lICs9IHRpY2tpbmNyOwogCQlzY2hlZF9pbnRlcmFjdF91cGRhdGUodGQpOwog
CX0KKworCS8qIEluY3JlYXNlIGNvdW50ZXIgYW5kIGZsdXNoIGlmIG5lZWQgKi8KKwllc3Rj
cHUrKzsKKwlpZiAocHIgIT0gTlVMTCkKKwkJcHItPnByX2VzdGNwdSsrOworCisJaWYgKGVz
dGNwdSA+IGZsdXNoX2VzdGNwdV9pbnRlcnZhbCl7CisJCWVzdGNwdSA9IDA7CisJCUxJU1Rf
Rk9SRUFDSChwciwgJmFsbHByaXNvbiwgcHJfbGlzdCkgeworCQkJcHItPnByX2VzdGNwdSA9
IDA7CisJCX0KKwkJQ1RSMChLVFJfU0NIRUQsIkZsdXNoIGVzdGNwdSBhbmQgcHJfZXN0Y3B1
IGZvciBhbGwgamFpbHMiKTsKKwl9CisKIAkvKgogCSAqIFdlIHVzZWQgdXAgb25lIHRpbWUg
c2xpY2UuCiAJICovCkBAIC0yMzc1LDYgKzI0MDcsOCBAQCB0ZHFfYWRkKHN0cnVjdCB0ZHEg
KnRkcSwgc3RydWN0IHRocmVhZCAqCiAJaW50IGNwdW1hc2s7CiAjZW5kaWYKIAorICAgIHN0
cnVjdCBwcmlzb24gKnByID0gdGQtPnRkX3Byb2MtPnBfdWNyZWQtPmNyX3ByaXNvbjsKKwog
CVREUV9MT0NLX0FTU0VSVCh0ZHEsIE1BX09XTkVEKTsKIAlLQVNTRVJUKCh0ZC0+dGRfaW5o
aWJpdG9ycyA9PSAwKSwKIAkgICAgKCJzY2hlZF9hZGQ6IHRyeWluZyB0byBydW4gaW5oaWJp
dGVkIHRocmVhZCIpKTsKQEAgLTIzODMsNiArMjQxNywzMiBAQCB0ZHFfYWRkKHN0cnVjdCB0
ZHEgKnRkcSwgc3RydWN0IHRocmVhZCAqCiAJS0FTU0VSVCh0ZC0+dGRfZmxhZ3MgJiBUREZf
SU5NRU0sCiAJICAgICgic2NoZWRfYWRkOiB0aHJlYWQgc3dhcHBlZCBvdXQiKSk7CiAKKyAg
ICAgICAgLyogV2UgbW92ZSB0aHJlYWQgaW4gSURMRSBxdWV1ZSBpZiBwcmlzb24gZXN0aW1h
dGUgY3B1IG1vcmUgdGhhbiBzaGFyZXMKKwkJICogY3B1IGFuZCB0aHJlYWQgaXMgbm90IGlu
dGVyYWN0aXZlLiBVc2UgRVNUQ1BVX1NISUZUIHRvIGF2b2lkCisJCSAqIHJvdW5kaW5nIGF3
YXkgcmVzdWx0cyAqLworICAgIGlmKHByICE9IE5VTEwpCisgICAgCUNUUjYoS1RSX1NDSEVE
LCJwaWQgJWksIHByaXNvbiAlaSwgcHJfZXN0Y3B1ICVpLFwKKwkJCQkJCWVzdGNwdSAlaSBz
aGFyZXMgJWkgaW50ZXJhY3QgJWkiLAorICAgICAgICAgICAgICAgICAgIAkJdGQtPnRkX3By
b2MtPnBfcGlkLHByLT5wcl9pZCxwci0+cHJfZXN0Y3B1LAorCQkJCQkJZXN0Y3B1LCBwci0+
cHJfc2NoZWRfc2hhcmVzLCBzY2hlZF9pbnRlcmFjdF9zY29yZSh0ZCkpOworICAgIGlmIChw
ciAhPSBOVUxMICYmIHByLT5wcl9zY2hlZF9zaGFyZXMgIT0gMCAmJgorICAgICAgICBzY2hl
ZF9pbnRlcmFjdF9zY29yZSh0ZCkgPiBzY2hlZF9pbnRlcmFjdCAmJgorCQllc3RjcHUgIT0g
MCAmJiB0b3RhbF9zY2hlZF9zaGFyZXMgIT0gMCl7CisKKyAgICAJaWYgKChwci0+cHJfZXN0
Y3B1ICAgICAgICAgIDw8IEVTVENQVV9TSElGVCkgIC8gKGVzdGNwdSkgPgorICAgICAgICAg
IAkocHItPnByX3NjaGVkX3NoYXJlcyAgICA8PCBFU1RDUFVfU0hJRlQpICAvICh0b3RhbF9z
Y2hlZF9zaGFyZXMpKQorICAgICAgICB7CisgICAgICAgICAgCXRkLT50ZF9wcmlvcml0eSAg
PSBQUklfTUlOX0lETEU7IAorCQkJdGQtPnRkX3ByaV9jbGFzcyA9IFBSSV9JRExFOworICAg
ICAgICAgICAgQ1RSMihLVFJfU0NIRUQsInByaXNvbiAlaSBleGNlc3MgY3B1IGxpbWl0ISEh
IG5ldyBwcmkgPSAlaSAiLHByLT5wcl9pZCx0ZC0+dGRfcHJpb3JpdHkpOworCisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBDVFIxKEtUUl9TQ0hFRCwicHJpc29uICVpIHVzZSBj
cHUgbGVzcyBsaW1pdCIscHItPnByX2lkKTsgICAgIAorCQkJc2NoZWRfcHJpb3JpdHkodGQp
OworCQkJdGQtPnRkX3ByaV9jbGFzcyA9IFBSSV9USU1FU0hBUkU7CisgICAgICAgIH0KKyAg
ICB9CisKIAl0cyA9IHRkLT50ZF9zY2hlZDsKIAljbGFzcyA9IFBSSV9CQVNFKHRkLT50ZF9w
cmlfY2xhc3MpOwogICAgICAgICBURF9TRVRfUlVOUSh0ZCk7CkBAIC0yNzQxLDYgKzI4MDEs
MTAgQEAgU1lTQ1RMX0lOVChfa2Vybl9zY2hlZCwgT0lEX0FVVE8sIGludGVyYQogICAgICAi
SW50ZXJhY3Rpdml0eSBzY29yZSB0aHJlc2hvbGQiKTsKIFNZU0NUTF9JTlQoX2tlcm5fc2No
ZWQsIE9JRF9BVVRPLCBwcmVlbXB0X3RocmVzaCwgQ1RMRkxBR19SVywgJnByZWVtcHRfdGhy
ZXNoLAogICAgICAwLCJNaW4gcHJpb3JpdHkgZm9yIHByZWVtcHRpb24sIGxvd2VyIHByaW9y
aXRpZXMgaGF2ZSBncmVhdGVyIHByZWNlZGVuY2UiKTsKK1NZU0NUTF9JTlQoX2tlcm5fc2No
ZWQsIE9JRF9BVVRPLCBmbHVzaF9lc3RjcHVfaW50ZXJ2YWwsIENUTEZMQUdfUlcsICZmbHVz
aF9lc3RjcHVfaW50ZXJ2YWwsCisgICAgIDAsIk51bWJlciB0aWNrcyBzdGF0IHRpbWVyIGFm
dGVyIHRoYXIgd2UgemVybyBlc3RjcHUgY291bnRlciIpOworU1lTQ1RMX0lOVChfa2Vybl9z
Y2hlZCwgT0lEX0FVVE8sIHRvdGFsX3NjaGVkX3NoYXJlcywgQ1RMRkxBR19SVywgJnRvdGFs
X3NjaGVkX3NoYXJlcywKKyAgICAgMCwiVG90YWwgbnVtYmVyIHNoYXJlZCBjcHUgZm9yIHN5
c3RlbSIpOwogI2lmZGVmIFNNUAogU1lTQ1RMX0lOVChfa2Vybl9zY2hlZCwgT0lEX0FVVE8s
IHBpY2tfcHJpLCBDVExGTEFHX1JXLCAmcGlja19wcmksIDAsCiAgICAgIlBpY2sgdGhlIHRh
cmdldCBjcHUgYmFzZWQgb24gcHJpb3JpdHkgcmF0aGVyIHRoYW4gbG9hZC4iKTsKZGlmZiAt
VTMgLXIgLS1zaG93LWMtZnVuY3Rpb24gLS1pZ25vcmUtYWxsLXNwYWNlIC0taWdub3JlLXRh
Yi1leHBhbnNpb24gLS1pZ25vcmUtYmxhbmstbGluZXMgc3lzL3N5cy9qYWlsLmggc3lzLm5l
dy9zeXMvamFpbC5oCi0tLSBzeXMvc3lzL2phaWwuaAkyMDA4LTExLTI1IDA1OjU5OjI5LjAw
MDAwMDAwMCArMDMwMAorKysgc3lzLm5ldy9zeXMvamFpbC5oCTIwMDktMDQtMTcgMjA6MjY6
NTQuMDAwMDAwMDAwICswNDAwCkBAIC0xOCw2ICsxOCw3IEBAIHN0cnVjdCBqYWlsIHsKIAlj
aGFyCQkqcGF0aDsKIAljaGFyCQkqaG9zdG5hbWU7CiAJdV9pbnQzMl90CWlwX251bWJlcjsK
Kwl1aW50MzJfdAlzY2hlZF9zaGFyZXM7CiB9OwogCiBzdHJ1Y3QgeHByaXNvbiB7CkBAIC03
NCw2ICs3NSw4IEBAIHN0cnVjdCBwcmlzb24gewogCXN0cnVjdCB0YXNrCSBwcl90YXNrOwkJ
CS8qIChkKSBkZXN0cm95IHRhc2sgKi8KIAlzdHJ1Y3QgbXR4CSBwcl9tdHg7CiAJdm9pZAkJ
Kipwcl9zbG90czsJCQkvKiAocCkgYWRkaXRpb25hbCBkYXRhICovCisJdWludDMyX3QJcHJf
ZXN0Y3B1OwkJCS8qIChwKSBjcHUgdXNhZ2UgKi8KKwl1aW50MzJfdAlwcl9zY2hlZF9zaGFy
ZXM7CS8qIChjKSBudW1iZXIgdmlydHVhbCBjcHUgKi8KIH07CiAjZW5kaWYgLyogX0tFUk5F
TCB8fCBfV0FOVF9QUklTT04gKi8KIApkaWZmIC1VMyAtciAtLXNob3ctYy1mdW5jdGlvbiAt
LWlnbm9yZS1hbGwtc3BhY2UgLS1pZ25vcmUtdGFiLWV4cGFuc2lvbiAtLWlnbm9yZS1ibGFu
ay1saW5lcyB1c3Iuc2Jpbi9qYWlsL2phaWwuYyB1c3Iuc2Jpbi5uZXcvamFpbC9qYWlsLmMK
LS0tIHVzci5zYmluL2phaWwvamFpbC5jCTIwMDgtMTEtMjUgMDU6NTk6MjkuMDAwMDAwMDAw
ICswMzAwCisrKyB1c3Iuc2Jpbi5uZXcvamFpbC9qYWlsLmMJMjAwOS0wNC0xNyAyMDozMTox
Ny4wMDAwMDAwMDAgKzA0MDAKQEAgLTU3LDYgKzU3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh
ciAqKmFyZ3YpCiAJZ2lkX3QgZ3JvdXBzW05HUk9VUFNdOwogCWludCBjaCwgaSwgaWZsYWcs
IEpmbGFnLCBsZmxhZywgbmdyb3Vwcywgc2VjdXJlbGV2ZWwsIHVmbGFnLCBVZmxhZzsKIAlj
aGFyIHBhdGhbUEFUSF9NQVhdLCAqZXAsICp1c2VybmFtZSwgKkppZEZpbGU7CisJdWludDMy
X3Qgc2NoZWRfc2hhcmVzID0gMDsKIAlzdGF0aWMgY2hhciAqY2xlYW5lbnY7CiAJY29uc3Qg
Y2hhciAqc2hlbGwsICpwID0gTlVMTDsKIAlsb25nIGx0bXA7CkBAIC02Nyw3ICs2OCw3IEBA
IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCXVzZXJuYW1lID0gSmlkRmlsZSA9IGNs
ZWFuZW52ID0gTlVMTDsKIAlmcCA9IE5VTEw7CiAKLQl3aGlsZSAoKGNoID0gZ2V0b3B0KGFy
Z2MsIGFyZ3YsICJpbHM6dTpVOko6IikpICE9IC0xKSB7CisJd2hpbGUgKChjaCA9IGdldG9w
dChhcmdjLCBhcmd2LCAiaWxTOnM6dTpVOko6IikpICE9IC0xKSB7CiAJCXN3aXRjaCAoY2gp
IHsKIAkJY2FzZSAnaSc6CiAJCQlpZmxhZyA9IDE7CkBAIC04Miw2ICs4Myw5IEBAIG1haW4o
aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWVycngoMSwgImludmFsaWQgc2VjdXJlbGV2
ZWw6IGAlcyciLCBvcHRhcmcpOwogCQkJc2VjdXJlbGV2ZWwgPSBsdG1wOwogCQkJYnJlYWs7
CisJCWNhc2UgJ1MnOgorCQkJc2NoZWRfc2hhcmVzID0gKHVpbnQzMl90KXN0cnRvbChvcHRh
cmcsTlVMTCwxMCk7CisJCQlicmVhazsKIAkJY2FzZSAndSc6CiAJCQl1c2VybmFtZSA9IG9w
dGFyZzsKIAkJCXVmbGFnID0gMTsKQEAgLTExNSw2ICsxMTksNyBAQCBtYWluKGludCBhcmdj
LCBjaGFyICoqYXJndikKIAlqLnZlcnNpb24gPSAwOwogCWoucGF0aCA9IHBhdGg7CiAJai5o
b3N0bmFtZSA9IGFyZ3ZbMV07CisJai5zY2hlZF9zaGFyZXMgPSBzY2hlZF9zaGFyZXM7CiAJ
aWYgKGluZXRfYXRvbihhcmd2WzJdLCAmaW4pID09IDApCiAJCWVycngoMSwgIkNvdWxkIG5v
dCBtYWtlIHNlbnNlIG9mIGlwLW51bWJlcjogJXMiLCBhcmd2WzJdKTsKIAlqLmlwX251bWJl
ciA9IG50b2hsKGluLnNfYWRkcik7CkBAIC0xODIsOSArMTg3LDEwIEBAIHN0YXRpYyB2b2lk
CiB1c2FnZSh2b2lkKQogewogCi0JKHZvaWQpZnByaW50ZihzdGRlcnIsICIlcyVzJXNcbiIs
CisJKHZvaWQpZnByaW50ZihzdGRlcnIsICIlcyVzJXMlc1xuIiwKIAkgICAgICJ1c2FnZTog
amFpbCBbLWldIFstSiBqaWRfZmlsZV0gWy1zIHNlY3VyZWxldmVsXSBbLWwgLXUgIiwKIAkg
ICAgICJ1c2VybmFtZSB8IC1VIHVzZXJuYW1lXSIsCisJCSAiWy1TIG51bWJlciBzaGFyZWQg
Y3B1XSAiLAogCSAgICAgIiBwYXRoIGhvc3RuYW1lIGlwLW51bWJlciBjb21tYW5kIC4uLiIp
OwogCWV4aXQoMSk7CiB9Cg==
--------------010407030304050405020607--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49EC926D.6020404>