zdb: use a heap allocation instead of a huge array on stack
SPA_MAXBLOCKSIZE is 16 MB and having such a large object on the stack is not nice in general and it could cause some confusing failures in the single-user mode where the default stack size of 8 MB is used. I expect that the upstream would make the same change. MFC after: 1 week
This commit is contained in:
parent
9b06c6070c
commit
d72d8662c0
@ -3724,7 +3724,7 @@ zdb_embedded_block(char *thing)
|
||||
{
|
||||
blkptr_t bp = { 0 };
|
||||
unsigned long long *words = (void *)&bp;
|
||||
char buf[SPA_MAXBLOCKSIZE];
|
||||
char *buf;
|
||||
int err;
|
||||
|
||||
err = sscanf(thing, "%llx:%llx:%llx:%llx:%llx:%llx:%llx:%llx:"
|
||||
@ -3738,12 +3738,15 @@ zdb_embedded_block(char *thing)
|
||||
exit(1);
|
||||
}
|
||||
ASSERT3U(BPE_GET_LSIZE(&bp), <=, SPA_MAXBLOCKSIZE);
|
||||
buf = malloc(SPA_MAXBLOCKSIZE);
|
||||
err = decode_embedded_bp(&bp, buf, BPE_GET_LSIZE(&bp));
|
||||
if (err != 0) {
|
||||
(void) printf("decode failed: %u\n", err);
|
||||
free(buf);
|
||||
exit(1);
|
||||
}
|
||||
zdb_dump_block_raw(buf, BPE_GET_LSIZE(&bp), 0);
|
||||
free(buf);
|
||||
}
|
||||
|
||||
static boolean_t
|
||||
|
Loading…
Reference in New Issue
Block a user