[Nut-upsdev] problem with restarting nut

Michal Hlavinka mhlavink at redhat.com
Thu Jul 22 12:48:17 UTC 2010


Hi,

one user found problem with restarting nut. upsdrvctl does not wait for 
drivers being really terminated. In init scripts we have following:

killproc upsmon
killproc upsd
upsdrvctl stop

and then

upsdrvctl start
upsd
upsmon

problem is upsdrvctl stop only sends terminating signals but does not wait for 
driver termination. This makes driver fail to start sometimes when old driver 
is still running because "device is locked by another process". I've prepared 
patch cloning stop_driver function to wait_driver_stoped which blocks until 
timeout or until  /proc/<pid> disappears. This function is called after 
send_all_drivers(stop_driver). See attached patch.

If you don't want to make this changes I can modify init script restart 
function instead to wait until all processes with pid in /var/run/nut/*.pid 
files are dead, but I find this quite ugly.

Any comments?

Michal



More information about the Nut-upsdev mailing list