Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-14912

client picking other checksum type over T10PI

Details

    • Improvement
    • Resolution: Fixed
    • Minor
    • Lustre 2.15.0
    • None
    • None
    • 9223372036854775807

    Description

      When server indicates it supports T10 checksums, the client could still pick other check types over T10PI as the other types getting better numbers during client benchmark.

      Attachments

        Issue Links

          Activity

            [LU-14912] client picking other checksum type over T10PI
            pjones Peter Jones added a comment -

            Landed for 2.15

            pjones Peter Jones added a comment - Landed for 2.15

            "Oleg Drokin <green@whamcloud.com>" merged in patch https://review.whamcloud.com/44657/
            Subject: LU-14912 obdclass: prefer T10 checksum if the target supports it
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: 5e9059e08aec6fb36de6788465978de0e962b956

            gerrit Gerrit Updater added a comment - "Oleg Drokin <green@whamcloud.com>" merged in patch https://review.whamcloud.com/44657/ Subject: LU-14912 obdclass: prefer T10 checksum if the target supports it Project: fs/lustre-release Branch: master Current Patch Set: Commit: 5e9059e08aec6fb36de6788465978de0e962b956

            "Li Dongyang <dongyangli@ddn.com>" uploaded a new patch: https://review.whamcloud.com/44657
            Subject: LU-14912 obdclass: prefer T10 checksum if the target supports it
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: 0c6d2cf5b4cc449253965cbd527e6a2f6ef0ee3e

            gerrit Gerrit Updater added a comment - "Li Dongyang <dongyangli@ddn.com>" uploaded a new patch: https://review.whamcloud.com/44657 Subject: LU-14912 obdclass: prefer T10 checksum if the target supports it Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: 0c6d2cf5b4cc449253965cbd527e6a2f6ef0ee3e

            T10-PI checksums were only added in 2.12, so I don't think it is reasonable for the server to return only a single t10crc4K checksum type, because this would break interoperability for 2.10.x clients.

            One option for selecting the proper T10-PI checksum type automatically on the client, is to detect if only a single OBD_CKSUM_T10* type is returned to the client, then this indicates the server has T10-PI enabled (otherwise it would return multiple OBD_CKSUM_T10* types), and it should prefer this over other checksum types.

            For example, on my test VM (no T10-PI support in the storage) it reports multiple t10* checksum types enabled:

            # lctl get_param osc.*.checksum_type
            osc.testfs-OST0000-osc-ffff9ac928b3d800.checksum_type=
            crc32 adler crc32c t10ip512 [t10ip4K] t10crc512 t10crc4K 
            

            while on a client where T10-PI hardware support is enabled on the server the client reports:

            # lctl get_param osc.*.checksum_type
            osc.testfs-OST0000-osc-ffff9ac928b3d800.checksum_type=
            crc32 adler [crc32c] t10crc4K
            

            In this case, the client should prefer the single t10crc4K checksum type (if no type was specified) that matches the server hardware checksum type, even though crc32c may be somewhat faster.

            adilger Andreas Dilger added a comment - T10-PI checksums were only added in 2.12, so I don't think it is reasonable for the server to return only a single t10crc4K checksum type, because this would break interoperability for 2.10.x clients. One option for selecting the proper T10-PI checksum type automatically on the client, is to detect if only a single OBD_CKSUM_T10* type is returned to the client, then this indicates the server has T10-PI enabled (otherwise it would return multiple OBD_CKSUM_T10* types), and it should prefer this over other checksum types. For example, on my test VM (no T10-PI support in the storage) it reports multiple t10* checksum types enabled: # lctl get_param osc.*.checksum_type osc.testfs-OST0000-osc-ffff9ac928b3d800.checksum_type= crc32 adler crc32c t10ip512 [t10ip4K] t10crc512 t10crc4K while on a client where T10-PI hardware support is enabled on the server the client reports: # lctl get_param osc.*.checksum_type osc.testfs-OST0000-osc-ffff9ac928b3d800.checksum_type= crc32 adler [crc32c] t10crc4K In this case, the client should prefer the single t10crc4K checksum type (if no type was specified) that matches the server hardware checksum type, even though crc32c may be somewhat faster.

            People

              dongyang Dongyang Li
              dongyang Dongyang Li
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: