From: Li Dongyang Date: Fri, 13 Aug 2021 08:58:46 +0000 (+1000) Subject: LU-14912 obdclass: prefer T10 checksum if the target supports it X-Git-Tag: 2.14.55~90 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=5e9059e08aec6fb36de6788465978de0e962b956;p=fs%2Flustre-release.git LU-14912 obdclass: prefer T10 checksum if the target supports it If the target actually has T10PI support, we prefer to use that T10 checksum even it's not the fastest on the client, given checksum_type is not explicitly set. Change-Id: If91217881fcadbc84d1e360e65648344f5ac2447 Test-Parameters: trivial Signed-off-by: Li Dongyang Reviewed-on: https://review.whamcloud.com/44657 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Tested-by: Andreas Dilger Reviewed-by: Li Xi --- diff --git a/lustre/include/obd_cksum.h b/lustre/include/obd_cksum.h index 8234d0b..029d1a7 100644 --- a/lustre/include/obd_cksum.h +++ b/lustre/include/obd_cksum.h @@ -121,6 +121,13 @@ enum cksum_types obd_cksum_type_select(const char *obd_name, if (preferred & cksum_types) return preferred; + /* + * Server reporting a single T10 checksum type + * means the target actually supports T10-PI. + */ + if (hweight32(cksum_types & OBD_CKSUM_T10_ALL) == 1) + return cksum_types & OBD_CKSUM_T10_ALL; + flag = obd_cksum_type_pack(obd_name, cksum_types); return obd_cksum_type_unpack(flag);