Index: sys/dev/nvme/nvme.h =================================================================== --- sys/dev/nvme/nvme.h +++ sys/dev/nvme/nvme.h @@ -1394,23 +1394,25 @@ _Static_assert(sizeof(struct nvme_command_effects_page) == 4096, "bad size for nvme_command_effects_page"); +struct nvme_device_self_test_result { + uint8_t status; + uint8_t segment_num; + uint8_t valid_diag_info; + uint8_t rsvd3; + uint64_t poh; + uint32_t nsid; + /* Define as an array to simplify alignment issues */ + uint8_t failing_lba[8]; + uint8_t status_code_type; + uint8_t status_code; + uint8_t vendor_specific[2]; +} __packed; + struct nvme_device_self_test_page { - uint8_t curr_operation; - uint8_t curr_compl; - uint8_t rsvd2[2]; - struct { - uint8_t status; - uint8_t segment_num; - uint8_t valid_diag_info; - uint8_t rsvd3; - uint64_t poh; - uint32_t nsid; - /* Define as an array to simplify alignment issues */ - uint8_t failing_lba[8]; - uint8_t status_code_type; - uint8_t status_code; - uint8_t vendor_specific[2]; - } __packed result[20]; + uint8_t curr_operation; + uint8_t curr_compl; + uint8_t rsvd2[2]; + struct nvme_device_self_test_result result[20]; } __packed __aligned(4); _Static_assert(sizeof(struct nvme_device_self_test_page) == 564,