Fix mismatch between SA header size and layout
[zfs.git] / module / zfs / zfs_fm.c
index 7801837..820291b 100644 (file)
@@ -267,6 +267,10 @@ zfs_ereport_start(nvlist_t **ereport_out, nvlist_t **detector_out,
                        fm_payload_set(ereport,
                            FM_EREPORT_PAYLOAD_ZFS_VDEV_FRU,
                            DATA_TYPE_STRING, vd->vdev_fru, NULL);
+               if (vd->vdev_ashift)
+                       fm_payload_set(ereport,
+                           FM_EREPORT_PAYLOAD_ZFS_VDEV_ASHIFT,
+                           DATA_TYPE_UINT64, vd->vdev_ashift, NULL);
 
                if (pvd != NULL) {
                        fm_payload_set(ereport,
@@ -294,6 +298,10 @@ zfs_ereport_start(nvlist_t **ereport_out, nvlist_t **detector_out,
                    DATA_TYPE_INT32, zio->io_error, NULL);
                fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_ZIO_FLAGS,
                    DATA_TYPE_INT32, zio->io_flags, NULL);
+               fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_ZIO_STAGE,
+                   DATA_TYPE_UINT32, zio->io_stage, NULL);
+               fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_ZIO_PIPELINE,
+                   DATA_TYPE_UINT32, zio->io_pipeline, NULL);
                fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_ZIO_DELAY,
                    DATA_TYPE_UINT64, zio->io_delay, NULL);
 
@@ -519,7 +527,7 @@ annotate_ecksum(nvlist_t *ereport, zio_bad_cksum_t *info,
        size_t offset = 0;
        ssize_t start = -1;
 
-       zfs_ecksum_info_t *eip = kmem_zalloc(sizeof (*eip), KM_SLEEP);
+       zfs_ecksum_info_t *eip = kmem_zalloc(sizeof (*eip), KM_PUSHPAGE);
 
        /* don't do any annotation for injected checksum errors */
        if (info != NULL && info->zbc_injected)
@@ -688,7 +696,7 @@ zfs_ereport_start_checksum(spa_t *spa, vdev_t *vd,
     struct zio *zio, uint64_t offset, uint64_t length, void *arg,
     zio_bad_cksum_t *info)
 {
-       zio_cksum_report_t *report = kmem_zalloc(sizeof (*report), KM_SLEEP);
+       zio_cksum_report_t *report = kmem_zalloc(sizeof (*report), KM_PUSHPAGE);
 
        if (zio->io_vsd != NULL)
                zio->io_vsd_ops->vsd_cksum_report(zio, report, arg);
@@ -697,7 +705,7 @@ zfs_ereport_start_checksum(spa_t *spa, vdev_t *vd,
 
        /* copy the checksum failure information if it was provided */
        if (info != NULL) {
-               report->zcr_ckinfo = kmem_zalloc(sizeof (*info), KM_SLEEP);
+               report->zcr_ckinfo = kmem_zalloc(sizeof (*info), KM_PUSHPAGE);
                bcopy(info, report->zcr_ckinfo, sizeof (*info));
        }