Bug 677209

Summary: hooks daemon script can not be executed when first shutdown libvirtd service
Product: Red Hat Enterprise Linux 6 Reporter: weizhang <weizhan>
Component: libvirtAssignee: Osier Yang <jyang>
Status: CLOSED NOTABUG QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.1CC: dallan, dyuan, eblake, gren, jyang, llim, xen-maint
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-02-14 07:22:38 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description weizhang 2011-02-14 03:03:58 UTC
Description of problem:
when first add hooks daemon script on /etc/libvirt/hooks/ and then shutdown the libvirtd service, hooks daemon script can not be executed.
# cat /etc/libvirt/hooks/daemon 
#! /bin/bash
echo "$0" "$@" \
>> /tmp/daemon.log
exit 0
 
After shutdown, no message like "/etc/libvirt/hooks/daemon - shutdown - shutdown" exists on /tmp/daemon.log

I find it comes from the function virHookCall()
...
    if ((virHooksFound == -1) ||
        ((driver == VIR_HOOK_DRIVER_DAEMON) &&
         (op == VIR_HOOK_DAEMON_OP_RELOAD)))
        virHookInitialize();
...

when libvirtd started, the virHookInitialize() has already changed the virHooksFound to 0, so here it should be 
...
if ((virHooksFound == 0) ||
        ((driver == VIR_HOOK_DRIVER_DAEMON) &&
         (op == VIR_HOOK_DAEMON_OP_RELOAD)))
        virHookInitialize();
...
Version-Release number of selected component (if applicable):
libvirt-0.8.7-6.el6.x86_64

How reproducible:
always

Steps to Reproduce:
1.start libvirtd service with no daemon script writting
2.writting /etc/libvirt/hooks/daemon with
#! /bin/bash
echo "$0" "$@" \
>> /tmp/daemon.log
exit 0

3.run #service libvirtd stop
  
Actual results:
no log in /tmp/daemon.log 

Expected results:
has log in /tmp/daemon.log
/etc/libvirt/hooks/daemon - shutdown - shutdown

Additional info:

Comment 2 Osier Yang 2011-02-14 07:22:38 UTC
It's expectd by design. You need to "restart" or "reload" libvirtd so that it could known there are new hook script. Otherwise libvirtd won't known.