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

Double mutex unlock in lod_add_device

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Minor
    • Lustre 2.8.0
    • None
    • None
    • 3
    • 9223372036854775807

    Description

      Seems there's a double mutex unlock on error path in lod_add_device.
      Also in the same vein, there seems to be double reference drop

              cfs_bitmap_set(ltd->ltd_tgt_bitmap, index);
              ltd->ltd_tgtnr++;
              mutex_unlock(&ltd->ltd_mutex);
              lod_putref(lod, ltd);
      ...
              if (!for_ost && lod->lod_initialized) {
                      rc = lod_sub_init_llog(env, lod, tgt_desc->ltd_tgt);
                      if (rc != 0) {
                              CERROR("%s: cannot start llog on %s:rc = %d\n",
                                     lod2obd(lod)->obd_name, osp, rc);
      **                        GOTO(out_pool, rc);
                      }
              }
              rc = lfsck_add_target(env, lod->lod_child, d, exp, index, for_ost);
              if (rc != 0) {
                      CERROR("Fail to add LFSCK target: name = %s, type = %s, "
                             "index = %u, rc = %d\n", osp, type, index, rc);
      **                GOTO(out_fini_llog, rc);
      ...
      out_fini_llog:
              lod_sub_fini_llog(env, tgt_desc->ltd_tgt,
                                tgt_desc->ltd_recovery_thread);
      out_pool:
              lod_ost_pool_remove(&lod->lod_pool_info, index);
      out_mutex:
              mutex_unlock(&ltd->ltd_mutex);
              lod_putref(lod, ltd);
      

      So we do double unlock and double reference put in those two cases which is probably a pretty bad idea,

      Attachments

        Activity

          People

            di.wang Di Wang (Inactive)
            green Oleg Drokin
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: