Format of the gpfs.readReplicaRule string
Use this information to learn about the grammar of the gpfs.readReplicaRule string, which is in EBNF (Extended Backus-Naur Form) notation.
rule |
= block_sub_rule | file_sub_rule |
(block_sub_rule, "; ", file_sub_rule); Note: The block_sub_rule applies to the specified blocks only; the file_sub_rule applies to all of
the blocks in the file; sub_rules are evaluated left to right and the first sub_rule that matches a
block is applied to the block and the rest of the sub_rules are ignored.
|
block_sub_rule |
= ("b=", block_list, " r=", replica_index),
{"; ", block_sub_rule} |
block_list | = (block_index | block_index_range), {",", block_list}; |
block_index | = "0" | "1" | "2" | ...; Note: block_index beyond last block is ignored.
|
block_index_range | = block_index, ":", block_index; |
replica_index | = ("0" | "1" | "2" | "3" | "x"), {",",replica_index}; Note: "x" selects the last valid
replica in the replica set; if a block has valid replicas, but the replica_index does not resolve to
a valid replica, then the block read returns an error.
|
file_sub_rule |
= ("d=", disk_exclusion_list) | ("r=", replica_index)
Note: disk_exclusion_list discards matching disk addresses from the replica set.
|
disk_exclusion_list | = (disk_num | disk_num_range), {",", disk_exclusion_list}; |
disk_num | = "1" | "2" | ...; |
disk_num_range | = disk_num, ":", disk_num; |
When a data block of a file is read from disk, all of the replica disk addresses of the data block are filtered by either an existing gpfs.readReplicaRule extended attribute or an existing diskReadExclusionList configuration option. If both are present, then the gpfs.readReplicaRule extended attribute is evaluated first. If it fails to match the block that is being read, then the diskReadExclusionList configuration option is applied instead. The data block is then read using only the filtered set of replica disk addresses. If the read fails due to an I/O error or because the filtered set of replica disk addresses is empty, then the error is returned to the application.
For more information, see Example of using the gpfs.readReplicaRule string.