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>