diff options
author | Matthew Ahrens <[email protected]> | 2020-11-14 10:17:16 -0800 |
---|---|---|
committer | GitHub <[email protected]> | 2020-11-14 10:17:16 -0800 |
commit | d66aab7c081274c97b785cdc9033456c493ca6b1 (patch) | |
tree | ffff201b4bf48631f0428e0d27b71229c829bb7e /man/man5 | |
parent | 7e3617de35defa931ec124d1442008f73b275ecc (diff) |
Assertion failure when logging large output of channel program
The output of ZFS channel programs is logged on-disk in the zpool
history, and printed by `zpool history -i`. Channel programs can use
10MB of memory by default, and up to 100MB by using the `zfs program -m`
flag. Therefore their output can be up to some fraction of 100MB.
In addition to being somewhat wasteful of the limited space reserved for
the pool history (which for large pools is 1GB), in extreme cases this
can result in a failure of `ASSERT(length <= DMU_MAX_ACCESS);` in
`dmu_buf_hold_array_by_dnode()`.
This commit limits the output size that will be logged to 1MB. Larger
outputs will not be logged, instead a entry will be logged indicating
the size of the omitted output.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Matthew Ahrens <[email protected]>
Closes #11194
Diffstat (limited to 'man/man5')
-rw-r--r-- | man/man5/zfs-module-parameters.5 | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/man/man5/zfs-module-parameters.5 b/man/man5/zfs-module-parameters.5 index 5b4dac42f..c6c40cf80 100644 --- a/man/man5/zfs-module-parameters.5 +++ b/man/man5/zfs-module-parameters.5 @@ -382,6 +382,20 @@ Default value: \fB16,777,217\fR. .sp .ne 2 .na +\fBzfs_history_output_max\fR (int) +.ad +.RS 12n +When attempting to log the output nvlist of an ioctl in the on-disk history, the +output will not be stored if it is larger than size (in bytes). This must be +less then DMU_MAX_ACCESS (64MB). This applies primarily to +zfs_ioc_channel_program(). +.sp +Default value: \fB1MB\fR. +.RE + +.sp +.ne 2 +.na \fBzfs_keep_log_spacemaps_at_export\fR (int) .ad .RS 12n |