mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 02:49:32 +03:00
Don't emit cksum_{actual_expected} in ereport.fs.zfs.checksum events
With anything but fletcher-4, even a tiny change in the input will cause the checksum value to change completely. So knowing the actual and expected checksums doesn't provide much more information than "they don't match". The harm in sending them is simply that they bloat the event. In particular, on FreeBSD the event must fit into a 1016 byte buffer. Fixes #14717 for mirrored pools. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Rich Ercolani <rincebrain@gmail.com> Signed-off-by: Alan Somers <asomers@gmail.com> Sponsored-by: Axcient Closes #14717 Closes #15052
This commit is contained in:
parent
51a2b59767
commit
b6f618f8ff
@ -102,8 +102,6 @@ extern "C" {
|
|||||||
#define FM_EREPORT_PAYLOAD_ZFS_ZIO_TIMESTAMP "zio_timestamp"
|
#define FM_EREPORT_PAYLOAD_ZFS_ZIO_TIMESTAMP "zio_timestamp"
|
||||||
#define FM_EREPORT_PAYLOAD_ZFS_ZIO_DELTA "zio_delta"
|
#define FM_EREPORT_PAYLOAD_ZFS_ZIO_DELTA "zio_delta"
|
||||||
#define FM_EREPORT_PAYLOAD_ZFS_PREV_STATE "prev_state"
|
#define FM_EREPORT_PAYLOAD_ZFS_PREV_STATE "prev_state"
|
||||||
#define FM_EREPORT_PAYLOAD_ZFS_CKSUM_EXPECTED "cksum_expected"
|
|
||||||
#define FM_EREPORT_PAYLOAD_ZFS_CKSUM_ACTUAL "cksum_actual"
|
|
||||||
#define FM_EREPORT_PAYLOAD_ZFS_CKSUM_ALGO "cksum_algorithm"
|
#define FM_EREPORT_PAYLOAD_ZFS_CKSUM_ALGO "cksum_algorithm"
|
||||||
#define FM_EREPORT_PAYLOAD_ZFS_CKSUM_BYTESWAP "cksum_byteswap"
|
#define FM_EREPORT_PAYLOAD_ZFS_CKSUM_BYTESWAP "cksum_byteswap"
|
||||||
#define FM_EREPORT_PAYLOAD_ZFS_BAD_OFFSET_RANGES "bad_ranges"
|
#define FM_EREPORT_PAYLOAD_ZFS_BAD_OFFSET_RANGES "bad_ranges"
|
||||||
|
@ -94,8 +94,6 @@ typedef const struct zio_checksum_info {
|
|||||||
} zio_checksum_info_t;
|
} zio_checksum_info_t;
|
||||||
|
|
||||||
typedef struct zio_bad_cksum {
|
typedef struct zio_bad_cksum {
|
||||||
zio_cksum_t zbc_expected;
|
|
||||||
zio_cksum_t zbc_actual;
|
|
||||||
const char *zbc_checksum_name;
|
const char *zbc_checksum_name;
|
||||||
uint8_t zbc_byteswapped;
|
uint8_t zbc_byteswapped;
|
||||||
uint8_t zbc_injected;
|
uint8_t zbc_injected;
|
||||||
|
@ -305,10 +305,6 @@ The time when a given I/O request was submitted.
|
|||||||
The time required to service a given I/O request.
|
The time required to service a given I/O request.
|
||||||
.It Sy prev_state
|
.It Sy prev_state
|
||||||
The previous state of the vdev.
|
The previous state of the vdev.
|
||||||
.It Sy cksum_expected
|
|
||||||
The expected checksum value for the block.
|
|
||||||
.It Sy cksum_actual
|
|
||||||
The actual checksum value for an errant block.
|
|
||||||
.It Sy cksum_algorithm
|
.It Sy cksum_algorithm
|
||||||
Checksum algorithm used.
|
Checksum algorithm used.
|
||||||
See
|
See
|
||||||
|
@ -1398,7 +1398,7 @@ vdev_indirect_checksum_error(zio_t *zio,
|
|||||||
vd->vdev_stat.vs_checksum_errors++;
|
vd->vdev_stat.vs_checksum_errors++;
|
||||||
mutex_exit(&vd->vdev_stat_lock);
|
mutex_exit(&vd->vdev_stat_lock);
|
||||||
|
|
||||||
zio_bad_cksum_t zbc = {{{ 0 }}};
|
zio_bad_cksum_t zbc = { 0 };
|
||||||
abd_t *bad_abd = ic->ic_data;
|
abd_t *bad_abd = ic->ic_data;
|
||||||
abd_t *good_abd = is->is_good_child->ic_data;
|
abd_t *good_abd = is->is_good_child->ic_data;
|
||||||
(void) zfs_ereport_post_checksum(zio->io_spa, vd, NULL, zio,
|
(void) zfs_ereport_post_checksum(zio->io_spa, vd, NULL, zio,
|
||||||
|
@ -1785,7 +1785,7 @@ vdev_raidz_checksum_error(zio_t *zio, raidz_col_t *rc, abd_t *bad_data)
|
|||||||
static int
|
static int
|
||||||
raidz_checksum_verify(zio_t *zio)
|
raidz_checksum_verify(zio_t *zio)
|
||||||
{
|
{
|
||||||
zio_bad_cksum_t zbc = {{{0}}};
|
zio_bad_cksum_t zbc = {0};
|
||||||
raidz_map_t *rm = zio->io_vsd;
|
raidz_map_t *rm = zio->io_vsd;
|
||||||
|
|
||||||
int ret = zio_checksum_error(zio, &zbc);
|
int ret = zio_checksum_error(zio, &zbc);
|
||||||
|
@ -914,14 +914,6 @@ annotate_ecksum(nvlist_t *ereport, zio_bad_cksum_t *info,
|
|||||||
|
|
||||||
if (info != NULL && info->zbc_has_cksum) {
|
if (info != NULL && info->zbc_has_cksum) {
|
||||||
fm_payload_set(ereport,
|
fm_payload_set(ereport,
|
||||||
FM_EREPORT_PAYLOAD_ZFS_CKSUM_EXPECTED,
|
|
||||||
DATA_TYPE_UINT64_ARRAY,
|
|
||||||
sizeof (info->zbc_expected) / sizeof (uint64_t),
|
|
||||||
(uint64_t *)&info->zbc_expected,
|
|
||||||
FM_EREPORT_PAYLOAD_ZFS_CKSUM_ACTUAL,
|
|
||||||
DATA_TYPE_UINT64_ARRAY,
|
|
||||||
sizeof (info->zbc_actual) / sizeof (uint64_t),
|
|
||||||
(uint64_t *)&info->zbc_actual,
|
|
||||||
FM_EREPORT_PAYLOAD_ZFS_CKSUM_ALGO,
|
FM_EREPORT_PAYLOAD_ZFS_CKSUM_ALGO,
|
||||||
DATA_TYPE_STRING,
|
DATA_TYPE_STRING,
|
||||||
info->zbc_checksum_name,
|
info->zbc_checksum_name,
|
||||||
|
@ -515,8 +515,6 @@ zio_checksum_error_impl(spa_t *spa, const blkptr_t *bp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (info != NULL) {
|
if (info != NULL) {
|
||||||
info->zbc_expected = expected_cksum;
|
|
||||||
info->zbc_actual = actual_cksum;
|
|
||||||
info->zbc_checksum_name = ci->ci_name;
|
info->zbc_checksum_name = ci->ci_name;
|
||||||
info->zbc_byteswapped = byteswap;
|
info->zbc_byteswapped = byteswap;
|
||||||
info->zbc_injected = 0;
|
info->zbc_injected = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user