On 11.12.2012 21:41, Daniel P. Berrange wrote: > From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> > > The virtlockd daemon maintains file locks on behalf of libvirtd > and any VMs it is running. These file locks must be held for as > long as any VM is running. If virtlockd itself ever quits, then > it is expected that a node would be fenced/rebooted. Thus to > allow for software upgrads on live systemd, virtlockd needs the > ability to re-exec() itself. > > Upon receipt of SIGUSR1, virtlockd will save its current live > state out to a file /var/run/virtlockd-restart-exec.json > It then re-exec()'s itself with exactly the same argv as it > originally had, and loads the state file, reconstructing any > objects as appropriate. > > The state file contains information about all locks held and > all network services and clients currently active. An example > state document is > > { > "server": { > "min_workers": 1, > "max_workers": 20, > "priority_workers": 0, > "max_clients": 20, > "keepaliveInterval": 4294967295, > "keepaliveCount": 0, > "keepaliveRequired": false, > "services": [ > { > "auth": 0, > "readonly": false, > "nrequests_client_max": 1, > "socks": [ > { > "fd": 6, > "errfd": -1, > "pid": 0, > "isClient": false > } > ] > } > ], > "clients": [ > { > "auth": 0, > "readonly": false, > "nrequests_max": 1, > "sock": { > "fd": 9, > "errfd": -1, > "pid": 0, > "isClient": true > }, > "privateData": { > "restricted": true, > "ownerPid": 1722, > "ownerId": 6, > "ownerName": "f18x86_64", > "ownerUUID": "97586ba9-df27-9459-c806-f016c8bbd224" > } > }, > { > "auth": 0, > "readonly": false, > "nrequests_max": 1, > "sock": { > "fd": 10, > "errfd": -1, > "pid": 0, > "isClient": true > }, > "privateData": { > "restricted": true, > "ownerPid": 1784, > "ownerId": 7, > "ownerName": "f16x86_64", > "ownerUUID": "7b8e5e42-b875-61e9-b981-91ad8fa46979" > } > } > ] > }, > "defaultLockspace": { > "resources": [ > { > "name": "/var/lib/libvirt/images/f16x86_64.raw", > "path": "/var/lib/libvirt/images/f16x86_64.raw", > "fd": 14, > "lockHeld": true, > "flags": 0, > "owners": [ > 1784 > ] > }, > { > "name": "/var/lib/libvirt/images/shared.img", > "path": "/var/lib/libvirt/images/shared.img", > "fd": 12, > "lockHeld": true, > "flags": 1, > "owners": [ > 1722, > 1784 > ] > }, > { > "name": "/var/lib/libvirt/images/f18x86_64.img", > "path": "/var/lib/libvirt/images/f18x86_64.img", > "fd": 11, > "lockHeld": true, > "flags": 0, > "owners": [ > 1722 > ] > } > ] > }, > "lockspaces": [ > > ], > "magic": "30199" > } > > Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> > --- > libvirt.spec.in | 5 +- > src/locking/lock_daemon.c | 417 ++++++++++++++++++++++++++++++++++++++++++++-- > 2 files changed, 409 insertions(+), 13 deletions(-) > ACK Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list