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

small fixes for LU-12103 ldiskfs: don't search large block range if disk full

    XMLWordPrintable

Details

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

    Description

      the original patches from LU-12103 has defects:
      1: the array for the "useless" loop counters should have 4 elements, one for each cr value

      { 0, 1, 2, 3 }
              /* cX loop didn't find blocks */
              atomic64_t s_bal_cX_failed[3];
              atomic64_t s_bal_cX_skipped[3];
              spinlock_t s_bal_lock;
      

      accessing the last element is almost impossible, but it is theoretically possible.

      2. the output to the sysfs mb_alloc_stat file should count useless and skipped loops from 0 to 3:

              seq_printf(seq, "\tuseless_c1_loops: %llu\n",
                         (unsigned long long)atomic64_read(&sbi->s_bal_cX_failed[0]));
              seq_printf(seq, "\tuseless_c2_loops: %llu\n",
                         (unsigned long long)atomic64_read(&sbi->s_bal_cX_failed[1]));
              seq_printf(seq, "\tuseless_c3_loops: %llu\n",
                         (unsigned long long)atomic64_read(&sbi->s_bal_cX_failed[2]));
              seq_printf(seq, "\tskipped_c1_loops: %llu\n",
                         (unsigned long long)atomic64_read(&sbi->s_bal_cX_skipped[0]));
              seq_printf(seq, "\tskipped_c2_loops: %llu\n",
                         (unsigned long long)atomic64_read(&sbi->s_bal_cX_skipped[1]));
              seq_printf(seq, "\tskipped_c3_loops: %llu\n",
                         (unsigned long long)atomic64_read(&sbi->s_bal_cX_skipped[2]));
      

      in the kernel messages, the counters named correctly:

      ++                      "mballoc: (%lu, %lu, %lu) useless c(0,1,2) loops",
      ++                              atomic64_read(&sbi->s_bal_cX_failed[0]),
      ++                              atomic64_read(&sbi->s_bal_cX_failed[1]),
      ++                              atomic64_read(&sbi->s_bal_cX_failed[2]));
      ++              ext4_msg(sb, KERN_INFO,
      ++                      "mballoc: (%lu, %lu, %lu) skipped c(0,1,2) loops",
      ++                              atomic64_read(&sbi->s_bal_cX_skipped[0]),
      ++                              atomic64_read(&sbi->s_bal_cX_skipped[1]),
      ++                              atomic64_read(&sbi->s_bal_cX_skipped[2]));
      

      Attachments

        Activity

          People

            zam Alexander Zarochentsev
            zam Alexander Zarochentsev
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: