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

change ladvise wire protocol for lockahead and future usage

XMLWordPrintable

    • Icon: Improvement Improvement
    • Resolution: Fixed
    • Icon: Minor Minor
    • Lustre 2.9.0
    • None
    • None
    • 9223372036854775807

      As a continuation of LU-4931 "New feature of giving server/storage side advice of accessing file" and LU-4865 "osd-zfs: increase object block size dynamically as object grows" it is useful to be able to specify the ZFS blocksize for a file directly from the client, so that the OSS doesn't have to guess at this itself.

      This can be done via the "ladvise" functionality. One option is to pass the blocksize (a power-of-two value) along with the RANDOM hint on a newly-created file. This could use 8 bits of lla_padding to store the log2 blocksize, giving a maximum blocksize up to 2^255 bytes.

      struct lu_ladvise {
      	__u64 lla_advice;
      	__u64 lla_start;
      	__u64 lla_end;
              __u8  lla_blockbits;
      	__u8  lla_padding1;
      	__u16 lla_padding2;
      	__u32 lla_padding3;
      };
      

      It isn't clear if there are valid use cases for non-power-of-two RANDOM IO hints at the server, which would require using a different encoding (e.g. some multiple of a blocksize), since that could also be handled at the client by sending the underlying power-of-two blocksize.

            wc-triage WC Triage
            adilger Andreas Dilger
            Votes:
            0 Vote for this issue
            Watchers:
            9 Start watching this issue

              Created:
              Updated:
              Resolved: