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

Data can't be striped across all the OSTs correctly by running "lfs setstripe -c -1 -i n" (n>0)

Details

    • Bug
    • Resolution: Fixed
    • Blocker
    • Lustre 2.4.0
    • Lustre 2.4.0
    • 3
    • 6940

    Description

      I found this problem during the investigation on LU-2809. While running "lfs setstripe -c -1 -i n testfile", if ost index n doesn't start from 0, it shows that data can't be striped across all the OSTs and OST0 is always ignored.

      Attachments

        Issue Links

          Activity

            [LU-2871] Data can't be striped across all the OSTs correctly by running "lfs setstripe -c -1 -i n" (n>0)
            emoly.liu Emoly Liu added a comment -

            Landed for 2.4

            emoly.liu Emoly Liu added a comment - Landed for 2.4
            emoly.liu Emoly Liu added a comment -

            Sure, I made the both changes in the patch and will update it per Ned Bass' advice later. Thanks!

            emoly.liu Emoly Liu added a comment - Sure, I made the both changes in the patch and will update it per Ned Bass' advice later. Thanks!

            liuying, it's better to mark index used after successful lod_qos_declare_object_on(). and I don't think this is an option to the change by Zhenyu Xu, I think the both changes should be applied.

            bzzz Alex Zhuravlev added a comment - liuying, it's better to mark index used after successful lod_qos_declare_object_on(). and I don't think this is an option to the change by Zhenyu Xu, I think the both changes should be applied.
            emoly.liu Emoly Liu added a comment - Patch is at http://review.whamcloud.com/5554
            emoly.liu Emoly Liu added a comment -

            I will add a sanity test for this case.

            emoly.liu Emoly Liu added a comment - I will add a sanity test for this case.
            emoly.liu Emoly Liu added a comment - - edited

            Another way, run lod_qos_ost_in_use() after lod_qos_is_ost_used() check, right?

            diff --git a/lustre/lod/lod_qos.c b/lustre/lod/lod_qos.c
            index 2b81ad8..92b3b36 100644
            --- a/lustre/lod/lod_qos.c
            +++ b/lustre/lod/lod_qos.c
            @@ -887,6 +887,7 @@ repeat_find:
                             */
                            if (lod_qos_is_ost_used(env, ost_idx, stripe_num))
                                    continue;
            +               lod_qos_ost_in_use(env, stripe_num, ost_idx);
             
                            /* Drop slow OSCs if we can, but not for requested start idx.
                             *
            
            emoly.liu Emoly Liu added a comment - - edited Another way, run lod_qos_ost_in_use() after lod_qos_is_ost_used() check, right? diff --git a/lustre/lod/lod_qos.c b/lustre/lod/lod_qos.c index 2b81ad8..92b3b36 100644 --- a/lustre/lod/lod_qos.c +++ b/lustre/lod/lod_qos.c @@ -887,6 +887,7 @@ repeat_find: */ if (lod_qos_is_ost_used(env, ost_idx, stripe_num)) continue ; + lod_qos_ost_in_use(env, stripe_num, ost_idx); /* Drop slow OSCs if we can, but not for requested start idx. *

            People

              emoly.liu Emoly Liu
              emoly.liu Emoly Liu
              Votes:
              0 Vote for this issue
              Watchers:
              10 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: