1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3 4. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh 5 6ERR_CODE=0 7 8_check_value() { 9 local name=$1 10 local actual=$2 11 local expected=$3 12 13 if [ "$actual" != "$expected" ]; then 14 echo "$name $actual != $expected" 15 ERR_CODE=255 16 return 1 17 fi 18 return 0 19} 20 21_test_metadata_only() { 22 local dev_id 23 24 dev_id=$(_add_ublk_dev -t null -u --no_auto_part_scan --metadata_size 8) 25 _check_add_dev "$TID" $? 26 27 _check_value "metadata_size" "$(_get_metadata_size "$dev_id" metadata_size)" 8 && 28 _check_value "pi_offset" "$(_get_metadata_size "$dev_id" pi_offset)" 0 && 29 _check_value "pi_tuple_size" "$(_get_metadata_size "$dev_id" pi_tuple_size)" 0 && 30 _check_value "device_is_integrity_capable" \ 31 "$(cat "/sys/block/ublkb$dev_id/integrity/device_is_integrity_capable")" 0 && 32 _check_value "format" "$(cat "/sys/block/ublkb$dev_id/integrity/format")" nop && 33 _check_value "protection_interval_bytes" \ 34 "$(cat "/sys/block/ublkb$dev_id/integrity/protection_interval_bytes")" 512 && 35 _check_value "tag_size" "$(cat "/sys/block/ublkb$dev_id/integrity/tag_size")" 0 36 37 _ublk_del_dev "${dev_id}" 38} 39 40_test_integrity_capable_ip() { 41 local dev_id 42 43 dev_id=$(_add_ublk_dev -t null -u --no_auto_part_scan --integrity_capable --metadata_size 64 --pi_offset 56 --csum_type ip) 44 _check_add_dev "$TID" $? 45 46 _check_value "metadata_size" "$(_get_metadata_size "$dev_id" metadata_size)" 64 && 47 _check_value "pi_offset" "$(_get_metadata_size "$dev_id" pi_offset)" 56 && 48 _check_value "pi_tuple_size" "$(_get_metadata_size "$dev_id" pi_tuple_size)" 8 && 49 _check_value "device_is_integrity_capable" \ 50 "$(cat "/sys/block/ublkb$dev_id/integrity/device_is_integrity_capable")" 1 && 51 _check_value "format" "$(cat "/sys/block/ublkb$dev_id/integrity/format")" T10-DIF-TYPE3-IP && 52 _check_value "protection_interval_bytes" \ 53 "$(cat "/sys/block/ublkb$dev_id/integrity/protection_interval_bytes")" 512 && 54 _check_value "tag_size" "$(cat "/sys/block/ublkb$dev_id/integrity/tag_size")" 0 55 56 _ublk_del_dev "${dev_id}" 57} 58 59_test_integrity_reftag_t10dif() { 60 local dev_id 61 62 dev_id=$(_add_ublk_dev -t null -u --no_auto_part_scan --integrity_reftag --metadata_size 8 --csum_type t10dif) 63 _check_add_dev "$TID" $? 64 65 _check_value "metadata_size" "$(_get_metadata_size "$dev_id" metadata_size)" 8 && 66 _check_value "pi_offset" "$(_get_metadata_size "$dev_id" pi_offset)" 0 && 67 _check_value "pi_tuple_size" "$(_get_metadata_size "$dev_id" pi_tuple_size)" 8 && 68 _check_value "device_is_integrity_capable" \ 69 "$(cat "/sys/block/ublkb$dev_id/integrity/device_is_integrity_capable")" 0 && 70 _check_value "format" "$(cat "/sys/block/ublkb$dev_id/integrity/format")" T10-DIF-TYPE1-CRC && 71 _check_value "protection_interval_bytes" \ 72 "$(cat "/sys/block/ublkb$dev_id/integrity/protection_interval_bytes")" 512 && 73 _check_value "tag_size" "$(cat "/sys/block/ublkb$dev_id/integrity/tag_size")" 0 74 75 _ublk_del_dev "${dev_id}" 76} 77 78_test_nvme_csum() { 79 local dev_id 80 81 dev_id=$(_add_ublk_dev -t null -u --no_auto_part_scan --metadata_size 16 --csum_type nvme --tag_size 8) 82 _check_add_dev "$TID" $? 83 84 _check_value "metadata_size" "$(_get_metadata_size "$dev_id" metadata_size)" 16 && 85 _check_value "pi_offset" "$(_get_metadata_size "$dev_id" pi_offset)" 0 && 86 _check_value "pi_tuple_size" "$(_get_metadata_size "$dev_id" pi_tuple_size)" 16 && 87 _check_value "device_is_integrity_capable" \ 88 "$(cat "/sys/block/ublkb$dev_id/integrity/device_is_integrity_capable")" 0 && 89 _check_value "format" "$(cat "/sys/block/ublkb$dev_id/integrity/format")" EXT-DIF-TYPE3-CRC64 && 90 _check_value "protection_interval_bytes" \ 91 "$(cat "/sys/block/ublkb$dev_id/integrity/protection_interval_bytes")" 512 && 92 _check_value "tag_size" "$(cat "/sys/block/ublkb$dev_id/integrity/tag_size")" 8 93 94 _ublk_del_dev "${dev_id}" 95} 96 97_prep_test "null" "integrity params" 98 99_test_metadata_only 100_test_integrity_capable_ip 101_test_integrity_reftag_t10dif 102_test_nvme_csum 103 104_cleanup_test 105_show_result "$TID" $ERR_CODE 106