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

Lustre don't able to start if one interface down.

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Blocker
    • None
    • Lustre 2.13.0
    • None
    • 3
    • 9223372036854775807

    Description

      Landing upstream code related to interface scan broke a starting lustre in case one or more interfaces in down.

      [ 2969.530212] LNetError: 15492:0:(o2iblnd.c:2892:kiblnd_create_dev()) Can’t query IPoIB interface eth2: it’s down
      

      attached fix works for me.

      diff --git a/lnet/klnds/o2iblnd/o2iblnd.c b/lnet/klnds/o2iblnd/o2iblnd.c
      index 6da280e..f831a46 100644
      --- a/lnet/klnds/o2iblnd/o2iblnd.c
      +++ b/lnet/klnds/o2iblnd/o2iblnd.c
      @@ -2888,16 +2888,16 @@ kiblnd_create_dev(char *ifname)
      
                      flags = dev_get_flags(netdev);
                      if (!(flags & IFF_UP)) {
      -                       CERROR("Can't query IPoIB interface %s: it's down\n",
      +                       CWARN("Can't query IPoIB interface %s: it's down\n",
                                     netdev->name);
      -                       goto unlock;
      +                       continue;
                      }
      
                      in_dev = __in_dev_get_rtnl(netdev);
                      if (!in_dev) {
                              CWARN("Interface %s has no IPv4 status.\n",
                                    netdev->name);
      -                       goto unlock;
      +                       continue;
                      }
      
                      for_ifa(in_dev)
      @@ -2916,6 +2916,7 @@ kiblnd_create_dev(char *ifname)
                              }
                      endfor_ifa(in_dev);
              }
      +unlock:
              rtnl_unlock();
      
              if (!dev) {
      @@ -2938,8 +2939,7 @@ kiblnd_create_dev(char *ifname)
      
              list_add_tail(&dev->ibd_list, &kiblnd_data.kib_devs);
              return dev;
      -unlock:
      -       rtnl_unlock();
      +
       free_dev:
              LIBCFS_FREE(dev, sizeof(*dev));
              return NULL;
      

      Attachments

        Issue Links

          Activity

            People

              wc-triage WC Triage
              shadow Alexey Lyashkov
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: