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

remove ojbects from restriper->mdr_migrating list under restriper's lock

Details

    • Bug
    • Resolution: Unresolved
    • Minor
    • None
    • Lustre 2.14.0, Lustre 2.16.1
    • None
    • 3
    • 9223372036854775807

    Description

      mdt_restripe_migrate_add() adds a stripe to migrating list of a restriper under restriper->mdr_lock:

      void mdt_restripe_migrate_add(struct mdt_thread_info *info,
      ..
              spin_lock(&restriper->mdr_lock);
      ..
                      list_add_tail(&o->mot_restripe_linkage,
                                    &restriper->mdr_migrating);
      ..
              spin_unlock(&restriper->mdr_lock);
      

      removal of a stripe from the migrating list is executed under mdt->mdt_lock (in mdt_restripe_migrate() and in mdt_restripe_migrate_finish()):

      static int mdt_restripe_migrate(struct mdt_thread_info *info)
      ..
                      spin_lock(&mdt->mdt_lock);
      	        stripe->mot_restriping = 0;
      	        list_del_init(&stripe->mot_restripe_linkage);
                      spin_unlock(&mdt->mdt_lock);
      ..
      

      That may cause list corruption.

      Attachments

        Activity

          People

            vsaveliev Vladimir Saveliev
            vsaveliev Vladimir Saveliev
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: