|
Lines 810-817
extern int fini(void)
Link Here
|
| 810 |
|
810 |
|
| 811 |
slurm_mutex_lock(&ipmi_mutex); |
811 |
slurm_mutex_lock(&ipmi_mutex); |
| 812 |
|
812 |
|
| 813 |
if (ipmi_ctx) |
813 |
if (ipmi_ctx) { |
|
|
814 |
ipmi_ctx_close(ipmi_ctx); |
| 814 |
ipmi_ctx_destroy(ipmi_ctx); |
815 |
ipmi_ctx_destroy(ipmi_ctx); |
|
|
816 |
} |
| 815 |
_reset_slurm_ipmi_conf(&slurm_ipmi_conf); |
817 |
_reset_slurm_ipmi_conf(&slurm_ipmi_conf); |
| 816 |
|
818 |
|
| 817 |
slurm_mutex_unlock(&ipmi_mutex); |
819 |
slurm_mutex_unlock(&ipmi_mutex); |
|
Lines 845-852
extern int acct_gather_energy_p_get_data(enum acct_energy_type data_type,
Link Here
|
| 845 |
case ENERGY_DATA_JOULES_TASK: |
847 |
case ENERGY_DATA_JOULES_TASK: |
| 846 |
slurm_mutex_lock(&ipmi_mutex); |
848 |
slurm_mutex_lock(&ipmi_mutex); |
| 847 |
if (running_in_slurmd()) { |
849 |
if (running_in_slurmd()) { |
|
|
850 |
/* |
| 851 |
* ipmi_ctx is global at thread level. If |
| 852 |
* _init_ipmi_config creates a new context to answer |
| 853 |
* REQUEST_ACCT_GATHER_ENERGY RPC in a separated thread, |
| 854 |
* we need to destroy this context at the end. |
| 855 |
* Otherwise, the FD linked to IPMI device is left open. |
| 856 |
*/ |
| 857 |
bool destroy_ctx = (ipmi_ctx ? false : true); |
| 848 |
if (_init_ipmi_config() == SLURM_SUCCESS) |
858 |
if (_init_ipmi_config() == SLURM_SUCCESS) |
| 849 |
_thread_update_node_energy(); |
859 |
_thread_update_node_energy(); |
|
|
860 |
if (destroy_ctx) { |
| 861 |
ipmi_ctx_close(ipmi_ctx); |
| 862 |
ipmi_ctx_destroy(ipmi_ctx); |
| 863 |
} |
| 850 |
} else { |
864 |
} else { |
| 851 |
_get_joules_task(10); |
865 |
_get_joules_task(10); |
| 852 |
} |
866 |
} |