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

fallocate does not extend uninitialized PFL components

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: Lustre 2.14.0
    • Fix Version/s: Lustre 2.14.0
    • Labels:
      None
    • Severity:
      3
    • Rank (Obsolete):
      9223372036854775807

      Description

      I was testing "fallocate" as a fast way to allocate space in the file, but I found that it only allocated space on the first (initialized) component of a PFL file. It does not allocate space for any of the later components if those components are uninitialized.

      # lfs setstripe -E1M -c1 -E16M -c3 -Eeof -c 4 /mnt/testfs/pflfile
      # ls -l /mnt/testfs/pflfile
      0 -rw-r--r--. 1 root 0 Dec  5 13:24 /mnt/testfs/pflfile
      # fallocate -l $((1048576 * 1024)) /mnt/testfs/pflfile
      # ls -l /mnt/testfs/pflfile
      1024 -rw-r--r--. 1 root 1048576 Dec  5 13:33 /mnt/testfs/pflfile
      # lfs getstripe /mnt/testfs/pflfile
      /mnt/testfs/pflfile
        lcm_layout_gen:    3
        lcm_mirror_count:  1
        lcm_entry_count:   3
          lcme_id:             1
          lcme_mirror_id:      0
          lcme_flags:          init
          lcme_extent.e_start: 0
          lcme_extent.e_end:   1048576
            lmm_stripe_count:  1
            lmm_stripe_size:   1048576
            lmm_pattern:       raid0
            lmm_layout_gen:    0
            lmm_stripe_offset: 3
            lmm_objects:
            - 0: { l_ost_idx: 3, l_fid: [0x100030000:0x60a:0x0] }
      
          lcme_id:             2
          lcme_mirror_id:      0
          lcme_flags:          0
          lcme_extent.e_start: 1048576
          lcme_extent.e_end:   16777216
            lmm_stripe_count:  3
            lmm_stripe_size:   1048576
            lmm_pattern:       raid0
            lmm_layout_gen:    0
            lmm_stripe_offset: -1
      
          lcme_id:             3
          lcme_mirror_id:      0
          lcme_flags:          0
          lcme_extent.e_start: 16777216
          lcme_extent.e_end:   1073741824
            lmm_stripe_count:  4
            lmm_stripe_size:   2097152
            lmm_pattern:       raid0
            lmm_layout_gen:    0
            lmm_stripe_offset: -1
      

      If the file is truncated, the later components are initialized:

      # truncate -s 1023M /mnt/testfs/pflfile
      # lfs getstripe /mnt/testfs/pflfile
      /mnt/testfs/pflfile
        lcm_layout_gen:    4
        lcm_mirror_count:  1
        lcm_entry_count:   3
          lcme_id:             1
          lcme_mirror_id:      0
          lcme_flags:          init
          lcme_extent.e_start: 0
          lcme_extent.e_end:   1048576
            lmm_stripe_count:  1
            lmm_stripe_size:   1048576
            lmm_pattern:       raid0
            lmm_layout_gen:    0
            lmm_stripe_offset: 3
            lmm_objects:
            - 0: { l_ost_idx: 3, l_fid: [0x100030000:0x60a:0x0] }
      
          lcme_id:             2
          lcme_mirror_id:      0
          lcme_flags:          init
          lcme_extent.e_start: 1048576
          lcme_extent.e_end:   16777216
            lmm_stripe_count:  3
            lmm_stripe_size:   1048576
            lmm_pattern:       raid0
            lmm_layout_gen:    65535
            lmm_stripe_offset: 0
            lmm_objects:
            - 0: { l_ost_idx: 0, l_fid: [0x100000000:0x1ca:0x0] }
            - 1: { l_ost_idx: 1, l_fid: [0x100010000:0x8aa:0x0] }
            - 2: { l_ost_idx: 2, l_fid: [0x100020000:0x6aa:0x0] }
      
          lcme_id:             3
          lcme_mirror_id:      0
          lcme_flags:          init
          lcme_extent.e_start: 16777216
          lcme_extent.e_end:   1073741824
            lmm_stripe_count:  4
            lmm_stripe_size:   2097152
            lmm_pattern:       raid0
            lmm_layout_gen:    65535
            lmm_stripe_offset: 0
            lmm_objects:
            - 0: { l_ost_idx: 0, l_fid: [0x100000000:0x1cb:0x0] }
            - 1: { l_ost_idx: 1, l_fid: [0x100010000:0x8ab:0x0] }
            - 2: { l_ost_idx: 2, l_fid: [0x100020000:0x6ab:0x0] }
            - 3: { l_ost_idx: 3, l_fid: [0x100030000:0x60b:0x0] }
      
      # lfs df
      UUID                   1K-blocks        Used   Available Use% Mounted on
      testfs-MDT0000_UUID       125368        2596      111536   3% /mnt/testfs[MDT:0]
      testfs-MDT0001_UUID       125368        3112      111020   3% /mnt/testfs[MDT:1]
      testfs-OST0000_UUID       325368       13796      284412   5% /mnt/testfs[OST:0]
      testfs-OST0001_UUID       325368       14304      283904   5% /mnt/testfs[OST:1]
      testfs-OST0002_UUID       325368       13664      284544   5% /mnt/testfs[OST:2]
      testfs-OST0003_UUID       325368       14692      283516   5% /mnt/testfs[OST:3]
      
      filesystem_summary:      1301472       56456     1136376   5% /mnt/testfs
      

      If the fallocate is run again, this time the space is allocated:

      # fallocate -l $((1048576 * 1024)) /mnt/testfs/pflfile
      # ls -l /mnt/testfs/pflfile
      1048576 -rw-r--r--. 1 root 1073741824 Dec  5 13:37 /mnt/testfs/pflfile
      # lfs df
      UUID                   1K-blocks        Used   Available Use% Mounted on
      testfs-MDT0000_UUID       125368        2596      111536   3% /mnt/testfs[MDT:0]
      testfs-MDT0001_UUID       125368        3112      111020   3% /mnt/testfs[MDT:1]
      testfs-OST0000_UUID       325368      276964       21244  93% /mnt/testfs[OST:0]
      testfs-OST0001_UUID       325368      277472       20736  94% /mnt/testfs[OST:1]
      testfs-OST0002_UUID       325368      276832       21376  93% /mnt/testfs[OST:2]
      testfs-OST0003_UUID       325368      272740       25468  92% /mnt/testfs[OST:3]
      
      filesystem_summary:      1301472     1104008       88824  93% /mnt/testfs
      

        Attachments

          Activity

            People

            Assignee:
            wshilong Wang Shilong (Inactive)
            Reporter:
            adilger Andreas Dilger
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: