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

broken inheritance of default striping

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not a Bug
    • Icon: Trivial Trivial
    • Lustre 2.11.0, Lustre 2.10.4
    • Lustre 2.10.0
    • None
    • 3
    • 9223372036854775807

      I think we have a problem with inheritance in the following patch
      http://review.whamcloud.com/#/c/19041/23/lustre/lod/lod_object.c,unified
      from LU-7660

      The problem code is below:

      3117	+»       /* if parent doesn't provide all defaults, striping from fs default */
      3118	+»       if (d->lod_md_root != NULL &&
      3119	+»           (lc->ldo_stripenr == 0 ||
      3120	+»            lc->ldo_stripe_size == 0 ||
      3121	+»            lc->ldo_stripe_offset == LOV_OFFSET_DEFAULT ||
      3122	+»            lc->ldo_pool == NULL)) {
      3123	+»       »       memset(lds, 0, sizeof(*lds));
      3124	+»       »       lod_get_default_lov_striping(env, d->lod_md_root, lds);
      3125	+»       »       lod_striping_from_default(lc, lds, child_mode);
      3126	+»       }
      

      while it is correct about stripe number, count and offset checks, it is not correct about pool check. Since pool is optional value, it is not right to ignore parent layout just because it has no pool.

      For example, I set some striping on the directory and expect all files/subdirs inside to have the same striping, but in fact that will not work, striping will be taken from fs root. Moreover, default fs striping may have no pool as well but still be used prior the parent striping.

      I've encountered such problem while porting DoM patches, because it is quite visible when DOM layout is used or not as expected

            wc-triage WC Triage
            tappro Mikhail Pershin
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated:
              Resolved: