Revision b7743258

b/htools/Ganeti/HTools/Node.hs
225 225
       , peers = P.empty
226 226
       , rMem = 0
227 227
       , pMem = fromIntegral mem_f_init / mem_t_init
228
       , pDsk = fromIntegral dsk_f_init / dsk_t_init
228
       , pDsk = computePDsk dsk_f_init dsk_t_init
229 229
       , pRem = 0
230 230
       , pCpu = 0
231 231
       , offline = offline_init
......
341 341
        new_spindles = instSpindles t + if Instance.usesLocalStorage inst
342 342
                                          then 1 else 0
343 343

  
344
-- | Computes the new 'pDsk' value, handling nodes without local disk
345
-- storage (we consider all their disk used).
346
computePDsk :: Int -> Double -> Double
347
computePDsk _    0     = 1
348
computePDsk used total = fromIntegral used / total
349

  
344 350
-- * Update functions
345 351

  
346 352
-- | Sets the free memory.
......
361 367
      new_dsk = incIf uses_disk (fDsk t) (Instance.dsk inst)
362 368
      new_spindles = decIf uses_disk (instSpindles t) 1
363 369
      new_mp = fromIntegral new_mem / tMem t
364
      new_dp = fromIntegral new_dsk / tDsk t
370
      new_dp = computePDsk new_dsk (tDsk t)
365 371
      new_failn1 = new_mem <= rMem t
366 372
      new_ucpu = decIf i_online (uCpu t) (Instance.vcpus inst)
367 373
      new_rcpu = fromIntegral new_ucpu / tCpu t
......
395 401
                   else computeMaxRes new_peers
396 402
      new_prem = fromIntegral new_rmem / tMem t
397 403
      new_failn1 = fMem t <= new_rmem
398
      new_dp = fromIntegral new_dsk / tDsk t
404
      new_dp = computePDsk new_dsk (tDsk t)
399 405
      old_load = utilLoad t
400 406
      new_load = old_load { T.dskWeight = T.dskWeight old_load -
401 407
                                          T.dskWeight (Instance.util inst) }
......
430 436
      new_failn1 = new_mem <= rMem t
431 437
      new_ucpu = incIf i_online (uCpu t) (Instance.vcpus inst)
432 438
      new_pcpu = fromIntegral new_ucpu / tCpu t
433
      new_dp = fromIntegral new_dsk / tDsk t
439
      new_dp = computePDsk new_dsk (tDsk t)
434 440
      l_cpu = T.iPolicyVcpuRatio $ iPolicy t
435 441
      new_load = utilLoad t `T.addUtil` Instance.util inst
436 442
      inst_tags = Instance.tags inst
......
477 483
      new_rmem = max (rMem t) new_peem
478 484
      new_prem = fromIntegral new_rmem / tMem t
479 485
      new_failn1 = old_mem <= new_rmem
480
      new_dp = fromIntegral new_dsk / tDsk t
486
      new_dp = computePDsk new_dsk (tDsk t)
481 487
      old_load = utilLoad t
482 488
      new_load = old_load { T.dskWeight = T.dskWeight old_load +
483 489
                                          T.dskWeight (Instance.util inst) }

Also available in: Unified diff