2012-10-26 02:12:46 +04:00
.#*
2010-02-23 03:01:34 +03:00
*#*#
*.#*#
2008-10-28 20:47:12 +03:00
*.a
2012-02-04 01:30:06 +04:00
*.cov
2010-04-29 07:36:03 +04:00
*.exe
2010-06-09 22:35:49 +04:00
*.gcda
*.gcno
*.gcov
2012-02-04 01:30:06 +04: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-01 20:57:06 +04:00
*.la
*.lo
2012-02-04 01:30:06 +04:00
*.loT
2008-10-28 20:47:12 +03:00
*.o
2010-02-23 03:01:34 +03:00
*.orig
2012-02-04 01:30:06 +04:00
*.pyc
2010-02-23 03:01:34 +03:00
*.rej
2012-02-04 01:30:06 +04:00
*.s
2008-10-28 20:47:12 +03:00
*~
2012-02-04 01:30:06 +04:00
.deps
2012-09-14 13:09:51 +04:00
.gdb_history
2008-10-17 14:03:15 +04:00
.git
2009-07-10 12:01:04 +04:00
.git-module-status
2012-02-04 01:30:06 +04:00
.libs
2011-03-17 05:35:17 +03:00
.lvimrc
2012-02-04 01:30:06 +04:00
.memdump
2010-04-21 19:55:03 +04:00
.sc-start-sc_*
2010-11-16 22:29:09 +03:00
/ABOUT-NLS
2012-10-13 03:50:19 +04:00
/AUTHORS
2010-11-16 22:29:09 +03:00
/COPYING
/ChangeLog
2010-02-23 03:01:34 +03:00
/GNUmakefile
2010-11-16 22:29:09 +03:00
/INSTALL
/NEWS
/aclocal.m4
/autom4te.cache
2011-01-04 05:37:17 +03:00
/build-aux
2010-11-16 22:29:09 +03:00
/build-aux/
2010-04-30 18:52:54 +04:00
/build/
2010-11-16 22:29:09 +03:00
/config.cache
/config.guess
/config.h
/config.h.in
/config.log
/config.rpath
/config.status
/config.sub
/configure
/configure.lineno
2011-05-16 21:13:11 +04:00
/daemon/*_dispatch.h
2012-02-04 01:30:06 +04:00
/daemon/libvirt_qemud
/daemon/libvirtd
/daemon/libvirtd*.logrotate
/daemon/libvirtd.8
/daemon/libvirtd.8.in
2012-04-13 12:55:15 +04:00
/daemon/libvirtd.init
2012-02-04 01:30:06 +04:00
/daemon/libvirtd.pod
2012-10-12 18:51:48 +04:00
/daemon/libvirtd.policy
2012-04-13 12:55:15 +04: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 14:14:15 +04:00
/daemon/test_libvirtd.aug
2012-04-27 20:05:12 +04:00
/docs/apibuild.py.stamp
2012-02-04 01:30:06 +04:00
/docs/devhelp/libvirt.devhelp
2011-05-16 19:33:56 +04:00
/docs/hvsupport.html.in
2012-02-04 01:30:06 +04:00
/docs/libvirt-api.xml
2011-09-14 19:30:33 +04:00
/docs/libvirt-qemu-*.xml
2012-02-04 01:30:06 +04:00
/docs/libvirt-refs.xml
2012-08-01 17:29:27 +04:00
/docs/search.php
2012-02-04 01:30:06 +04: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 16:55:21 +04:00
/gnulib/lib/*
/gnulib/m4/*
/gnulib/tests/*
2012-02-04 01:30:06 +04:00
/include/libvirt/libvirt.h
2010-11-16 22:29:09 +03:00
/libtool
/libvirt-*.tar.gz
2010-05-20 02:16:47 +04:00
/libvirt-[0-9]*
2010-11-16 22:29:09 +03:00
/libvirt.pc
/libvirt.spec
/ltconfig
/ltmain.sh
2011-04-05 23:06:31 +04:00
/m4/*
2010-02-23 03:01:34 +03:00
/maint.mk
2012-06-15 20:13:11 +04:00
/mingw-libvirt.spec
2010-11-16 22:29:09 +03:00
/mkinstalldirs
2011-04-05 23:06:31 +04:00
/po/*
2010-11-09 13:45:14 +03:00
/proxy/
2012-02-04 01:30:06 +04:00
/python/generated.stamp
2011-07-19 17:34:34 +04:00
/python/generator.py.stamp
2012-02-04 01:30:06 +04:00
/python/libvirt-export.c
2011-09-14 19:30:33 +04:00
/python/libvirt-qemu-export.c
/python/libvirt-qemu.[ch]
2012-02-04 01:30:06 +04:00
/python/libvirt.[ch]
/python/libvirt.py
2011-09-14 19:30:33 +04:00
/python/libvirt_qemu.py
2012-09-14 13:08:54 +04:00
/run
2011-08-19 03:03:26 +04:00
/sc_*
2012-07-23 18:45:20 +04:00
/src/.*.stamp
2012-02-04 01:30:06 +04:00
/src/esx/*.generated.*
2011-07-13 19:05:19 +04:00
/src/hyperv/*.generated.*
2012-02-04 01:30:06 +04:00
/src/libvirt*.def
/src/libvirt.syms
/src/libvirt_*.stp
/src/libvirt_*helper
2012-05-25 06:43:43 +04:00
/src/libvirt_*probes.h
2012-02-04 01:30:06 +04:00
/src/libvirt_lxc
2011-08-16 00:42:43 +04: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 14:14:15 +04:00
/src/locking/test_libvirt_sanlock.aug
2012-07-17 18:54:08 +04: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 15:40:56 +04: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 14:14:15 +04:00
/src/qemu/test_libvirtd_qemu.aug
2011-05-06 17:11:32 +04:00
/src/remote/*_client_bodies.h
/src/remote/*_protocol.[ch]
2011-09-22 14:51:55 +04:00
/src/rpc/virkeepaliveprotocol.[ch]
2010-12-06 20:03:10 +03:00
/src/rpc/virnetprotocol.[ch]
2012-05-30 01:49:13 +04:00
/src/test_libvirt*.aug
2011-07-21 11:32:34 +04:00
/src/util/virkeymaps.h
2012-02-04 01:30:06 +04:00
/src/virt-aa-helper
2010-11-16 22:29:09 +03:00
/tests/*.log
2012-02-04 01:30:06 +04:00
/tests/*.pid
/tests/*xml2*test
/tests/commandhelper
2012-02-06 21:27:40 +04:00
/tests/commandtest
2012-02-04 01:30:06 +04:00
/tests/conftest
2010-12-02 02:48:19 +03:00
/tests/cputest
2011-09-23 00:29:00 +04:00
/tests/domainsnapshotxml2xmltest
2012-02-04 01:30:06 +04:00
/tests/esxutilstest
/tests/eventtest
2011-04-18 19:30:49 +04:00
/tests/hashtest
2011-06-30 22:13:51 +04:00
/tests/jsontest
2012-04-13 12:55:15 +04:00
/tests/libvirtdconftest
2011-06-25 01:30:00 +04:00
/tests/networkxml2argvtest
2012-02-04 01:30:06 +04:00
/tests/nodeinfotest
2010-11-16 22:29:09 +03:00
/tests/nwfilterxml2xmltest
2012-02-04 01:30:06 +04:00
/tests/object-locking
/tests/object-locking-files.txt
/tests/object-locking.cm[ix]
2011-05-31 21:35:32 +04:00
/tests/openvzutilstest
2012-02-04 01:30:06 +04:00
/tests/qemuargv2xmltest
/tests/qemuhelptest
2012-08-20 16:31:29 +04:00
/tests/qemumonitorjsontest
2012-02-26 04:48:02 +04:00
/tests/qemumonitortest
2011-10-19 23:49:59 +04:00
/tests/qemuxmlnstest
2012-02-04 01:30:06 +04:00
/tests/qparamtest
/tests/reconnect
/tests/secaatest
/tests/seclabeltest
2012-08-10 17:31:14 +04:00
/tests/securityselinuxtest
2012-02-04 01:30:06 +04: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-01 20:57:06 +04:00
/tests/shunloadtest
2012-02-04 01:30:06 +04:00
/tests/sockettest
/tests/ssh
/tests/statstest
2012-07-18 23:06:58 +04:00
/tests/storagebackendsheepdogtest
2012-02-04 01:30:06 +04:00
/tests/utiltest
2012-07-11 17:35:43 +04:00
/tests/viratomictest
2012-03-24 02:04:18 +04:00
/tests/virauthconfigtest
2012-09-14 11:46:57 +04:00
/tests/virbitmaptest
2012-02-04 01:30:06 +04:00
/tests/virbuftest
2012-05-25 06:43:43 +04:00
/tests/virdrivermoduletest
2012-01-25 20:38:37 +04:00
/tests/virhashtest
2012-03-24 02:04:18 +04: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-02 20:02:40 +04:00
/tests/virlockspacetest
2012-02-04 01:30:06 +04:00
/tests/virnet*test
/tests/virshtest
2012-02-06 21:27:40 +04:00
/tests/virtimetest
2012-03-24 02:04:18 +04:00
/tests/viruritest
2012-02-04 01:30:06 +04:00
/tests/vmx2xmltest
/tests/xencapstest
/tests/xmconfigtest
/tools/*.[18]
/tools/libvirt-guests.init
2012-06-26 20:13:46 +04:00
/tools/libvirt-guests.service
2012-02-04 01:30:06 +04:00
/tools/virsh
/tools/virsh-*-edit.c
/tools/virt-*-validate
/tools/virt-sanlock-cleanup
2010-11-16 22:29:09 +03:00
/update.log
2008-10-17 14:03:15 +04:00
Makefile
2008-10-28 20:47:12 +03:00
Makefile.in
2010-12-02 02:48:19 +03:00
TAGS
2008-10-28 20:47:12 +03:00
coverage
2009-07-03 18:32:17 +04:00
cscope.files
cscope.out
2008-10-28 20:47:12 +03:00
results.log
stamp-h
stamp-h.in
stamp-h1
2011-07-28 16:55:21 +04:00
!/gnulib/lib/Makefile.am
!/gnulib/tests/Makefile.am
2011-04-05 23:06:31 +04:00
!/m4/virt-*.m4
!/po/*.po
!/po/POTFILES.in
!/po/libvirt.pot