Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Dec 2009 15:06:14 -0800
From:      Matt Reimer <mattjreimer@gmail.com>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-fs@freebsd.org
Subject:   Re: PATCH: increase heap size for (gpt)zfsboot
Message-ID:  <f383264b0912081506q55a9abfcx7ff5f9c7099a3de7@mail.gmail.com>
In-Reply-To: <200912080813.58600.jhb@freebsd.org>
References:  <f383264b0912071601p3bfab229rd1b282b80db2aff6@mail.gmail.com> <200912080813.58600.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--001636e0b9c5f10ee2047a3f9eb3
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

On Tue, Dec 8, 2009 at 5:13 AM, John Baldwin <jhb@freebsd.org> wrote:
> On Monday 07 December 2009 7:01:03 pm Matt Reimer wrote:
>> Enlarge the heap size for gptzfsboot and zfsboot. This is necessary so
>> the ZFS code has enough memory to handle decompression and error
>> recovery.
>>
>> Before this patch the heap grew from the end of the (gpt)zfsboot code
>> and static data up to 640KB, possibly overrunning the stack. Now the
>> heap is located at 16MB-64MB.
>>
>> Note that this requires machines with at least 64MB RAM, but this is
>> not likely to be a problem on any machine running ZFS.
>>
>> Sponsored by: VPOP Technologies, Inc.
>>
>> Matt Reimer
>
> Unfortunately the 16M - 64M range may not all be useable RAM. =A0It may c=
ontain
> ACPI tables, etc. =A0A robust approach would involve walking the SMAP, et=
c. =A0I
> just committed some changes to sys/boot/i386/loader/biosmem.c that make i=
t
> smarter about choosing a heap region. =A0I suggest adopting that algorith=
m for
> figuring out a safe heap range. =A0zfsboot and gptzfsboot should have eno=
ugh
> free space to take the bios_getmem() function. =A0You can increase the mi=
nimum
> heap size beyond 3M if desired (though 3M is the minimum the loader will
> guarantee currently, and if ZFS needs more than that it likely needs to b=
e
> changed in both places).

Thanks John. I dropped the bios_getmem() into zfsboot.c and it works
for me. How's the attached patch look to you?

Matt

--001636e0b9c5f10ee2047a3f9eb3
Content-Type: application/octet-stream; name="more-mem.patch"
Content-Disposition: attachment; filename="more-mem.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g2za5nle0

LS0tIC9zeXMvYm9vdC96ZnMvemZzaW1wbC5jLk9SSUcJMjAwOS0xMS0yMSAwNzowMjozNS4wMDAw
MDAwMDAgLTA4MDAKKysrIC9zeXMvYm9vdC96ZnMvemZzaW1wbC5jCTIwMDktMTItMDcgMTI6NTQ6
NDQuMDAwMDAwMDAwIC0wODAwCkBAIC01MSw3ICs1MSw3IEBACiBzdGF0aWMgY2hhciAqemFwX3Nj
cmF0Y2g7CiBzdGF0aWMgY2hhciAqemZzX3RlbXBfYnVmLCAqemZzX3RlbXBfZW5kLCAqemZzX3Rl
bXBfcHRyOwogCi0jZGVmaW5lIFRFTVBfU0laRQkoMSpTUEFfTUFYQkxPQ0tTSVpFKQorI2RlZmlu
ZSBURU1QX1NJWkUJKDEwMjQgKiAxMDI0KQogCiBzdGF0aWMgaW50IHppb19yZWFkKHNwYV90ICpz
cGEsIGNvbnN0IGJsa3B0cl90ICpicCwgdm9pZCAqYnVmKTsKIAotLS0gL3N5cy9ib290L2kzODYv
emZzYm9vdC96ZnNib290LmMuT1JJRwkyMDA5LTEyLTA3IDEwOjMyOjIyLjAwMDAwMDAwMCAtMDgw
MAorKysgL3N5cy9ib290L2kzODYvemZzYm9vdC96ZnNib290LmMJMjAwOS0xMi0wOCAxNDo1NToz
Mi4wMDAwMDAwMDAgLTA4MDAKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPG1hY2hpbmUv
Ym9vdGluZm8uaD4KICNpbmNsdWRlIDxtYWNoaW5lL2VsZi5oPgorI2luY2x1ZGUgPG1hY2hpbmUv
cGMvYmlvcy5oPgogCiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8c3RkZGVmLmg+CkBA
IC0xNDksNiArMTUwLDE5IEBACiBzdGF0aWMgdWludDMyX3QgYm9vdGRldjsKIHN0YXRpYyB1aW50
OF90IGlvY3RybCA9IElPX0tFWUJPQVJEOwogCit2bV9vZmZzZXRfdAltZW10b3AsIG1lbXRvcF9j
b3B5aW4sIGhpZ2hfaGVhcF9iYXNlOwordV9pbnQzMl90CWJpb3NfYmFzZW1lbSwgYmlvc19leHRt
ZW0sIGhpZ2hfaGVhcF9zaXplOworCitzdGF0aWMgc3RydWN0IGJpb3Nfc21hcCBzbWFwOworCisv
KgorICogVGhlIG1pbmltdW0gYW1vdW50IG9mIG1lbW9yeSB0byByZXNlcnZlIGluIGJpb3NfZXh0
bWVtIGZvciB0aGUgaGVhcC4KKyAqLworI2RlZmluZQlIRUFQX01JTgkoMyAqIDEwMjQgKiAxMDI0
KQorCitzdGF0aWMgY2hhciAqaGVhcF9uZXh0Oworc3RhdGljIGNoYXIgKmhlYXBfZW5kOworCiAv
KiBCdWZmZXJzIHRoYXQgbXVzdCBub3Qgc3BhbiBhIDY0ayBib3VuZGFyeS4gKi8KICNkZWZpbmUg
UkVBRF9CVUZfU0laRQk4MTkyCiBzdHJ1Y3QgZG1hZGF0IHsKQEAgLTE2Myw2ICsxNzcsNyBAQAog
c3RhdGljIHZvaWQgcHJpbnRmKGNvbnN0IGNoYXIgKiwuLi4pOwogc3RhdGljIHZvaWQgcHV0Y2hh
cihpbnQpOwogc3RhdGljIHVpbnQzMl90IG1lbXNpemUodm9pZCk7Cit2b2lkIGJpb3NfZ2V0bWVt
KHZvaWQpOwogc3RhdGljIGludCBkcnZyZWFkKHN0cnVjdCBkc2sgKiwgdm9pZCAqLCBkYWRkcl90
LCB1bnNpZ25lZCk7CiBzdGF0aWMgaW50IGtleWhpdCh1bnNpZ25lZCk7CiBzdGF0aWMgaW50IHhw
dXRjKGludCk7CkBAIC0yMzcsMTQgKzI1Miw2IEBACiBzdGF0aWMgdm9pZCAqCiBtYWxsb2Moc2l6
ZV90IG4pCiB7Ci0Jc3RhdGljIGNoYXIgKmhlYXBfbmV4dDsKLQlzdGF0aWMgY2hhciAqaGVhcF9l
bmQ7Ci0KLQlpZiAoIWhlYXBfbmV4dCkgewotCQloZWFwX25leHQgPSAoY2hhciAqKSBkbWFkYXQg
KyBzaXplb2YoKmRtYWRhdCk7Ci0JCWhlYXBfZW5kID0gKGNoYXIgKikgKDY0MCoxMDI0KTsKLQl9
Ci0KIAljaGFyICpwID0gaGVhcF9uZXh0OwogCWlmIChwICsgbiA+IGhlYXBfZW5kKSB7CiAJCXBy
aW50ZigibWFsbG9jIGZhaWx1cmVcbiIpOwpAQCAtMzUzLDYgKzM2MCw5NiBAQAogICAgIHJldHVy
biB2ODYuZWF4OwogfQogCit2b2lkCitiaW9zX2dldG1lbSh2b2lkKQoreworICAgIHVpbnQ2NF90
IHNpemU7CisKKyAgICAvKiBQYXJzZSBzeXN0ZW0gbWVtb3J5IG1hcCAqLworICAgIHY4Ni5lYngg
PSAwOworICAgIGRvIHsKKwl2ODYuY3RsID0gVjg2X0ZMQUdTOworCXY4Ni5hZGRyID0gMHgxNTsJ
CS8qIGludCAweDE1IGZ1bmN0aW9uIDB4ZTgyMCovCisJdjg2LmVheCA9IDB4ZTgyMDsKKwl2ODYu
ZWN4ID0gc2l6ZW9mKHN0cnVjdCBiaW9zX3NtYXApOworCXY4Ni5lZHggPSBTTUFQX1NJRzsKKwl2
ODYuZXMgPSBWVE9QU0VHKCZzbWFwKTsKKwl2ODYuZWRpID0gVlRPUE9GRigmc21hcCk7CisJdjg2
aW50KCk7CisJaWYgKCh2ODYuZWZsICYgMSkgfHwgKHY4Ni5lYXggIT0gU01BUF9TSUcpKQorCSAg
ICBicmVhazsKKwkvKiBsb29rIGZvciBhIGxvdy1tZW1vcnkgc2VnbWVudCB0aGF0J3MgbGFyZ2Ug
ZW5vdWdoICovCisJaWYgKChzbWFwLnR5cGUgPT0gU01BUF9UWVBFX01FTU9SWSkgJiYgKHNtYXAu
YmFzZSA9PSAwKSAmJgorCSAgICAoc21hcC5sZW5ndGggPj0gKDUxMiAqIDEwMjQpKSkKKwkgICAg
Ymlvc19iYXNlbWVtID0gc21hcC5sZW5ndGg7CisJLyogbG9vayBmb3IgdGhlIGZpcnN0IHNlZ21l
bnQgaW4gJ2V4dGVuZGVkJyBtZW1vcnkgKi8KKwlpZiAoKHNtYXAudHlwZSA9PSBTTUFQX1RZUEVf
TUVNT1JZKSAmJiAoc21hcC5iYXNlID09IDB4MTAwMDAwKSkgeworCSAgICBiaW9zX2V4dG1lbSA9
IHNtYXAubGVuZ3RoOworCX0KKworCS8qCisJICogTG9vayBmb3IgdGhlIGxhcmdlc3Qgc2VnbWVu
dCBpbiAnZXh0ZW5kZWQnIG1lbW9yeSBiZXlvbmQKKwkgKiAxTUIgYnV0IGJlbG93IDRHQi4KKwkg
Ki8KKwlpZiAoKHNtYXAudHlwZSA9PSBTTUFQX1RZUEVfTUVNT1JZKSAmJiAoc21hcC5iYXNlID4g
MHgxMDAwMDApICYmCisJICAgIChzbWFwLmJhc2UgPCAweDEwMDAwMDAwMHVsbCkpIHsKKwkgICAg
c2l6ZSA9IHNtYXAubGVuZ3RoOworCisJICAgIC8qCisJICAgICAqIElmIHRoaXMgc2VnbWVudCBj
cm9zc2VzIHRoZSA0R0IgYm91bmRhcnksIHRydW5jYXRlIGl0LgorCSAgICAgKi8KKwkgICAgaWYg
KHNtYXAuYmFzZSArIHNpemUgPiAweDEwMDAwMDAwMHVsbCkKKwkJc2l6ZSA9IDB4MTAwMDAwMDAw
dWxsIC0gc21hcC5iYXNlOworCisJICAgIGlmIChzaXplID4gaGlnaF9oZWFwX3NpemUpIHsKKwkJ
aGlnaF9oZWFwX3NpemUgPSBzaXplOworCQloaWdoX2hlYXBfYmFzZSA9IHNtYXAuYmFzZTsKKwkg
ICAgfQorCX0KKyAgICB9IHdoaWxlICh2ODYuZWJ4ICE9IDApOworCisgICAgLyogRmFsbCBiYWNr
IHRvIHRoZSBvbGQgY29tcGF0aWJpbGl0eSBmdW5jdGlvbiBmb3IgYmFzZSBtZW1vcnkgKi8KKyAg
ICBpZiAoYmlvc19iYXNlbWVtID09IDApIHsKKwl2ODYuY3RsID0gMDsKKwl2ODYuYWRkciA9IDB4
MTI7CQkvKiBpbnQgMHgxMiAqLworCXY4NmludCgpOworCQorCWJpb3NfYmFzZW1lbSA9ICh2ODYu
ZWF4ICYgMHhmZmZmKSAqIDEwMjQ7CisgICAgfQorCisgICAgLyogRmFsbCBiYWNrIHRocm91Z2gg
c2V2ZXJhbCBjb21wYXRpYmlsaXR5IGZ1bmN0aW9ucyBmb3IgZXh0ZW5kZWQgbWVtb3J5ICovCisg
ICAgaWYgKGJpb3NfZXh0bWVtID09IDApIHsKKwl2ODYuY3RsID0gVjg2X0ZMQUdTOworCXY4Ni5h
ZGRyID0gMHgxNTsJCS8qIGludCAweDE1IGZ1bmN0aW9uIDB4ZTgwMSovCisJdjg2LmVheCA9IDB4
ZTgwMTsKKwl2ODZpbnQoKTsKKwlpZiAoISh2ODYuZWZsICYgMSkpIHsKKwkgICAgYmlvc19leHRt
ZW0gPSAoKHY4Ni5lY3ggJiAweGZmZmYpICsgKCh2ODYuZWR4ICYgMHhmZmZmKSAqIDY0KSkgKiAx
MDI0OworCX0KKyAgICB9CisgICAgaWYgKGJpb3NfZXh0bWVtID09IDApIHsKKwl2ODYuY3RsID0g
MDsKKwl2ODYuYWRkciA9IDB4MTU7CQkvKiBpbnQgMHgxNSBmdW5jdGlvbiAweDg4Ki8KKwl2ODYu
ZWF4ID0gMHg4ODAwOworCXY4NmludCgpOworCWJpb3NfZXh0bWVtID0gKHY4Ni5lYXggJiAweGZm
ZmYpICogMTAyNDsKKyAgICB9CisKKyAgICAvKiBTZXQgbWVtdG9wIHRvIGFjdHVhbCB0b3Agb2Yg
bWVtb3J5ICovCisgICAgbWVtdG9wID0gbWVtdG9wX2NvcHlpbiA9IDB4MTAwMDAwICsgYmlvc19l
eHRtZW07CisKKyAgICAvKgorICAgICAqIElmIHdlIGhhdmUgZXh0ZW5kZWQgbWVtb3J5IGFuZCBk
aWQgbm90IGZpbmQgYSBzdWl0YWJsZSBoZWFwCisgICAgICogcmVnaW9uIGluIHRoZSBTTUFQLCB1
c2UgdGhlIGxhc3QgM01CIG9mICdleHRlbmRlZCcgbWVtb3J5IGFzIGEKKyAgICAgKiBoaWdoIGhl
YXAgY2FuZGlkYXRlLgorICAgICAqLworICAgIGlmIChiaW9zX2V4dG1lbSA+PSBIRUFQX01JTiAm
JiBoaWdoX2hlYXBfc2l6ZSA8IEhFQVBfTUlOKSB7CisJaGlnaF9oZWFwX3NpemUgPSBIRUFQX01J
TjsKKwloaWdoX2hlYXBfYmFzZSA9IG1lbXRvcCAtIEhFQVBfTUlOOworICAgIH0KK30gICAgCisK
Kwogc3RhdGljIGlubGluZSB2b2lkCiBnZXRzdHIodm9pZCkKIHsKQEAgLTUzNiw2ICs2MzMsMTYg
QEAKICAgICBvZmZfdCBvZmY7CiAgICAgc3RydWN0IGRzayAqZHNrOwogCisgICAgYmlvc19nZXRt
ZW0oKTsKKworICAgIGlmIChoaWdoX2hlYXBfc2l6ZSA+IDApIHsKKwloZWFwX2VuZCA9IFBUT1Yo
aGlnaF9oZWFwX2Jhc2UgKyBoaWdoX2hlYXBfc2l6ZSk7CisJaGVhcF9uZXh0ID0gUFRPVihoaWdo
X2hlYXBfYmFzZSk7CisgICAgfSBlbHNlIHsKKwloZWFwX25leHQgPSAoY2hhciAqKSBkbWFkYXQg
KyBzaXplb2YoKmRtYWRhdCk7CisJaGVhcF9lbmQgPSAoY2hhciAqKSBQVE9WKGJpb3NfYmFzZW1l
bSk7CisgICAgfQorCiAgICAgZG1hZGF0ID0gKHZvaWQgKikocm91bmR1cDIoX19iYXNlICsgKGlu
dDMyX3QpJl9lbmQsIDB4MTAwMDApIC0gX19iYXNlKTsKICAgICB2ODYuY3RsID0gVjg2X0ZMQUdT
OwogCkBAIC01NTAsOCArNjU3LDggQEAKIAogICAgIGJvb3RpbmZvLmJpX3ZlcnNpb24gPSBCT09U
SU5GT19WRVJTSU9OOwogICAgIGJvb3RpbmZvLmJpX3NpemUgPSBzaXplb2YoYm9vdGluZm8pOwot
ICAgIGJvb3RpbmZvLmJpX2Jhc2VtZW0gPSAwOwkvKiBYWFggd2lsbCBiZSBmaWxsZWQgYnkgbG9h
ZGVyIG9yIGtlcm5lbCAqLwotICAgIGJvb3RpbmZvLmJpX2V4dG1lbSA9IG1lbXNpemUoKTsKKyAg
ICBib290aW5mby5iaV9iYXNlbWVtID0gYmlvc19iYXNlbWVtIC8gMTAyNDsKKyAgICBib290aW5m
by5iaV9leHRtZW0gPSBiaW9zX2V4dG1lbSAvIDEwMjQ7CiAgICAgYm9vdGluZm8uYmlfbWVtc2l6
ZXNfdmFsaWQrKzsKICAgICBib290aW5mby5iaV9iaW9zX2RldiA9IGRzay0+ZHJpdmU7CiAK
--001636e0b9c5f10ee2047a3f9eb3--



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