rpms/autofs/F-11 autofs-5.0.4-fix-direct-map-cache-locking.patch, NONE, 1.1 autofs-5.0.4-fix-dont-umount-existing-direct-mount-on-reread.patch, NONE, 1.1 autofs-5.0.4-fix-libxml2-non-thread-safe-calls.patch, NONE, 1.1 autofs.spec, 1.287, 1.288
Ian Kent
iankent at fedoraproject.org
Thu Sep 3 08:32:47 UTC 2009
- Previous message (by thread): rpms/autofs/devel autofs-5.0.4-fix-direct-map-cache-locking.patch, NONE, 1.1 autofs-5.0.4-fix-dont-umount-existing-direct-mount-on-reread.patch, NONE, 1.1 autofs-5.0.4-fix-libxml2-non-thread-safe-calls.patch, NONE, 1.1 autofs.spec, 1.286, 1.287
- Next message (by thread): rpms/redhat-rpm-config/devel redhat-rpm-config-9.0.3-filtering-macros.patch, 1.1, 1.2 redhat-rpm-config.spec, 1.73, 1.74
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: iankent
Update of /cvs/pkgs/rpms/autofs/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv8364
Modified Files:
autofs.spec
Added Files:
autofs-5.0.4-fix-direct-map-cache-locking.patch
autofs-5.0.4-fix-dont-umount-existing-direct-mount-on-reread.patch
autofs-5.0.4-fix-libxml2-non-thread-safe-calls.patch
Log Message:
* Thu Sep 3 2009 Ian Kent <ikent at redhat.com> - 1:5.0.4-38
- fix libxml2 non-thread-safe calls.
- fix direct map cache locking.
- fix patch "dont umount existing direct mount on reread" deadlock.
autofs-5.0.4-fix-direct-map-cache-locking.patch:
CHANGELOG | 1 +
daemon/direct.c | 6 ++++++
2 files changed, 7 insertions(+)
--- NEW FILE autofs-5.0.4-fix-direct-map-cache-locking.patch ---
autofs-5.0.4 - fix direct map cache locking
From: Ian Kent <raven at themaw.net>
Some time during the recent round of updates some locking of the
null map and the direct map entry caches was removed. This patch
adds it back again.
---
CHANGELOG | 1 +
daemon/direct.c | 6 ++++++
2 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
index af7792d..82ebc83 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -60,6 +60,7 @@
- don't block signals we expect to dump core.
- fix pthread push order in expire_proc_direct().
- fix libxml2 non-thread-safe calls.
+- fix direct map cache locking.
4/11/2008 autofs-5.0.4
-----------------------
diff --git a/daemon/direct.c b/daemon/direct.c
index 0f33d03..0c78627 100644
--- a/daemon/direct.c
+++ b/daemon/direct.c
@@ -470,6 +470,8 @@ int mount_autofs_direct(struct autofs_point *ap)
pthread_cleanup_push(master_source_lock_cleanup, ap->entry);
master_source_readlock(ap->entry);
nc = ap->entry->master->nc;
+ cache_readlock(nc);
+ pthread_cleanup_push(cache_lock_cleanup, nc);
map = ap->entry->maps;
while (map) {
/*
@@ -482,6 +484,8 @@ int mount_autofs_direct(struct autofs_point *ap)
}
mc = map->mc;
+ cache_readlock(mc);
+ pthread_cleanup_push(cache_lock_cleanup, mc);
me = cache_enumerate(mc, NULL);
while (me) {
ne = cache_lookup_distinct(nc, me->key);
@@ -509,10 +513,12 @@ int mount_autofs_direct(struct autofs_point *ap)
me = cache_enumerate(mc, me);
}
+ pthread_cleanup_pop(1);
map = map->next;
}
pthread_cleanup_pop(1);
pthread_cleanup_pop(1);
+ pthread_cleanup_pop(1);
return 0;
}
autofs-5.0.4-fix-dont-umount-existing-direct-mount-on-reread.patch:
CHANGELOG | 1 +
daemon/state.c | 10 ++++++++++
2 files changed, 11 insertions(+)
--- NEW FILE autofs-5.0.4-fix-dont-umount-existing-direct-mount-on-reread.patch ---
autofs-5.0.4 - fix dont umount existing direct mount on reread
From: Ian Kent <raven at themaw.net>
A recent problem where we incorrectly umounted direct mounts on map
re-read, when the map name in the master map has changed, checks for
the stale entry in an old map source and updates the new entry from
information in the the stale entry. But this check can also match
an entry that has been removed from a direct map whose name hasn't
changed which leads to a deadlock when we try and take the cache
write lock on the (alleged) stale cache to update the new entry.
This is because, in this case, the cache we want to lock is in
fact the one we are reading and we already hold a read lock on it.
---
CHANGELOG | 1 +
daemon/state.c | 10 ++++++++++
2 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
index 82ebc83..929a21f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -61,6 +61,7 @@
- fix pthread push order in expire_proc_direct().
- fix libxml2 non-thread-safe calls.
- fix direct map cache locking.
+- fix dont umount existing direct mount on reread.
4/11/2008 autofs-5.0.4
-----------------------
diff --git a/daemon/state.c b/daemon/state.c
index 84ccba3..71af46a 100644
--- a/daemon/state.c
+++ b/daemon/state.c
@@ -389,6 +389,16 @@ static void do_readmap_mount(struct autofs_point *ap, struct mnt_list *mnts,
* an empty cache awaiting a map re-load.
*/
valid = lookup_source_valid_mapent(ap, me->key, LKP_DISTINCT);
+ if (valid && valid->mc == me->mc) {
+ /*
+ * We've found a map entry that has been removed from
+ * the current cache so there is no need to update it.
+ * The stale entry will be dealt with when we prune the
+ * cache later.
+ */
+ cache_unlock(valid->mc);
+ valid = NULL;
+ }
if (valid) {
struct mapent_cache *vmc = valid->mc;
cache_unlock(vmc);
autofs-5.0.4-fix-libxml2-non-thread-safe-calls.patch:
CHANGELOG | 1 +
daemon/Makefile | 7 +++++++
daemon/automount.c | 7 ++++++-
modules/lookup_ldap.c | 2 --
4 files changed, 14 insertions(+), 3 deletions(-)
--- NEW FILE autofs-5.0.4-fix-libxml2-non-thread-safe-calls.patch ---
autofs-5.0.4 - fix libxml2 non-thread-safe calls
From: Ian Kent <raven at themaw.net>
The libxml2 call xmlCleanupParser() is definitely not thread safe.
This patch moves it and the xmlInitParser() call to the location
of the code to workaround the libxml2 incorrect TSD handling so
they are called only at start and at exit.
---
CHANGELOG | 1 +
daemon/Makefile | 7 +++++++
daemon/automount.c | 7 ++++++-
modules/lookup_ldap.c | 2 --
4 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
index 4491449..af7792d 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -59,6 +59,7 @@
- fix an RPC fd leak.
- don't block signals we expect to dump core.
- fix pthread push order in expire_proc_direct().
+- fix libxml2 non-thread-safe calls.
4/11/2008 autofs-5.0.4
-----------------------
diff --git a/daemon/Makefile b/daemon/Makefile
index 9c2d858..371ec72 100644
--- a/daemon/Makefile
+++ b/daemon/Makefile
@@ -22,6 +22,13 @@ CFLAGS += -DVERSION_STRING=\"$(version)\"
LDFLAGS += -rdynamic
LIBS = -ldl
+ifeq ($(LDAP), 1)
+ ifeq ($(SASL), 1)
+ CFLAGS += $(XML_FLAGS)
+ LIBS += $(XML_LIBS)
+ endif
+endif
+
all: automount
automount: $(OBJS) $(AUTOFS_LIB)
diff --git a/daemon/automount.c b/daemon/automount.c
index 6759883..979ecd6 100644
--- a/daemon/automount.c
+++ b/daemon/automount.c
@@ -40,6 +40,7 @@
#include "automount.h"
#ifdef LIBXML2_WORKAROUND
#include <dlfcn.h>
+#include <libxml/parser.h>
#endif
const char *program; /* Initialized with argv[0] */
@@ -2113,6 +2114,8 @@ int main(int argc, char *argv[])
void *dh_xml2 = dlopen("libxml2.so", RTLD_NOW);
if (!dh_xml2)
dh_xml2 = dlopen("libxml2.so.2", RTLD_NOW);
+ if (dh_xml2)
+ xmlInitParser();
#endif
#ifdef TIRPC_WORKAROUND
void *dh_tirpc = dlopen("libitirpc.so", RTLD_NOW);
@@ -2156,8 +2159,10 @@ int main(int argc, char *argv[])
dlclose(dh_tirpc);
#endif
#ifdef LIBXML2_WORKAROUND
- if (dh_xml2)
+ if (dh_xml2) {
+ xmlCleanupParser();
dlclose(dh_xml2);
+ }
#endif
close_ioctl_ctl();
diff --git a/modules/lookup_ldap.c b/modules/lookup_ldap.c
index 8f352d6..2ecf5fe 100644
--- a/modules/lookup_ldap.c
+++ b/modules/lookup_ldap.c
@@ -897,7 +897,6 @@ int parse_ldap_config(unsigned logopt, struct lookup_context *ctxt)
return -1;
}
- xmlInitParser();
doc = xmlParseFile(auth_conf);
if (!doc) {
error(logopt, MODPREFIX
@@ -1069,7 +1068,6 @@ int parse_ldap_config(unsigned logopt, struct lookup_context *ctxt)
out:
xmlFreeDoc(doc);
- xmlCleanupParser();
if (fallback)
return 0;
Index: autofs.spec
===================================================================
RCS file: /cvs/pkgs/rpms/autofs/F-11/autofs.spec,v
retrieving revision 1.287
retrieving revision 1.288
diff -u -p -r1.287 -r1.288
--- autofs.spec 17 Jul 2009 01:49:31 -0000 1.287
+++ autofs.spec 3 Sep 2009 08:32:46 -0000 1.288
@@ -4,7 +4,7 @@
Summary: A tool for automatically mounting and unmounting filesystems
Name: autofs
Version: 5.0.4
-Release: 36
+Release: 38
Epoch: 1
License: GPLv2+
Group: System Environment/Daemons
@@ -72,6 +72,9 @@ Patch59: autofs-5.0.4-fix-map-type-info-
Patch60: autofs-5.0.4-fix-rpc-fd-leak.patch
Patch61: autofs-5.0.4-allow-automount-daemon-to-dump-core.patch
Patch62: autofs-5.0.4-fix-pthread-push-order-in-expire_proc_direct.patch
+Patch63: autofs-5.0.4-fix-libxml2-non-thread-safe-calls.patch
+Patch64: autofs-5.0.4-fix-direct-map-cache-locking.patch
+Patch65: autofs-5.0.4-fix-dont-umount-existing-direct-mount-on-reread.patch
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: autoconf, hesiod-devel, openldap-devel, bison, flex, libxml2-devel, cyrus-sasl-devel, openssl-devel module-init-tools util-linux nfs-utils e2fsprogs libtirpc-devel
Requires: kernel >= 2.6.17
@@ -175,6 +178,9 @@ echo %{version}-%{release} > .version
%patch60 -p1
%patch61 -p1
%patch62 -p1
+%patch63 -p1
+%patch64 -p1
+%patch65 -p1
%build
#CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=/usr --libdir=%{_libdir}
@@ -227,6 +233,11 @@ fi
%{_libdir}/autofs/
%changelog
+* Thu Sep 3 2009 Ian Kent <ikent at redhat.com> - 1:5.0.4-38
+- fix libxml2 non-thread-safe calls.
+- fix direct map cache locking.
+- fix patch "dont umount existing direct mount on reread" deadlock.
+
* Fri Jul 17 2009 Ian Kent <ikent at redhat.com> - 1:5.0.4-36
- fix typo in patch to allow dumping core.
- Previous message (by thread): rpms/autofs/devel autofs-5.0.4-fix-direct-map-cache-locking.patch, NONE, 1.1 autofs-5.0.4-fix-dont-umount-existing-direct-mount-on-reread.patch, NONE, 1.1 autofs-5.0.4-fix-libxml2-non-thread-safe-calls.patch, NONE, 1.1 autofs.spec, 1.286, 1.287
- Next message (by thread): rpms/redhat-rpm-config/devel redhat-rpm-config-9.0.3-filtering-macros.patch, 1.1, 1.2 redhat-rpm-config.spec, 1.73, 1.74
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list