Details
-
Improvement
-
Resolution: Fixed
-
Major
-
None
-
9223372036854775807
Description
Some checksum types might not work correctly even though they are available
options and have the best speeds during test. In these circumstances, users
might want to use a certain checksum type which is known to be functional.
However, "lctl conf_param XXX-YYY.osc.checksum_type=ZZZ" won't help to enforce
a certain checksum type, because the selected checksum type is determined
during OSC connection, which will overwrite the LLOG parameter.
Following is the design of solving the problem:
To solve this problem, whenever a valid checksum type is set by "lctl
conf_param" or "lctl set_param", it is remembered as the perferred checksum
type for the OSC. During connection process, if that checksum type is
available, that checksum type will be selected as the RPC checksum type
regardless of its speed.
The semantics of interface /proc/fs/lustre/osc/*/checksum_type is changed for
a little bit. If a wrong checksum name is being written into this entry,
-EINVAL will be returned as before. If the written string is a valid checksum
name, even though the checksum type is not supported by this OSC/OST pair, the
checksum type will still be remembered as the perferred checksum type, and
return value will be -ENOTSUPP. Whenever connecting/reconnecting happens, if
perferred checksum type is availabe, it will be used for the RPC checksum.