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

lfs: data version changed during migration

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • None
    • Lustre 2.7.0
    • head of tree + LU-4840
    • 3
    • 16474

    Description

      Archiving, releasing then migrating leads to a "data version changed during migration":

      # cd /mnt/lustre
      # cp /usr/bin/zip .
      # lfs getstripe zip
      zip
      lmm_stripe_count:   1
      lmm_stripe_size:    1048576
      lmm_pattern:        1
      lmm_layout_gen:     0
      lmm_stripe_offset:  1
      	obdidx		 objid		 objid		 group
      	     1	             2	          0x2	             0
      # lfs hsm_archive zip
      # lfs hsm_release zip
      # lfs hsm_state zip
      zip: (0x0000000d) released exists archived, archive_id:1
      # lfs getstripe zip
      zip
      lmm_stripe_count:   1
      lmm_stripe_size:    1048576
      lmm_pattern:        80000001
      lmm_layout_gen:     1
      lmm_stripe_offset:  0
      # lfs migrate -o 0 zip
      /root/lustre-cleanup/lustre/utils/lfs: zip: data version changed during migration
      error: migrate: migrate stripe file 'zip' failed
      

      I think the file is restored first, then migrated, but its data version is not updated. Which lead to the following questions:

      • is it correct to force a restore of an archived file when asking for a migrate operation?
      • couldn't the file be restored directly to the proper OST/stripe size, ...?
      • although an error is reported, the file is present and complete, so the operation actually completed properly. What if that was another kind of error? Would we get a data corruption?

      Attachments

        Issue Links

          Activity

            [LU-5895] lfs: data version changed during migration
            adilger Andreas Dilger made changes -
            Link New: This issue is related to LU-5896 [ LU-5896 ]
            cfaber#1 Colin Faber [X] (Inactive) made changes -
            Assignee Original: Frank Zago [ fzago ] New: Ben Evans [ bevans ]
            jamesanunez James Nunez (Inactive) made changes -
            Fix Version/s Original: Lustre 2.10.0 [ 12204 ]
            pjones Peter Jones made changes -
            Assignee Original: WC Triage [ wc-triage ] New: Frank Zago [ fzago ]
            pjones Peter Jones made changes -
            Fix Version/s New: Lustre 2.10.0 [ 12204 ]
            Fix Version/s Original: Lustre 2.9.0 [ 11891 ]
            jgmitter Joseph Gmitter (Inactive) made changes -
            Fix Version/s Original: Lustre 2.8.0 [ 11113 ]
            jgmitter Joseph Gmitter (Inactive) made changes -
            Fix Version/s New: Lustre 2.8.0 [ 11113 ]
            adilger Andreas Dilger made changes -
            Fix Version/s New: Lustre 2.9.0 [ 11891 ]
            Fix Version/s Original: Lustre 2.8.0 [ 11113 ]

            I wrote the code for it and a basic test (not pushed). 2 problems:

            • llapi_fswap_layouts returns -524, which is not a valid error code. Logs indicate it is coming from cl_get_grouplock() in file.c:1660
            • if I disable the request for a group lock in llapi_fswap_layouts(), then the swap works, but the resulting file size is 0. Maybe there is some other operations to do (like setting the released flag on the volatile before swapping).
            fzago Frank Zago (Inactive) added a comment - I wrote the code for it and a basic test (not pushed). 2 problems: llapi_fswap_layouts returns -524, which is not a valid error code. Logs indicate it is coming from cl_get_grouplock() in file.c:1660 if I disable the request for a group lock in llapi_fswap_layouts(), then the swap works, but the resulting file size is 0. Maybe there is some other operations to do (like setting the released flag on the volatile before swapping).

            I will update that patch according to Henri's suggestion:

            Wouldn't it make sense to migrate released files like this:
            - Open volatile file with O_LOV_DELAY_CREAT
            - Assign it the desired stripe
            - Swap layouts with the released file
            
            This is totally untested, but I believe it could work and prevent from having to restore released files for the sole purpose of migrating them.
            

            This is however depending on "LU-6081 user: Introducing llapi_create_volatile_param()", which itself will need "LU-5657 allow the use of rst2man to build man pages"

            fzago Frank Zago (Inactive) added a comment - I will update that patch according to Henri's suggestion: Wouldn't it make sense to migrate released files like this: - Open volatile file with O_LOV_DELAY_CREAT - Assign it the desired stripe - Swap layouts with the released file This is totally untested, but I believe it could work and prevent from having to restore released files for the sole purpose of migrating them. This is however depending on " LU-6081 user: Introducing llapi_create_volatile_param()", which itself will need " LU-5657 allow the use of rst2man to build man pages"

            People

              bevans Ben Evans (Inactive)
              fzago Frank Zago (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              10 Start watching this issue

              Dates

                Created:
                Updated: