--168455872-2061034204-965652127=:21086
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.4.21.0008071343231.21086@alloc>
Linus, all,
The attached patch modifies the Slab's kmem_cache_shrink() to return the
number of pages released. This requirement was mentioned in the comments
in both the inode and dcache code.
The results of a kmem_cache_shrink() are now returned from both
shrink_dcache_memory() and shrink_icache_memory(), and used in the main
loop in do_try_to_free_pages().
Also, after studying the behaviour of the buffer-head slab cache and
kmem_cache_reap(), I found that an explicit shrink of that slab cache from
do_try_to_free_pages() is good for system behaviour under low memory
conditions.
After a call to shrink_mmap(), the buffer-head cache will usually have
several free slabs. These slabs will not be reaped until another call to
do_try_to_free_pages() - and then not every time (kmem_cache_reap() only
examines a number of caches on each call - not them all). This leaves
several (in some cases, many) pages of wasted memory in the cache.
Note: the buffer code has its own list of unused buffer heads, which act
as a cushion to the slab cache, so reaping the unused pages from the cache
isn't taking all the unused buffer-heads away. Also, internal
fragmentation in the buffer-head slab cache results in slabs in which are
only partially active - so kmem_cache_alloc(bh_cachep,) will still
(normally) succeed in the near future without needing to allocate new
slabs.
I've also pushed down the percentage of free slabs reaped from a cache
in kmem_cache_reap(). For most caches, the current reaping algorithm is
far too aggressive. Rather than re-write it at this stage, a simple
tuning down of the percentage (from 80% to 50%) works well for almost all
caches (the only exception seems to be the buffer-head cache, which is
now explicity shrunk anyway).
Mark
--168455872-2061034204-965652127=:21086
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="shrink.markhe.patch"
Content-ID: <Pine.LNX.4.21.0008071342070.21086@alloc>
Content-Description: shrink.markhe.patch
Content-Disposition: ATTACHMENT; FILENAME="shrink.markhe.patch"
Content-Transfer-Encoding: BASE64
ZGlmZiAtdXIgLVggaWdub3JlIC0tbmV3LWZpbGUgbGludXgtMi40LjAtdGVz
dDUvZnMvYnVmZmVyLmMgbWVtLTIuNC4wLXRlc3Q1L2ZzL2J1ZmZlci5jDQot
LS0gbGludXgtMi40LjAtdGVzdDUvZnMvYnVmZmVyLmMJRnJpIEp1bCAyOCAw
MDo0NzoxNiAyMDAwDQorKysgbWVtLTIuNC4wLXRlc3Q1L2ZzL2J1ZmZlci5j
CU1vbiBBdWcgIDcgMTE6MzU6MTcgMjAwMA0KQEAgLTEwNjgsNiArMTA2OCwy
MSBAQA0KIH0NCiANCiAvKg0KKyAqIEFmdGVyIHJlYXBpbmcgc29tZSBwYWdl
cyBmcm9tIHRoZSBwYWdlLWNhY2hlLCB2bXNjYW4gbWF5IGNhbGwNCisgKiB0
aGlzIGZ1bmN0aW9uIHRvIGZsdXNoIGJ1ZmZlci1oZWFkcyBvdXQgb2YgdGhl
aXIgc2xhYiBjYWNoZS4NCisgKi8NCit1aW50DQorc2hyaW5rX2J1ZmZlcl9o
ZWFkcyh1aW50IGdmcF9tYXNrKQ0KK3sNCisJLyoNCisJICogU2hvdWRuJ3Qg
YmUgY2FsbGVkIGJlZm9yZSB0aGUgYnVmZmVyLWhlYWQgY2FjaGUgaXMgc2V0
LXVwLA0KKwkgKiBidXQgYWxsb3cgZm9yIGl0Lg0KKwkgKi8NCisJaWYgKGJo
X2NhY2hlcCkNCisJCXJldHVybiBrbWVtX2NhY2hlX3NocmluayhiaF9jYWNo
ZXAsIGdmcF9tYXNrKTsNCit9DQorDQorLyoNCiAgKiBSZXNlcnZlIE5SX1JF
U0VSVkVEIGJ1ZmZlciBoZWFkcyBmb3IgYXN5bmMgSU8gcmVxdWVzdHMgdG8g
YXZvaWQNCiAgKiBuby1idWZmZXItaGVhZCBkZWFkbG9jay4gIFJldHVybiBO
VUxMIG9uIGZhaWx1cmU7IHdhaXRpbmcgZm9yDQogICogYnVmZmVyIGhlYWRz
IGlzIG5vdyBoYW5kbGVkIGluIGNyZWF0ZV9idWZmZXJzKCkuDQpkaWZmIC11
ciAtWCBpZ25vcmUgLS1uZXctZmlsZSBsaW51eC0yLjQuMC10ZXN0NS9mcy9k
Y2FjaGUuYyBtZW0tMi40LjAtdGVzdDUvZnMvZGNhY2hlLmMNCi0tLSBsaW51
eC0yLjQuMC10ZXN0NS9mcy9kY2FjaGUuYwlGcmkgSnVsIDI4IDAwOjQ3OjE2
IDIwMDANCisrKyBtZW0tMi40LjAtdGVzdDUvZnMvZGNhY2hlLmMJTW9uIEF1
ZyAgNyAxMToyNzoyMCAyMDAwDQpAQCAtNTU5LDE0ICs1NTksOCBAQA0KIAlp
ZiAocHJpb3JpdHkpDQogCQljb3VudCA9IGRlbnRyeV9zdGF0Lm5yX3VudXNl
ZCAvIHByaW9yaXR5Ow0KIAlwcnVuZV9kY2FjaGUoY291bnQpOw0KLQkvKiBG
SVhNRToga21lbV9jYWNoZV9zaHJpbmsgaGVyZSBzaG91bGQgdGVsbCB1cw0K
LQkgICB0aGUgbnVtYmVyIG9mIHBhZ2VzIGZyZWVkLCBhbmQgaXQgc2hvdWxk
DQotCSAgIHdvcmsgaW4gYSBfX0dGUF9ETUEvX19HRlBfSElHSE1FTSBiZWhh
dmlvdXINCi0JICAgdG8gZnJlZSBvbmx5IHRoZSBpbnRlcmVzdGluZyBwYWdl
cyBpbg0KLQkgICBmdW5jdGlvbiBvZiB0aGUgbmVlZHMgb2YgdGhlIGN1cnJl
bnQgYWxsb2NhdGlvbi4gKi8NCi0Ja21lbV9jYWNoZV9zaHJpbmsoZGVudHJ5
X2NhY2hlKTsNCiANCi0JcmV0dXJuIDA7DQorCXJldHVybiBrbWVtX2NhY2hl
X3NocmluayhkZW50cnlfY2FjaGUsIGdmcF9tYXNrKTsNCiB9DQogDQogI2Rl
ZmluZSBOQU1FX0FMTE9DX0xFTihsZW4pCSgobGVuKzE2KSAmIH4xNSkNCmRp
ZmYgLXVyIC1YIGlnbm9yZSAtLW5ldy1maWxlIGxpbnV4LTIuNC4wLXRlc3Q1
L2ZzL2lub2RlLmMgbWVtLTIuNC4wLXRlc3Q1L2ZzL2lub2RlLmMNCi0tLSBs
aW51eC0yLjQuMC10ZXN0NS9mcy9pbm9kZS5jCVRodSBKdWwgMTMgMDA6MjQ6
NDEgMjAwMA0KKysrIG1lbS0yLjQuMC10ZXN0NS9mcy9pbm9kZS5jCU1vbiBB
dWcgIDcgMTE6Mjc6MDYgMjAwMA0KQEAgLTQ2MSwxNCArNDYxLDggQEANCiAJ
aWYgKHByaW9yaXR5KQ0KIAkJY291bnQgPSBpbm9kZXNfc3RhdC5ucl91bnVz
ZWQgLyBwcmlvcml0eTsNCiAJcHJ1bmVfaWNhY2hlKGNvdW50KTsNCi0JLyog
RklYTUU6IGttZW1fY2FjaGVfc2hyaW5rIGhlcmUgc2hvdWxkIHRlbGwgdXMN
Ci0JICAgdGhlIG51bWJlciBvZiBwYWdlcyBmcmVlZCwgYW5kIGl0IHNob3Vs
ZA0KLQkgICB3b3JrIGluIGEgX19HRlBfRE1BL19fR0ZQX0hJR0hNRU0gYmVo
YXZpb3VyDQotCSAgIHRvIGZyZWUgb25seSB0aGUgaW50ZXJlc3RpbmcgcGFn
ZXMgaW4NCi0JICAgZnVuY3Rpb24gb2YgdGhlIG5lZWRzIG9mIHRoZSBjdXJy
ZW50IGFsbG9jYXRpb24uICovDQotCWttZW1fY2FjaGVfc2hyaW5rKGlub2Rl
X2NhY2hlcCk7DQogDQotCXJldHVybiAwOw0KKwlyZXR1cm4ga21lbV9jYWNo
ZV9zaHJpbmsoaW5vZGVfY2FjaGVwLCBnZnBfbWFzayk7DQogfQ0KIA0KIC8q
DQpkaWZmIC11ciAtWCBpZ25vcmUgLS1uZXctZmlsZSBsaW51eC0yLjQuMC10
ZXN0NS9pbmNsdWRlL2xpbnV4L2ZzLmggbWVtLTIuNC4wLXRlc3Q1L2luY2x1
ZGUvbGludXgvZnMuaA0KLS0tIGxpbnV4LTIuNC4wLXRlc3Q1L2luY2x1ZGUv
bGludXgvZnMuaAlNb24gSnVsIDMxIDExOjU4OjE5IDIwMDANCisrKyBtZW0t
Mi40LjAtdGVzdDUvaW5jbHVkZS9saW51eC9mcy5oCU1vbiBBdWcgIDcgMTA6
NTg6MDggMjAwMA0KQEAgLTI0NCw2ICsyNDQsNyBAQA0KIA0KIHR5cGVkZWYg
dm9pZCAoYmhfZW5kX2lvX3QpKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGlu
dCB1cHRvZGF0ZSk7DQogdm9pZCBpbml0X2J1ZmZlcihzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiwgYmhfZW5kX2lvX3QgKiwgdm9pZCAqKTsNCit1aW50IHNocmlu
a19idWZmZXJfaGVhZHModWludCk7DQogDQogI2RlZmluZSBfX2J1ZmZlcl9z
dGF0ZShiaCwgc3RhdGUpCSgoKGJoKS0+Yl9zdGF0ZSAmICgxVUwgPDwgQkhf
IyNzdGF0ZSkpICE9IDApDQogDQpkaWZmIC11ciAtWCBpZ25vcmUgLS1uZXct
ZmlsZSBsaW51eC0yLjQuMC10ZXN0NS9pbmNsdWRlL2xpbnV4L3NsYWIuaCBt
ZW0tMi40LjAtdGVzdDUvaW5jbHVkZS9saW51eC9zbGFiLmgNCi0tLSBsaW51
eC0yLjQuMC10ZXN0NS9pbmNsdWRlL2xpbnV4L3NsYWIuaAlNb24gSnVsIDMx
IDExOjU4OjE5IDIwMDANCisrKyBtZW0tMi40LjAtdGVzdDUvaW5jbHVkZS9s
aW51eC9zbGFiLmgJTW9uIEF1ZyAgNyAxMTozMDoxMiAyMDAwDQpAQCAtNTIs
NyArNTIsNyBAQA0KIAkJCQkgICAgICAgdm9pZCAoKikodm9pZCAqLCBrbWVt
X2NhY2hlX3QgKiwgdW5zaWduZWQgbG9uZyksDQogCQkJCSAgICAgICB2b2lk
ICgqKSh2b2lkICosIGttZW1fY2FjaGVfdCAqLCB1bnNpZ25lZCBsb25nKSk7
DQogZXh0ZXJuIGludCBrbWVtX2NhY2hlX2Rlc3Ryb3koa21lbV9jYWNoZV90
ICopOw0KLWV4dGVybiBpbnQga21lbV9jYWNoZV9zaHJpbmsoa21lbV9jYWNo
ZV90ICopOw0KK2V4dGVybiB1aW50IGttZW1fY2FjaGVfc2hyaW5rKGttZW1f
Y2FjaGVfdCAqLCB1aW50KTsNCiBleHRlcm4gdm9pZCAqa21lbV9jYWNoZV9h
bGxvYyhrbWVtX2NhY2hlX3QgKiwgaW50KTsNCiBleHRlcm4gdm9pZCBrbWVt
X2NhY2hlX2ZyZWUoa21lbV9jYWNoZV90ICosIHZvaWQgKik7DQogDQpkaWZm
IC11ciAtWCBpZ25vcmUgLS1uZXctZmlsZSBsaW51eC0yLjQuMC10ZXN0NS9t
bS9zbGFiLmMgbWVtLTIuNC4wLXRlc3Q1L21tL3NsYWIuYw0KLS0tIGxpbnV4
LTIuNC4wLXRlc3Q1L21tL3NsYWIuYwlUaHUgSnVsIDEzIDAwOjI0OjM4IDIw
MDANCisrKyBtZW0tMi40LjAtdGVzdDUvbW0vc2xhYi5jCU1vbiBBdWcgIDcg
MTM6MDQ6NDEgMjAwMA0KQEAgLTgzOCw3ICs4MzgsNyBAQA0KIAlyZXR1cm4g
cmV0Ow0KIH0NCiANCi1zdGF0aWMgaW50IF9fa21lbV9jYWNoZV9zaHJpbmso
a21lbV9jYWNoZV90ICpjYWNoZXApDQorc3RhdGljIGludCBfX2ttZW1fY2Fj
aGVfc2hyaW5rKGttZW1fY2FjaGVfdCAqY2FjaGVwLCB1aW50ICpyZWxlYXNl
ZCkNCiB7DQogCXNsYWJfdCAqc2xhYnA7DQogCWludCByZXQ7DQpAQCAtODY5
LDEwICs4NjksMTcgQEANCiANCiAJCXNwaW5fdW5sb2NrX2lycSgmY2FjaGVw
LT5zcGlubG9jayk7DQogCQlrbWVtX3NsYWJfZGVzdHJveShjYWNoZXAsIHNs
YWJwKTsNCisNCisJCWlmIChyZWxlYXNlZCkgew0KKwkJCS8qIGRvbid0IG5l
ZWQgdGhlIGNhY2hlJ3Mgc3BpbmxvY2sgdG8gcmVhZCB0aGUgb3JkZXIgKi8N
CisJCQkqcmVsZWFzZWQgKz0gKDE8PGNhY2hlcC0+Z2Zwb3JkZXIpOw0KKwkJ
fQ0KKw0KIAkJc3Bpbl9sb2NrX2lycSgmY2FjaGVwLT5zcGlubG9jayk7DQog
CX0NCiAJcmV0ID0gIWxpc3RfZW1wdHkoJmNhY2hlcC0+c2xhYnMpOw0KIAlz
cGluX3VubG9ja19pcnEoJmNhY2hlcC0+c3BpbmxvY2spOw0KKw0KIAlyZXR1
cm4gcmV0Ow0KIH0NCiANCkBAIC04ODEsMTQgKzg4OCwyMSBAQA0KICAqIEBj
YWNoZXA6IFRoZSBjYWNoZSB0byBzaHJpbmsuDQogICoNCiAgKiBSZWxlYXNl
cyBhcyBtYW55IHNsYWJzIGFzIHBvc3NpYmxlIGZvciBhIGNhY2hlLg0KLSAq
IFRvIGhlbHAgZGVidWdnaW5nLCBhIHplcm8gZXhpdCBzdGF0dXMgaW5kaWNh
dGVzIGFsbCBzbGFicyB3ZXJlIHJlbGVhc2VkLg0KKyAqIFJldHVybnMgdGhl
IG51bWJlciBvZiBwYWdlcyByZWxlYXNlZC4NCisgKg0KKyAqIE5vdGU6IGdm
cF9tYXNrIGlzIGN1cnJlbnRseSBpZ25vcmVkLg0KICAqLw0KLWludCBrbWVt
X2NhY2hlX3NocmluayhrbWVtX2NhY2hlX3QgKmNhY2hlcCkNCit1aW50IGtt
ZW1fY2FjaGVfc2hyaW5rKGttZW1fY2FjaGVfdCAqY2FjaGVwLCB1aW50IGdm
cF9tYXNrKQ0KIHsNCisJdWludAlyZWxlYXNlZDsNCisNCiAJaWYgKCFjYWNo
ZXAgfHwgaW5faW50ZXJydXB0KCkgfHwgIWlzX2NoYWluZWRfa21lbV9jYWNo
ZShjYWNoZXApKQ0KIAkJQlVHKCk7DQogDQotCXJldHVybiBfX2ttZW1fY2Fj
aGVfc2hyaW5rKGNhY2hlcCk7DQorCXJlbGVhc2VkID0gMDsNCisJKHZvaWQp
IF9fa21lbV9jYWNoZV9zaHJpbmsoY2FjaGVwLCAmcmVsZWFzZWQpOw0KKw0K
KwlyZXR1cm4gcmVsZWFzZWQ7DQogfQ0KIA0KIC8qKg0KQEAgLTkyMCw3ICs5
MzQsNyBAQA0KIAlsaXN0X2RlbCgmY2FjaGVwLT5uZXh0KTsNCiAJdXAoJmNh
Y2hlX2NoYWluX3NlbSk7DQogDQotCWlmIChfX2ttZW1fY2FjaGVfc2hyaW5r
KGNhY2hlcCkpIHsNCisJaWYgKF9fa21lbV9jYWNoZV9zaHJpbmsoY2FjaGVw
LCBOVUxMKSkgew0KIAkJcHJpbnRrKEtFUk5fRVJSICJrbWVtX2NhY2hlX2Rl
c3Ryb3k6IENhbid0IGZyZWUgYWxsIG9iamVjdHMgJXBcbiIsDQogCQkgICAg
ICAgY2FjaGVwKTsNCiAJCWRvd24oJmNhY2hlX2NoYWluX3NlbSk7DQpAQCAt
MTc4Nyw4ICsxODAxLDggQEANCiANCiAJc3Bpbl9sb2NrX2lycSgmYmVzdF9j
YWNoZXAtPnNwaW5sb2NrKTsNCiBwZXJmZWN0Og0KLQkvKiBmcmVlIG9ubHkg
ODAlIG9mIHRoZSBmcmVlIHNsYWJzICovDQotCWJlc3RfbGVuID0gKGJlc3Rf
bGVuKjQgKyAxKS81Ow0KKwkvKiBmcmVlIG9ubHkgNTAlIG9mIHRoZSBmcmVl
IHNsYWJzICovDQorCWJlc3RfbGVuID0gKGJlc3RfbGVuICsgMSkvMjsNCiAJ
Zm9yIChzY2FuID0gMDsgc2NhbiA8IGJlc3RfbGVuOyBzY2FuKyspIHsNCiAJ
CXN0cnVjdCBsaXN0X2hlYWQgKnA7DQogDQpkaWZmIC11ciAtWCBpZ25vcmUg
LS1uZXctZmlsZSBsaW51eC0yLjQuMC10ZXN0NS9tbS92bXNjYW4uYyBtZW0t
Mi40LjAtdGVzdDUvbW0vdm1zY2FuLmMNCi0tLSBsaW51eC0yLjQuMC10ZXN0
NS9tbS92bXNjYW4uYwlUdWUgSnVsIDE4IDIwOjMxOjMzIDIwMDANCisrKyBt
ZW0tMi40LjAtdGVzdDUvbW0vdm1zY2FuLmMJTW9uIEF1ZyAgNyAxMjo1Njoz
NCAyMDAwDQpAQCAtNDc4LDYgKzQ3OCw5IEBADQogCWludCBwcmlvcml0eTsN
CiAJaW50IGNvdW50ID0gRlJFRV9DT1VOVDsNCiAJaW50IHN3YXBfY291bnQ7
DQorCWludCByZXQ7DQorDQorCXJldCA9IDE7CS8qIGFzc3VtZSBzdWNjZXNz
ICovDQogDQogCS8qIEFsd2F5cyB0cmltIFNMQUIgY2FjaGVzIHdoZW4gbWVt
b3J5IGdldHMgbG93LiAqLw0KIAlrbWVtX2NhY2hlX3JlYXAoZ2ZwX21hc2sp
Ow0KQEAgLTUwMywyMSArNTA2LDE2IEBADQogCQkvKiBUcnkgdG8gZ2V0IHJp
ZCBvZiBzb21lIHNoYXJlZCBtZW1vcnkgcGFnZXMuLiAqLw0KIAkJaWYgKGdm
cF9tYXNrICYgX19HRlBfSU8pIHsNCiAJCQkvKg0KLQkJCSAqIGRvbid0IGJl
IHRvbyBsaWdodCBhZ2FpbnN0IHRoZSBkL2kgY2FjaGUgc2luY2UNCi0JCSAg
IAkgKiBzaHJpbmtfbW1hcCgpIGFsbW9zdCBuZXZlciBmYWlsIHdoZW4gdGhl
cmUncw0KLQkJICAgCSAqIHJlYWxseSBwbGVudHkgb2YgbWVtb3J5IGZyZWUu
IA0KKwkJCSAqIERvbid0IGJlIHRvbyBsaWdodCBhZ2FpbnN0IHRoZSBkL2kg
Y2FjaGVzIHNpbmNlDQorCQkJICogc2hyaW5rX21tYXAoKSBhbG1vc3QgbmV2
ZXIgZmFpbHMgd2hlbiB0aGVyZSBpcw0KKwkJCSAqIHBsZW50eSBvZiBtZW1v
cnkgZnJlZS4gDQogCQkJICovDQogCQkJY291bnQgLT0gc2hyaW5rX2RjYWNo
ZV9tZW1vcnkocHJpb3JpdHksIGdmcF9tYXNrKTsNCiAJCQljb3VudCAtPSBz
aHJpbmtfaWNhY2hlX21lbW9yeShwcmlvcml0eSwgZ2ZwX21hc2spOw0KLQkJ
CS8qDQotCQkJICogTm90IGN1cnJlbnRseSB3b3JraW5nLCBzZWUgZml4bWUg
aW4gc2hyaW5rXz9jYWNoZV9tZW1vcnkNCi0JCQkgKiBJbiB0aGUgaW5uZXIg
ZnVudGlvbnMgdGhlcmUgaXMgYSBjb21tZW50Og0KLQkJCSAqICJUbyBoZWxw
IGRlYnVnZ2luZywgYSB6ZXJvIGV4aXQgc3RhdHVzIGluZGljYXRlcw0KLQkJ
CSAqICBhbGwgc2xhYnMgd2VyZSByZWxlYXNlZC4iICgtYXJjYT8pDQotCQkJ
ICogbGV0cyBoYW5kbGUgaXQgaW4gYSBwcmltaXRpdmUgYnV0IHdvcmtpbmcg
d2F5Li4uDQotCQkJICoJaWYgKGNvdW50IDw9IDApDQotCQkJICoJCWdvdG8g
ZG9uZTsNCi0JCQkgKi8NCisNCisJCQlpZiAoY291bnQgPD0gMCkNCisJCQkJ
Z290byBkb25lOw0KKw0KIAkJCWlmICgha2VlcF9rc3dhcGRfYXdha2UoKSkN
CiAJCQkJZ290byBkb25lOw0KIA0KQEAgLTU0NiwxMiArNTQ0LDQ4IEBADQog
CQlpZiAoIS0tY291bnQpDQogCQkJZ290byBkb25lOw0KIAl9DQotCS8qIFJl
dHVybiAxIGlmIGFueSBwYWdlIGlzIGZyZWVkLCBvcg0KLQkgKiB0aGVyZSBh
cmUgbm8gbW9yZSBtZW1vcnkgcHJlc3N1cmUgICAqLw0KLQlyZXR1cm4gKGNv
dW50IDwgRlJFRV9DT1VOVCB8fCAhbWVtb3J5X3ByZXNzdXJlKCkpOw0KLSAN
CisNCisJLyoNCisJICogUmV0dXJuIDEgaWYgYW55IHBhZ2UgaXMgZnJlZWQs
IG9yDQorCSAqIHRoZXJlIGFyZSBubyBtb3JlIG1lbW9yeSBwcmVzc3VyZS4N
CisJICovDQorCWlmIChjb3VudCA8IEZSRUVfQ09VTlQpDQorCQlnb3RvIGRv
bmU7DQorDQorCWlmICghbWVtb3J5X3ByZXNzdXJlKCkpDQorCQlnb3RvIGRv
bmU7DQorDQorCXJldCA9IDA7CS8qIGZhaWxlZCEgKi8NCiBkb25lOg0KLQly
ZXR1cm4gMTsNCisNCisJLyoNCisJICogc2hyaW5rX21tYXAoKSBpcyBhbHdh
eXMgY2FsbGVkLiAgSXQgY291bGQgaGF2ZSByZWxlYXNlZCBtYW55DQorCSAq
IGJ1ZmZlci1oZWFkcywgb3ZlcmZsb3dpbmcgdGhlIGJ1ZmZlci1oZWFkIHVu
dXNlZCBsaXN0IGFuZCBjYXVzaW5nDQorCSAqIHRoZSBoZWFkcyB0byBiZSBw
dXNoZWQgYmFjayBpbnRvIHRoZWlyIHNsYWIgY2FjaGUuDQorCSAqIENhbGwg
aW50byB0aGUgYnVmZmVyIGNvZGUsIHRvIGdldCBpdCB0byBzaHJpbmsgYmFj
ayB0aGUgYnVmZmVyLWhlYWQNCisJICogc2xhYiBjYWNoZS4gIFRoZXJlIGlz
IHByb2JhYmx5IGEgYmV0dGVyIHVzZSBmb3IgdGhlIG1lbW9yeSB0aGV5IGFy
ZQ0KKwkgKiBvY2N1cHlpbmcuDQorCSAqIHNocmlua19tbWFwKCkgY291bGQg
cmV0dXJuIGEgc3RhdHVzLCBpbmRpY2F0aW5nIHRyeV90b19mcmVlX2J1ZmZl
cnMoKQ0KKwkgKiBoYXMgc3VjY2VlZGVkIGFuZCB0aGUgaGVhZHMgc2hvdWxk
IGJlIHNocnVuay4gIEJ1dCBleHBlcmltZW50YXRpb24NCisJICogaGFzIHNo
b3duIGl0IGlzIGFsbW9zdCBhbHdheXMgd29ydGh3aGlsZSBzaHJpbmtpbmcg
dGhlIGJ1ZmZlci1oZWFkDQorCSAqIGNhY2hlLCBzbyBkbyBpdCB1bmNvbmRp
dGlvbmFsbHkuDQorCSAqDQorCSAqIE5vdGU6IENvdWxkIHdhaXQgZm9yIHRo
ZSBuZXh0IGNhbGwsIGFuZCBsZXQga21lbV9jYWNoZV9yZWFwKCkgdGFrZQ0K
KwkgKgkgY2FyZSBvZiB0aGVtLCBidXQgaXQgbWF5IG5vdCBmaW5kIHRoZW0g
KGl0IG9ubHkgc2NhbnMgYSBzZXQNCisJICoJIG51bWJlciBvZiBjYWNoZXMp
IGFuZCB3ZSB3YW50IHRoZSBtZW1vcnkgbm93LiAgVGhlIGJ1ZmZlci1oZWFk
DQorCSAqCSBjb2RlIGhhcyBpdHMgb3duIGxpc3Qgb2YgdW51c2VkIGJ1ZmZl
ci1oZWFkcywgd2hpY2ggYWN0cyBhcyBhDQorCSAqCSBjdXNoaW9uIHRvIHRo
ZSBzbGFiIGNhY2hlLCBzbyB3ZSdyZSAocHJvYmFibHkpIG5vdCByZWxlYXNp
bmcNCisJICoJIGJ1ZmZlci1oZWFkcyB3aGljaCB3aWxsIGJlIG5lZWRlZCBp
biB0aGUgaW1tZWRpYXRlIGZ1dHVyZS4NCisJICovDQorCWlmIChzaHJpbmtf
YnVmZmVyX2hlYWRzKGdmcF9tYXNrKSkgew0KKwkJLyoNCisJCSAqIFNocnVu
aywgc28gc29tZSBwYWdlcyB3ZXJlIHJlbGVhc2VkIC0gb3ZlcndyaXRlIGEg
ZmFpbHVyZQ0KKwkJICogc3RhdHVzDQorCQkgKi8NCisJCXJldCA9IDE7DQor
CX0NCisNCisJcmV0dXJuIHJldDsNCiB9DQogDQogREVDTEFSRV9XQUlUX1FV
RVVFX0hFQUQoa3N3YXBkX3dhaXQpOw0K
--168455872-2061034204-965652127=:21086--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/