2010-02-23 08:01:34 +08:00
|
|
|
*#*#
|
|
|
|
*.#*#
|
2008-10-29 01:47:12 +08:00
|
|
|
*.a
|
2012-02-04 05:30:06 +08:00
|
|
|
*.cov
|
2010-04-29 11:36:03 +08:00
|
|
|
*.exe
|
2010-06-10 02:35:49 +08:00
|
|
|
*.gcda
|
|
|
|
*.gcno
|
|
|
|
*.gcov
|
2012-02-04 05:30:06 +08:00
|
|
|
*.html
|
|
|
|
*.i
|
Prevent crash from dlclose() of libvirt.so
When libvirt calls virInitialize it creates a thread local
for the virErrorPtr storage, and registers a callback to
cleanup memory when a thread exits. When libvirt is dlclose()d
or otherwise made non-resident, the callback function is
removed from memory, but the thread local may still exist
and if a thread later exists, it will invoke the callback
and SEGV. There may also be other thread locals with callbacks
pointing to libvirt code, so it is in general never safe to
unload libvirt.so from memory once initialized.
To allow dlclose() to succeed, but keep libvirt.so resident
in memory, link with '-z nodelete'. This issue was first
found with the libvirt CIM provider, but can potentially
hit many of the dynamic language bindings which all ultimately
involve dlopen() in some way, either on libvirt.so itself,
or on the glue code for the binding which in turns links
to libvirt
* configure.ac, src/Makefile.am: Ensure libvirt.so is linked
with -z nodelete
* cfg.mk, .gitignore, tests/Makefile.am, tests/shunloadhelper.c,
tests/shunloadtest.c: A test case to unload libvirt while
a thread is still running.
2011-09-02 00:57:06 +08:00
|
|
|
*.la
|
|
|
|
*.lo
|
2012-02-04 05:30:06 +08:00
|
|
|
*.loT
|
2008-10-29 01:47:12 +08:00
|
|
|
*.o
|
2010-02-23 08:01:34 +08:00
|
|
|
*.orig
|
2012-02-04 05:30:06 +08:00
|
|
|
*.pyc
|
2010-02-23 08:01:34 +08:00
|
|
|
*.rej
|
2012-02-04 05:30:06 +08:00
|
|
|
*.s
|
2008-10-29 01:47:12 +08:00
|
|
|
*~
|
2012-02-04 05:30:06 +08:00
|
|
|
.deps
|
2012-09-14 17:09:51 +08:00
|
|
|
.gdb_history
|
2008-10-17 18:03:15 +08:00
|
|
|
.git
|
2009-07-10 16:01:04 +08:00
|
|
|
.git-module-status
|
2012-02-04 05:30:06 +08:00
|
|
|
.libs
|
2011-03-17 10:35:17 +08:00
|
|
|
.lvimrc
|
2012-02-04 05:30:06 +08:00
|
|
|
.memdump
|
2010-04-21 23:55:03 +08:00
|
|
|
.sc-start-sc_*
|
2010-11-17 03:29:09 +08:00
|
|
|
/ABOUT-NLS
|
|
|
|
/COPYING
|
|
|
|
/ChangeLog
|
2010-02-23 08:01:34 +08:00
|
|
|
/GNUmakefile
|
2010-11-17 03:29:09 +08:00
|
|
|
/INSTALL
|
|
|
|
/NEWS
|
|
|
|
/aclocal.m4
|
|
|
|
/autom4te.cache
|
2011-01-04 10:37:17 +08:00
|
|
|
/build-aux
|
2010-11-17 03:29:09 +08:00
|
|
|
/build-aux/
|
2010-04-30 22:52:54 +08:00
|
|
|
/build/
|
2010-11-17 03:29:09 +08:00
|
|
|
/config.cache
|
|
|
|
/config.guess
|
|
|
|
/config.h
|
|
|
|
/config.h.in
|
|
|
|
/config.log
|
|
|
|
/config.rpath
|
|
|
|
/config.status
|
|
|
|
/config.sub
|
|
|
|
/configure
|
|
|
|
/configure.lineno
|
2011-05-17 01:13:11 +08:00
|
|
|
/daemon/*_dispatch.h
|
2012-02-04 05:30:06 +08:00
|
|
|
/daemon/libvirt_qemud
|
|
|
|
/daemon/libvirtd
|
|
|
|
/daemon/libvirtd*.logrotate
|
|
|
|
/daemon/libvirtd.8
|
|
|
|
/daemon/libvirtd.8.in
|
2012-04-13 16:55:15 +08:00
|
|
|
/daemon/libvirtd.init
|
2012-02-04 05:30:06 +08:00
|
|
|
/daemon/libvirtd.pod
|
2012-10-12 22:51:48 +08:00
|
|
|
/daemon/libvirtd.policy
|
2012-04-13 16:55:15 +08:00
|
|
|
/daemon/libvirtd.service
|
Autogenerate augeas test case from default config files
When adding new config file parameters, the corresponding
additions to the augeas lens' are constantly forgotten.
Also there are augeas test cases, these don't catch the
error, since they too are never updated.
To address this, the augeas test cases need to be auto-generated
from the example config files.
* build-aux/augeas-gentest.pl: Helper to generate an
augeas test file, substituting in elements from the
example config files
* src/Makefile.am, daemon/Makefile.am: Switch to
auto-generated augeas test cases
* daemon/test_libvirtd.aug, daemon/test_libvirtd.aug.in,
src/locking/test_libvirt_sanlock.aug,
src/locking/test_libvirt_sanlock.aug.in,
src/lxc/test_libvirtd_lxc.aug,
src/lxc/test_libvirtd_lxc.aug.in,
src/qemu/test_libvirtd_qemu.aug,
src/qemu/test_libvirtd_qemu.aug.in: Remove example
config file data, replacing with a ::CONFIG:: placeholder
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-05-25 18:14:15 +08:00
|
|
|
/daemon/test_libvirtd.aug
|
2012-04-28 00:05:12 +08:00
|
|
|
/docs/apibuild.py.stamp
|
2012-02-04 05:30:06 +08:00
|
|
|
/docs/devhelp/libvirt.devhelp
|
2011-05-16 23:33:56 +08:00
|
|
|
/docs/hvsupport.html.in
|
2012-02-04 05:30:06 +08:00
|
|
|
/docs/libvirt-api.xml
|
2011-09-14 23:30:33 +08:00
|
|
|
/docs/libvirt-qemu-*.xml
|
2012-02-04 05:30:06 +08:00
|
|
|
/docs/libvirt-refs.xml
|
2012-08-01 21:29:27 +08:00
|
|
|
/docs/search.php
|
2012-02-04 05:30:06 +08:00
|
|
|
/docs/todo.html.in
|
|
|
|
/examples/domain-events/events-c/event-test
|
|
|
|
/examples/dominfo/info1
|
|
|
|
/examples/domsuspend/suspend
|
|
|
|
/examples/hellolibvirt/hellolibvirt
|
|
|
|
/examples/openauth/openauth
|
2011-07-28 20:55:21 +08:00
|
|
|
/gnulib/lib/*
|
|
|
|
/gnulib/m4/*
|
|
|
|
/gnulib/tests/*
|
2012-02-04 05:30:06 +08:00
|
|
|
/include/libvirt/libvirt.h
|
2010-11-17 03:29:09 +08:00
|
|
|
/libtool
|
|
|
|
/libvirt-*.tar.gz
|
2010-05-20 06:16:47 +08:00
|
|
|
/libvirt-[0-9]*
|
2010-11-17 03:29:09 +08:00
|
|
|
/libvirt.pc
|
|
|
|
/libvirt.spec
|
|
|
|
/ltconfig
|
|
|
|
/ltmain.sh
|
2011-04-06 03:06:31 +08:00
|
|
|
/m4/*
|
2010-02-23 08:01:34 +08:00
|
|
|
/maint.mk
|
2012-06-16 00:13:11 +08:00
|
|
|
/mingw-libvirt.spec
|
2010-11-17 03:29:09 +08:00
|
|
|
/mkinstalldirs
|
2011-04-06 03:06:31 +08:00
|
|
|
/po/*
|
2010-11-09 18:45:14 +08:00
|
|
|
/proxy/
|
2012-02-04 05:30:06 +08:00
|
|
|
/python/generated.stamp
|
2011-07-19 21:34:34 +08:00
|
|
|
/python/generator.py.stamp
|
2012-02-04 05:30:06 +08:00
|
|
|
/python/libvirt-export.c
|
2011-09-14 23:30:33 +08:00
|
|
|
/python/libvirt-qemu-export.c
|
|
|
|
/python/libvirt-qemu.[ch]
|
2012-02-04 05:30:06 +08:00
|
|
|
/python/libvirt.[ch]
|
|
|
|
/python/libvirt.py
|
2011-09-14 23:30:33 +08:00
|
|
|
/python/libvirt_qemu.py
|
2012-09-14 17:08:54 +08:00
|
|
|
/run
|
2011-08-19 07:03:26 +08:00
|
|
|
/sc_*
|
2012-07-23 22:45:20 +08:00
|
|
|
/src/.*.stamp
|
2012-02-04 05:30:06 +08:00
|
|
|
/src/esx/*.generated.*
|
2011-07-13 23:05:19 +08:00
|
|
|
/src/hyperv/*.generated.*
|
2012-02-04 05:30:06 +08:00
|
|
|
/src/libvirt*.def
|
|
|
|
/src/libvirt.syms
|
|
|
|
/src/libvirt_*.stp
|
|
|
|
/src/libvirt_*helper
|
2012-05-25 10:43:43 +08:00
|
|
|
/src/libvirt_*probes.h
|
2012-02-04 05:30:06 +08:00
|
|
|
/src/libvirt_lxc
|
2011-08-16 04:42:43 +08:00
|
|
|
/src/locking/qemu-sanlock.conf
|
Autogenerate augeas test case from default config files
When adding new config file parameters, the corresponding
additions to the augeas lens' are constantly forgotten.
Also there are augeas test cases, these don't catch the
error, since they too are never updated.
To address this, the augeas test cases need to be auto-generated
from the example config files.
* build-aux/augeas-gentest.pl: Helper to generate an
augeas test file, substituting in elements from the
example config files
* src/Makefile.am, daemon/Makefile.am: Switch to
auto-generated augeas test cases
* daemon/test_libvirtd.aug, daemon/test_libvirtd.aug.in,
src/locking/test_libvirt_sanlock.aug,
src/locking/test_libvirt_sanlock.aug.in,
src/lxc/test_libvirtd_lxc.aug,
src/lxc/test_libvirtd_lxc.aug.in,
src/qemu/test_libvirtd_qemu.aug,
src/qemu/test_libvirtd_qemu.aug.in: Remove example
config file data, replacing with a ::CONFIG:: placeholder
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-05-25 18:14:15 +08:00
|
|
|
/src/locking/test_libvirt_sanlock.aug
|
2012-07-17 22:54:08 +08:00
|
|
|
/src/lxc/lxc_controller_dispatch.h
|
|
|
|
/src/lxc/lxc_monitor_dispatch.h
|
|
|
|
/src/lxc/lxc_protocol.c
|
|
|
|
/src/lxc/lxc_protocol.h
|
2012-08-01 19:40:56 +08:00
|
|
|
/src/lxc/test_libvirtd_lxc.aug
|
Autogenerate augeas test case from default config files
When adding new config file parameters, the corresponding
additions to the augeas lens' are constantly forgotten.
Also there are augeas test cases, these don't catch the
error, since they too are never updated.
To address this, the augeas test cases need to be auto-generated
from the example config files.
* build-aux/augeas-gentest.pl: Helper to generate an
augeas test file, substituting in elements from the
example config files
* src/Makefile.am, daemon/Makefile.am: Switch to
auto-generated augeas test cases
* daemon/test_libvirtd.aug, daemon/test_libvirtd.aug.in,
src/locking/test_libvirt_sanlock.aug,
src/locking/test_libvirt_sanlock.aug.in,
src/lxc/test_libvirtd_lxc.aug,
src/lxc/test_libvirtd_lxc.aug.in,
src/qemu/test_libvirtd_qemu.aug,
src/qemu/test_libvirtd_qemu.aug.in: Remove example
config file data, replacing with a ::CONFIG:: placeholder
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-05-25 18:14:15 +08:00
|
|
|
/src/qemu/test_libvirtd_qemu.aug
|
2011-05-06 21:11:32 +08:00
|
|
|
/src/remote/*_client_bodies.h
|
|
|
|
/src/remote/*_protocol.[ch]
|
2011-09-22 18:51:55 +08:00
|
|
|
/src/rpc/virkeepaliveprotocol.[ch]
|
2010-12-07 01:03:10 +08:00
|
|
|
/src/rpc/virnetprotocol.[ch]
|
2012-05-30 05:49:13 +08:00
|
|
|
/src/test_libvirt*.aug
|
2011-07-21 15:32:34 +08:00
|
|
|
/src/util/virkeymaps.h
|
2012-02-04 05:30:06 +08:00
|
|
|
/src/virt-aa-helper
|
2010-11-17 03:29:09 +08:00
|
|
|
/tests/*.log
|
2012-02-04 05:30:06 +08:00
|
|
|
/tests/*.pid
|
|
|
|
/tests/*xml2*test
|
|
|
|
/tests/commandhelper
|
2012-02-07 01:27:40 +08:00
|
|
|
/tests/commandtest
|
2012-02-04 05:30:06 +08:00
|
|
|
/tests/conftest
|
2010-12-02 07:48:19 +08:00
|
|
|
/tests/cputest
|
2011-09-23 04:29:00 +08:00
|
|
|
/tests/domainsnapshotxml2xmltest
|
2012-02-04 05:30:06 +08:00
|
|
|
/tests/esxutilstest
|
|
|
|
/tests/eventtest
|
2011-04-18 23:30:49 +08:00
|
|
|
/tests/hashtest
|
2011-07-01 02:13:51 +08:00
|
|
|
/tests/jsontest
|
2012-04-13 16:55:15 +08:00
|
|
|
/tests/libvirtdconftest
|
2011-06-25 05:30:00 +08:00
|
|
|
/tests/networkxml2argvtest
|
2012-02-04 05:30:06 +08:00
|
|
|
/tests/nodeinfotest
|
2010-11-17 03:29:09 +08:00
|
|
|
/tests/nwfilterxml2xmltest
|
2012-02-04 05:30:06 +08:00
|
|
|
/tests/object-locking
|
|
|
|
/tests/object-locking-files.txt
|
|
|
|
/tests/object-locking.cm[ix]
|
2011-06-01 01:35:32 +08:00
|
|
|
/tests/openvzutilstest
|
2012-02-04 05:30:06 +08:00
|
|
|
/tests/qemuargv2xmltest
|
|
|
|
/tests/qemuhelptest
|
2012-08-20 20:31:29 +08:00
|
|
|
/tests/qemumonitorjsontest
|
2012-02-26 08:48:02 +08:00
|
|
|
/tests/qemumonitortest
|
2011-10-20 03:49:59 +08:00
|
|
|
/tests/qemuxmlnstest
|
2012-02-04 05:30:06 +08:00
|
|
|
/tests/qparamtest
|
|
|
|
/tests/reconnect
|
|
|
|
/tests/secaatest
|
|
|
|
/tests/seclabeltest
|
2012-08-10 21:31:14 +08:00
|
|
|
/tests/securityselinuxtest
|
2012-02-04 05:30:06 +08:00
|
|
|
/tests/sexpr2xmltest
|
Prevent crash from dlclose() of libvirt.so
When libvirt calls virInitialize it creates a thread local
for the virErrorPtr storage, and registers a callback to
cleanup memory when a thread exits. When libvirt is dlclose()d
or otherwise made non-resident, the callback function is
removed from memory, but the thread local may still exist
and if a thread later exists, it will invoke the callback
and SEGV. There may also be other thread locals with callbacks
pointing to libvirt code, so it is in general never safe to
unload libvirt.so from memory once initialized.
To allow dlclose() to succeed, but keep libvirt.so resident
in memory, link with '-z nodelete'. This issue was first
found with the libvirt CIM provider, but can potentially
hit many of the dynamic language bindings which all ultimately
involve dlopen() in some way, either on libvirt.so itself,
or on the glue code for the binding which in turns links
to libvirt
* configure.ac, src/Makefile.am: Ensure libvirt.so is linked
with -z nodelete
* cfg.mk, .gitignore, tests/Makefile.am, tests/shunloadhelper.c,
tests/shunloadtest.c: A test case to unload libvirt while
a thread is still running.
2011-09-02 00:57:06 +08:00
|
|
|
/tests/shunloadtest
|
2012-02-04 05:30:06 +08:00
|
|
|
/tests/sockettest
|
|
|
|
/tests/ssh
|
|
|
|
/tests/statstest
|
2012-07-19 03:06:58 +08:00
|
|
|
/tests/storagebackendsheepdogtest
|
2012-02-04 05:30:06 +08:00
|
|
|
/tests/utiltest
|
2012-07-11 21:35:43 +08:00
|
|
|
/tests/viratomictest
|
2012-03-24 06:04:18 +08:00
|
|
|
/tests/virauthconfigtest
|
2012-09-14 15:46:57 +08:00
|
|
|
/tests/virbitmaptest
|
2012-02-04 05:30:06 +08:00
|
|
|
/tests/virbuftest
|
2012-05-25 10:43:43 +08:00
|
|
|
/tests/virdrivermoduletest
|
2012-01-26 00:38:37 +08:00
|
|
|
/tests/virhashtest
|
2012-03-24 06:04:18 +08:00
|
|
|
/tests/virkeyfiletest
|
Introduce an internal API for handling file based lockspaces
The previously introduced virFile{Lock,Unlock} APIs provide a
way to acquire/release fcntl() locks on individual files. For
unknown reason though, the POSIX spec says that fcntl() locks
are released when *any* file handle referring to the same path
is closed. In the following sequence
threadA: fd1 = open("foo")
threadB: fd2 = open("foo")
threadA: virFileLock(fd1)
threadB: virFileLock(fd2)
threadB: close(fd2)
you'd expect threadA to come out holding a lock on 'foo', and
indeed it does hold a lock for a very short time. Unfortunately
when threadB does close(fd2) this releases the lock associated
with fd1. For the current libvirt use case for virFileLock -
pidfiles - this doesn't matter since the lock is acquired
at startup while single threaded an never released until
exit.
To provide a more generally useful API though, it is necessary
to introduce a slightly higher level abstraction, which is to
be referred to as a "lockspace". This is to be provided by
a virLockSpacePtr object in src/util/virlockspace.{c,h}. The
core idea is that the lockspace keeps track of what files are
already open+locked. This means that when a 2nd thread comes
along and tries to acquire a lock, it doesn't end up opening
and closing a new FD. The lockspace just checks the current
list of held locks and immediately returns VIR_ERR_RESOURCE_BUSY.
NB, the API as it stands is designed on the basis that the
files being locked are not being otherwise opened and used
by the application code. One approach to using this API is to
acquire locks based on a hash of the filepath.
eg to lock /var/lib/libvirt/images/foo.img the application
might do
virLockSpacePtr lockspace = virLockSpaceNew("/var/lib/libvirt/imagelocks");
lockname = md5sum("/var/lib/libvirt/images/foo.img");
virLockSpaceAcquireLock(lockspace, lockname);
NB, in this example, the caller should ensure that the path
is canonicalized before calculating the checksum.
It is also possible to do locks directly on resources by
using a NULL lockspace directory and then using the file
path as the lock name eg
virLockSpacePtr lockspace = virLockSpaceNew(NULL);
virLockSpaceAcquireLock(lockspace, "/var/lib/libvirt/images/foo.img");
This is only safe to do though if no other part of the process
will be opening the files. This will be the case when this
code is used inside the soon-to-be-reposted virlockd daemon
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2012-08-03 00:02:40 +08:00
|
|
|
/tests/virlockspacetest
|
2012-02-04 05:30:06 +08:00
|
|
|
/tests/virnet*test
|
|
|
|
/tests/virshtest
|
2012-02-07 01:27:40 +08:00
|
|
|
/tests/virtimetest
|
2012-03-24 06:04:18 +08:00
|
|
|
/tests/viruritest
|
2012-02-04 05:30:06 +08:00
|
|
|
/tests/vmx2xmltest
|
|
|
|
/tests/xencapstest
|
|
|
|
/tests/xmconfigtest
|
|
|
|
/tools/*.[18]
|
|
|
|
/tools/libvirt-guests.init
|
2012-06-27 00:13:46 +08:00
|
|
|
/tools/libvirt-guests.service
|
2012-02-04 05:30:06 +08:00
|
|
|
/tools/virsh
|
|
|
|
/tools/virsh-*-edit.c
|
|
|
|
/tools/virt-*-validate
|
|
|
|
/tools/virt-sanlock-cleanup
|
2010-11-17 03:29:09 +08:00
|
|
|
/update.log
|
2008-10-17 18:03:15 +08:00
|
|
|
Makefile
|
2008-10-29 01:47:12 +08:00
|
|
|
Makefile.in
|
2010-12-02 07:48:19 +08:00
|
|
|
TAGS
|
2008-10-29 01:47:12 +08:00
|
|
|
coverage
|
2009-07-03 22:32:17 +08:00
|
|
|
cscope.files
|
|
|
|
cscope.out
|
2008-10-29 01:47:12 +08:00
|
|
|
results.log
|
|
|
|
stamp-h
|
|
|
|
stamp-h.in
|
|
|
|
stamp-h1
|
2011-07-28 20:55:21 +08:00
|
|
|
!/gnulib/lib/Makefile.am
|
|
|
|
!/gnulib/tests/Makefile.am
|
2011-04-06 03:06:31 +08:00
|
|
|
!/m4/virt-*.m4
|
|
|
|
!/po/*.po
|
|
|
|
!/po/POTFILES.in
|
|
|
|
!/po/libvirt.pot
|