Skip to content
Snippets Groups Projects
  1. May 03, 2018
  2. Apr 16, 2018
  3. Apr 05, 2018
  4. Nov 27, 2017
  5. Nov 17, 2017
  6. Sep 06, 2017
  7. Aug 16, 2017
  8. Aug 10, 2017
    • Amir Shehata's avatar
      LU-9203 lnet: fix lnet_cpt_of_md() · fe993a1f
      Amir Shehata authored
      The intent of this function is to get the cpt nearest to the
      memory described by the MD.
      
      There are three scenarios that must be handled:
      1. The memory is described by an lnet_kiov_t structure
       -> this describes kernel pages
      2. The memory is described by a struct kvec
       -> this describes kernel logical addresses
      3. The memory is a contiguous buffer allocated via vmalloc
      
      For case 1 and 2 we look at the first vector which contains
      the data to be DMAed, taking into consideration the msg offset.
      
      For case 2 we have to take the extra step of translating the kernel
      logical address to a physical page using virt_to_page() macro.
      
      For case 3 we need to use is_vmalloc_addr() and vmalloc_to_page to
      get the associated page to be able to identify the CPT.
      
      o2iblnd uses the same strategy when it's mapping the memory into
      a scatter/gather list. Therefore, lnet_kvaddr_to_page() common
      function was created to be used by both the o2iblnd and
      lnet_cpt_of_md()
      
      kmap_to_page() performs the high memory check which
      lnet_kvaddr_to_page() does. However, unlike the latter it handles
      the highmem case properly instead of calling LBUG. It's not
      100% clear why the code was written that way. Since the legacy
      code will need to still be maintained, adding kmap_to_page() will
      not simplify the code. Furthermore, the behavior for kernels
      which export kmap_to_page() will be different from kernels which
      do not. At worst calling kmap_to_page() might mask some problems
      which would've been caught by the LBUG earlier on. However, at
      the time of this fix, that LBUG has never been observed.
      
      Lustre-change: https://review.whamcloud.com/28165
      
      
      Lustre-commit: 43b0e632
      
      Signed-off-by: default avatarAmir Shehata <amir.shehata@intel.com>
      Change-Id: I2c67e5df77d60112bf27f900e0325d189f193aed
      Reviewed-by: default avatarDmitry Eremin <dmitry.eremin@intel.com>
      Reviewed-by: default avatarSonia Sharma <sonia.sharma@intel.com>
      Reviewed-by: default avatarOlaf Weber <olaf.weber@hpe.com>
      Signed-off-by: default avatarMinh Diep <minh.diep@intel.com>
      Reviewed-on: https://review.whamcloud.com/28400
      
      
      Tested-by: Jenkins
      Tested-by: default avatarMaloo <hpdd-maloo@intel.com>
      Reviewed-by: default avatarJohn L. Hammond <john.hammond@intel.com>
      fe993a1f
    • Andreas Dilger's avatar
      LU-9728 osd: use GFP_HIGHUSER for non-local IO · a4c7545f
      Andreas Dilger authored
      When the obdfilter code was split into separate OFD and OSD modules,
      the bulk IO page allocation was implemented to use GFP_NOFS to avoid
      allocations recursing into the filesystem and causing deadlocks.
      
      However, this is only possible if the RPC is coming from a local
      client, as we might end up waiting on a page sent in the request we're
      serving. Local RPCs use __GFP_HIGHMEM so that the pages can use all of
      the available memory on the OSS on 32-bit machines.
      
      It is possible to use more aggressive GFP_HIGHUSER flags for non-local
      clients to be able to generate more memory pressure on the OSS and
      allow inactive pages to be reclaimed, since the OSS doesn't have any
      other processes or allocations that generate memory reclaim pressure.
      
      See also b=17576 (bdf50dc9) and b=19529 (3dcf18d3) for details.
      
      The patch also implements an LNet function to determine if a client NID
      is local or not.  This becomes more complex in the LNet Multi-Rail world
      and it is really LNet's job to handle NIDs, not that of Lustre.
      
      Lustre-change: https://review.whamcloud.com/27908
      
      
      Lustre-commit: b0ab95d6
      
      Signed-off-by: default avatarAndreas Dilger <andreas.dilger@intel.com>
      Change-Id: I2806c9c5c2fe269669eafdafaf2310924c3ebbe5
      Reviewed-by: default avatarDmitry Eremin <dmitry.eremin@intel.com>
      Reviewed-by: default avatarPatrick Farrell <paf@cray.com>
      Signed-off-by: default avatarMinh Diep <minh.diep@intel.com>
      Reviewed-on: https://review.whamcloud.com/28318
      
      
      Tested-by: Jenkins
      Tested-by: default avatarMaloo <hpdd-maloo@intel.com>
      Reviewed-by: default avatarJohn L. Hammond <john.hammond@intel.com>
      a4c7545f
  9. Aug 07, 2017
  10. Jun 16, 2017
  11. Jun 10, 2017
    • Dmitry Eremin's avatar
      LU-8703 libcfs: make tolerant to offline CPUs and empty NUMA nodes · 42bf19a5
      Dmitry Eremin authored
      
      Rework CPU partition code in the way of make it more tolerant to
      offline CPUs and empty nodes.
      
      For example, in KNL:
      available: 8 nodes (0-7)
      node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
      node 0 size: 24472 MB
      node 0 free: 12409 MB
      node 1 cpus: 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
      node 1 size: 24576 MB
      node 1 free: 20388 MB
      node 2 cpus: 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
      node 2 size: 24576 MB
      node 2 free: 20621 MB
      node 3 cpus: 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271
      node 3 size: 24576 MB
      node 3 free: 21183 MB
      node 4 cpus:
      node 4 size: 4096 MB
      node 4 free: 3982 MB
      node 5 cpus:
      node 5 size: 4096 MB
      node 5 free: 3982 MB
      node 6 cpus:
      node 6 size: 4096 MB
      node 6 free: 3982 MB
      node 7 cpus:
      node 7 size: 4096 MB
      node 7 free: 3981 MB
      node distances:
      node   0   1   2   3   4   5   6   7
        0:  10  21  21  21  31  41  41  41
        1:  21  10  21  21  41  31  41  41
        2:  21  21  10  21  41  41  31  41
        3:  21  21  21  10  41  41  41  31
        4:  31  41  41  41  10  41  41  41
        5:  41  31  41  41  41  10  41  41
        6:  41  41  31  41  41  41  10  41
        7:  41  41  41  31  41  41  41  10
      
      Contain the fix for LU-8492 ptlrpc: Correctly calculate hrp->hrp_nthrs
      Fix an error code return which was introduced in
      commit def25e9c
      
      Change-Id: I7f64a20ee009a88e836f592ce044400f07ffbcdd
      Signed-off-by: default avatarDmitry Eremin <dmitry.eremin@intel.com>
      Reviewed-on: https://review.whamcloud.com/23222
      
      
      Reviewed-by: default avatarAmir Shehata <amir.shehata@intel.com>
      Reviewed-by: default avatarJames Simmons <uja.ornl@yahoo.com>
      Tested-by: Jenkins
      Tested-by: default avatarMaloo <hpdd-maloo@intel.com>
      Reviewed-by: default avatarOleg Drokin <oleg.drokin@intel.com>
      42bf19a5
  12. Jun 03, 2017
  13. May 29, 2017
  14. May 20, 2017
  15. May 16, 2017
  16. May 12, 2017
  17. May 09, 2017
  18. May 05, 2017
    • Olaf Weber's avatar
      LU-9119 lnet: rename LNET_MAX_INTERFACES · 057d89f5
      Olaf Weber authored
      
      LNET_MAX_INTERFACES is the number of interfaces supported by
      interface bonding in the ksocknal LND. It shows up in LNet
      because a number of data structures are shared between LNDs.
      
      Rename it to LNET_NUM_INTERFACES to reduce the confusion of
      what it does.
      
      Test-Parameters: trivial
      Signed-off-by: default avatarOlaf Weber <olaf@sgi.com>
      Change-Id: Ibc1d85a379d6616eb1db2fcb54aaffc835ffa9f4
      Reviewed-on: https://review.whamcloud.com/26693
      
      
      Tested-by: Jenkins
      Tested-by: default avatarMaloo <hpdd-maloo@intel.com>
      Reviewed-by: default avatarDoug Oucharek <doug.s.oucharek@intel.com>
      Reviewed-by: default avatarOleg Drokin <oleg.drokin@intel.com>
      057d89f5
    • Olaf Weber's avatar
      LU-9119 lnet: loopback NID in lnet_select_pathway() · 908ce58a
      Olaf Weber authored
      
      In lnet_select_pathway() sending to the loopback NID is handled
      as a special case, because there are no credits involved. (The
      loopback NID doesn't use credits, and therefore does not have
      any credits. If a message goes through the credit-managing code
      it therefore ends up waiting indefinitely for credits to become
      available.)
      
      The check whether we're sending over the loopback NID must be
      done after we've completed choosing the NI to send over. In its
      present location it only handles the case where the loopback
      NID was explicitly passed in as the source NID.
      
      (Lustre does not exercise this code path during normal operation,
      the bug was encountered while testing code for the peer discovery
      feature.)
      
      Test-Parameters: trivial
      Signed-off-by: default avatarOlaf Weber <olaf@sgi.com>
      Change-Id: Ifa25abf508214ae363a2f1bb04ffeab1891a2564
      Reviewed-on: https://review.whamcloud.com/26692
      
      
      Tested-by: Jenkins
      Tested-by: default avatarMaloo <hpdd-maloo@intel.com>
      Reviewed-by: default avatarDoug Oucharek <doug.s.oucharek@intel.com>
      Reviewed-by: default avatarOleg Drokin <oleg.drokin@intel.com>
      908ce58a
    • Olaf Weber's avatar
      LU-9119 socklnd: propagate errors on send failure · 61aa09e1
      Olaf Weber authored
      
      When an attempt to send a message fails, for example because no
      connection could be established with the remote address, socklnd
      drops the message. For a PUT or REPLY message with non-zero
      payload, ksocknal_tx_done() calls lnet_finalize() with -EIO
      as the error code. But for an ACK or GET message there is no
      payload, and lnet_finalize() is called with 0 (no error) as the
      error code. This leaves upper layers to rely on other means to
      determine that sending the message did actually fail, and that
      (for example) no REPLY will ever answer a failed GET.
      
      Add an error code parameter to ksocknal_tx_done().
      
      In ksocknal_txlist_done() change the 0/1 'error' indicator to be
      an actual error code that is passed on the ksocknal_tx_done().
      Update the callers of ksocknal_txlist_done() to pass in the error
      code if they have encountered an error.
      
      Test-Parameters: trivial
      Signed-off-by: default avatarOlaf Weber <olaf@sgi.com>
      Change-Id: I66b897a31e537e70dcc2622ffdfcc6e96fa93193
      Reviewed-on: https://review.whamcloud.com/26691
      
      
      Tested-by: Jenkins
      Tested-by: default avatarMaloo <hpdd-maloo@intel.com>
      Reviewed-by: default avatarDoug Oucharek <doug.s.oucharek@intel.com>
      Reviewed-by: default avatarOleg Drokin <oleg.drokin@intel.com>
      61aa09e1
    • Olaf Weber's avatar
      LU-9119 lnet: fix race in lnet shutdown path · 16129257
      Olaf Weber authored
      
      The locking changes for the lnet_net_lock made for Multi-Rail
      introduce a race in the LNet shutdown path. The code keeps two
      states in the_lnet.ln_shutdown: 0 means LNet is either up and
      running or shut down, while 1 means lnet is shutting down. In
      lnet_select_pathway() if we need to restart and drop and relock
      the lnet_net_lock we can find that LNet went from running to
      stopped, and not be able to tell the difference.
      
      Replace ln_shutdown with a three-state ln_state patterned on
      ln_rc_state: states are LNET_STATE_SHUTDOWN, LNET_STATE_RUNNING,
      and LNET_STATE_STOPPING. Most checks against ln_shutdown now test
      ln_state against LNET_STATE_RUNNING. LNet moves to RUNNING state
      in lnet_startup_lndnets().
      
      Test-Parameters: trivial
      Signed-off-by: default avatarOlaf Weber <olaf@sgi.com>
      Change-Id: I7afcbeb793dfa4d0a361e421ae06a99b7d4db903
      Reviewed-on: https://review.whamcloud.com/26690
      
      
      Tested-by: Jenkins
      Tested-by: default avatarMaloo <hpdd-maloo@intel.com>
      Reviewed-by: default avatarDoug Oucharek <doug.s.oucharek@intel.com>
      Reviewed-by: default avatarOleg Drokin <oleg.drokin@intel.com>
      16129257
  19. May 01, 2017
Loading