- some more upstream bug fixes.
This commit is contained in:
parent
8f63fceb77
commit
a131fea513
78
autofs-5.0.6-fix-recursive-mount-deadlock.patch
Normal file
78
autofs-5.0.6-fix-recursive-mount-deadlock.patch
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
autofs-5.0.6 - fix recursive mount deadlock
|
||||||
|
|
||||||
|
From: Ian Kent <raven@themaw.net>
|
||||||
|
|
||||||
|
Prior to the vfs-automount changes that went into 2.6.38
|
||||||
|
and were finalized in 3.1 it was not possible to block
|
||||||
|
path walks into multi-mounts whose root was covered by
|
||||||
|
another mount. To deal with that a write lock was used
|
||||||
|
to ensure the mount tree construction was completed. This
|
||||||
|
restricts the types of recursively defined mount maps that
|
||||||
|
can be used and can lead to a deadlock during lookup.
|
||||||
|
|
||||||
|
Now that we can prevent processes walking into multi-mounts
|
||||||
|
that are under construction we no longer need to use a
|
||||||
|
write lock.
|
||||||
|
|
||||||
|
Also, in the patch below, a cache writelock is changed to
|
||||||
|
a read lock because a write lock isn't needed since the
|
||||||
|
map cache entry isn't being updated.
|
||||||
|
---
|
||||||
|
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
daemon/direct.c | 14 ++++++++++++--
|
||||||
|
2 files changed, 13 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/CHANGELOG b/CHANGELOG
|
||||||
|
index 936c9ab..9cdad6e 100644
|
||||||
|
--- a/CHANGELOG
|
||||||
|
+++ b/CHANGELOG
|
||||||
|
@@ -12,6 +12,7 @@
|
||||||
|
- configure.in: allow cross compilation.
|
||||||
|
- README: update mailing list subscription info.
|
||||||
|
- allow non root user to check status.
|
||||||
|
+- fix recursive mount deadlock.
|
||||||
|
|
||||||
|
25/07/2012 autofs-5.0.7
|
||||||
|
=======================
|
||||||
|
diff --git a/daemon/direct.c b/daemon/direct.c
|
||||||
|
index 7e2f0d7..3e09c5d 100644
|
||||||
|
--- a/daemon/direct.c
|
||||||
|
+++ b/daemon/direct.c
|
||||||
|
@@ -1285,6 +1285,8 @@ int handle_packet_missing_direct(struct autofs_point *ap, autofs_packet_missing_
|
||||||
|
struct timespec wait;
|
||||||
|
struct timeval now;
|
||||||
|
int ioctlfd, len, state;
|
||||||
|
+ unsigned int kver_major = get_kver_major();
|
||||||
|
+ unsigned int kver_minor = get_kver_minor();
|
||||||
|
|
||||||
|
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &state);
|
||||||
|
|
||||||
|
@@ -1297,8 +1299,16 @@ int handle_packet_missing_direct(struct autofs_point *ap, autofs_packet_missing_
|
||||||
|
* cache entry we will not be able to find the mapent. So
|
||||||
|
* we must take the source writelock to ensure the parent
|
||||||
|
* has mount is complete before we look for the entry.
|
||||||
|
+ *
|
||||||
|
+ * Since the vfs-automount kernel changes we can now block
|
||||||
|
+ * on covered mounts during mount tree construction so a
|
||||||
|
+ * write lock is no longer needed. So we now can handle a
|
||||||
|
+ * wider class of recursively define mount lookups.
|
||||||
|
*/
|
||||||
|
- master_source_writelock(ap->entry);
|
||||||
|
+ if (kver_major > 5 || (kver_major == 5 && kver_minor > 1))
|
||||||
|
+ master_source_readlock(ap->entry);
|
||||||
|
+ else
|
||||||
|
+ master_source_writelock(ap->entry);
|
||||||
|
map = ap->entry->maps;
|
||||||
|
while (map) {
|
||||||
|
/*
|
||||||
|
@@ -1311,7 +1321,7 @@ int handle_packet_missing_direct(struct autofs_point *ap, autofs_packet_missing_
|
||||||
|
}
|
||||||
|
|
||||||
|
mc = map->mc;
|
||||||
|
- cache_writelock(mc);
|
||||||
|
+ cache_readlock(mc);
|
||||||
|
me = cache_lookup_ino(mc, pkt->dev, pkt->ino);
|
||||||
|
if (me)
|
||||||
|
break;
|
38
autofs-5.0.6-increase-file-map-read-buffer-size.patch
Normal file
38
autofs-5.0.6-increase-file-map-read-buffer-size.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
autofs-5.0.6 - increase file map read buffer size
|
||||||
|
|
||||||
|
From: Ian Kent <raven@themaw.net>
|
||||||
|
|
||||||
|
The file map entry read buffer can be too small for larger
|
||||||
|
multi-mount map entries so increase it.
|
||||||
|
---
|
||||||
|
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
include/automount.h | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 1 deletions(-)
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/CHANGELOG b/CHANGELOG
|
||||||
|
index 9cdad6e..3bdf8a4 100644
|
||||||
|
--- a/CHANGELOG
|
||||||
|
+++ b/CHANGELOG
|
||||||
|
@@ -13,6 +13,7 @@
|
||||||
|
- README: update mailing list subscription info.
|
||||||
|
- allow non root user to check status.
|
||||||
|
- fix recursive mount deadlock.
|
||||||
|
+- increase file map read buffer size.
|
||||||
|
|
||||||
|
25/07/2012 autofs-5.0.7
|
||||||
|
=======================
|
||||||
|
diff --git a/include/automount.h b/include/automount.h
|
||||||
|
index 561fcc2..37541f5 100644
|
||||||
|
--- a/include/automount.h
|
||||||
|
+++ b/include/automount.h
|
||||||
|
@@ -233,7 +233,7 @@ int rmdir_path(struct autofs_point *ap, const char *path, dev_t dev);
|
||||||
|
#define AUTOFS_LOOKUP_VERSION 5
|
||||||
|
|
||||||
|
#define KEY_MAX_LEN NAME_MAX
|
||||||
|
-#define MAPENT_MAX_LEN 4095
|
||||||
|
+#define MAPENT_MAX_LEN 16384
|
||||||
|
#define PARSE_MAX_BUF KEY_MAX_LEN + MAPENT_MAX_LEN + 2
|
||||||
|
|
||||||
|
int lookup_nss_read_master(struct master *master, time_t age);
|
57
autofs-5.0.7-handle-new-location-of-systemd.patch
Normal file
57
autofs-5.0.7-handle-new-location-of-systemd.patch
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
autofs-5.0.7 - Handle new location of systemd
|
||||||
|
|
||||||
|
From: Frederic Crozat <fcrozat@suse.com>
|
||||||
|
|
||||||
|
Some distributions are moving systemd unit files from /lib to
|
||||||
|
/usr/lib, so we need to test both directories.
|
||||||
|
|
||||||
|
edit: imk
|
||||||
|
It occurs to me I've forgotten to check for the 64 bit variants
|
||||||
|
of the directories, so add them as well.
|
||||||
|
end edit: imk
|
||||||
|
---
|
||||||
|
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
aclocal.m4 | 2 +-
|
||||||
|
configure | 2 +-
|
||||||
|
3 files changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/CHANGELOG b/CHANGELOG
|
||||||
|
index 3bdf8a4..8f6bb3a 100644
|
||||||
|
--- a/CHANGELOG
|
||||||
|
+++ b/CHANGELOG
|
||||||
|
@@ -14,6 +14,7 @@
|
||||||
|
- allow non root user to check status.
|
||||||
|
- fix recursive mount deadlock.
|
||||||
|
- increase file map read buffer size.
|
||||||
|
+- handle new location of systemd.
|
||||||
|
|
||||||
|
25/07/2012 autofs-5.0.7
|
||||||
|
=======================
|
||||||
|
diff --git a/aclocal.m4 b/aclocal.m4
|
||||||
|
index 1798c8b..47bca0c 100644
|
||||||
|
--- a/aclocal.m4
|
||||||
|
+++ b/aclocal.m4
|
||||||
|
@@ -234,7 +234,7 @@ AC_DEFUN([AF_WITH_SYSTEMD],
|
||||||
|
[if test "$withval" = yes; then
|
||||||
|
if test -z "$systemddir"; then
|
||||||
|
AC_MSG_CHECKING([location of the systemd unit files directory])
|
||||||
|
- for systemd_d in /lib/systemd/system; do
|
||||||
|
+ for systemd_d in /usr/lib/systemd/system /usr/lib64/systemd/system /lib/systemd/system /lib64/systemd/system; do
|
||||||
|
if test -z "$systemddir"; then
|
||||||
|
if test -d "$systemd_d"; then
|
||||||
|
systemddir="$systemd_d"
|
||||||
|
diff --git a/configure b/configure
|
||||||
|
index ba3bba6..3722a46 100755
|
||||||
|
--- a/configure
|
||||||
|
+++ b/configure
|
||||||
|
@@ -2157,7 +2157,7 @@ if test "${with_systemd+set}" = set; then :
|
||||||
|
if test -z "$systemddir"; then
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking location of the systemd unit files directory" >&5
|
||||||
|
$as_echo_n "checking location of the systemd unit files directory... " >&6; }
|
||||||
|
- for systemd_d in /lib/systemd/system; do
|
||||||
|
+ for systemd_d in /usr/lib/systemd/system /usr/lib64/systemd/system /lib/systemd/system /lib64/systemd/system; do
|
||||||
|
if test -z "$systemddir"; then
|
||||||
|
if test -d "$systemd_d"; then
|
||||||
|
systemddir="$systemd_d"
|
13
autofs.spec
13
autofs.spec
@ -8,7 +8,7 @@
|
|||||||
Summary: A tool for automatically mounting and unmounting filesystems
|
Summary: A tool for automatically mounting and unmounting filesystems
|
||||||
Name: autofs
|
Name: autofs
|
||||||
Version: 5.0.7
|
Version: 5.0.7
|
||||||
Release: 5%{?dist}
|
Release: 6%{?dist}
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
Group: System Environment/Daemons
|
Group: System Environment/Daemons
|
||||||
@ -27,6 +27,9 @@ Patch11: autofs-5.0.7-configure-in-allow-cross-compilation.patch
|
|||||||
Patch12: autofs-5.0.7-README-update-mailing-list-subscription-info.patch
|
Patch12: autofs-5.0.7-README-update-mailing-list-subscription-info.patch
|
||||||
Patch13: autofs-5.0.7-allow-non-root-user-to-check-status.patch
|
Patch13: autofs-5.0.7-allow-non-root-user-to-check-status.patch
|
||||||
Patch14: autofs-5.0.7-configure-allow-cross-compilation-update.patch
|
Patch14: autofs-5.0.7-configure-allow-cross-compilation-update.patch
|
||||||
|
Patch15: autofs-5.0.6-fix-recursive-mount-deadlock.patch
|
||||||
|
Patch16: autofs-5.0.6-increase-file-map-read-buffer-size.patch
|
||||||
|
Patch17: autofs-5.0.7-handle-new-location-of-systemd.patch
|
||||||
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
%if %{with_systemd}
|
%if %{with_systemd}
|
||||||
BuildRequires: systemd-units
|
BuildRequires: systemd-units
|
||||||
@ -97,6 +100,9 @@ echo %{version}-%{release} > .version
|
|||||||
%patch12 -p1
|
%patch12 -p1
|
||||||
%patch13 -p1
|
%patch13 -p1
|
||||||
%patch14 -p1
|
%patch14 -p1
|
||||||
|
%patch15 -p1
|
||||||
|
%patch16 -p1
|
||||||
|
%patch17 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
#CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=/usr --libdir=%{_libdir}
|
#CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=/usr --libdir=%{_libdir}
|
||||||
@ -188,6 +194,11 @@ fi
|
|||||||
%dir /etc/auto.master.d
|
%dir /etc/auto.master.d
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Oct 18 2012 Ian Kent <ikent@redhat.com> - 1:5.0.7-6
|
||||||
|
- fix recursive mount deadlock.
|
||||||
|
- increase file map read buffer size.
|
||||||
|
- handle new location of systemd.
|
||||||
|
|
||||||
* Tue Oct 15 2012 Ian Kent <ikent@redhat.com> - 1:5.0.7-5
|
* Tue Oct 15 2012 Ian Kent <ikent@redhat.com> - 1:5.0.7-5
|
||||||
- configure: allow cross compilation update.
|
- configure: allow cross compilation update.
|
||||||
- fix date in changelog entry.
|
- fix date in changelog entry.
|
||||||
|
Loading…
Reference in New Issue
Block a user