04 Mar, 2010
3 commits
-
... and get rid of open-coding its guts (i.e. RIP autofs4_force_release())
Signed-off-by: Al Viro
-
Signed-off-by: Al Viro
-
This reverts commit 213614d583748d00967a91cacd656f417efb36ce.
Alas, ->d_revalidate() can't rely on ->lookup() finishing what
it's started; if d_alloc() in do_lookup() fails, we are not going
to call ->lookup() at all.Signed-off-by: Al Viro
16 Dec, 2009
10 commits
-
We need to be able to cope with the directory mutex being held during
->d_revalidate() in some cases, but not all cases, and not necessarily by
us. Because we need to release the mutex when we call back to the daemon
to do perform a mount we must be sure that it is us who holds the mutex so
we must redirect mount requests to ->lookup() if the mutex is held.Signed-off-by: Ian Kent
Cc: Sage Weil
Cc: Al Viro
Cc: Andreas Dilger
Cc: Christoph Hellwig
Cc: Yehuda Saheh
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
In autofs4_lookup_expiring() a declaration within the list traversal loop
uses a declaration that has the same name as the function parameter.Signed-off-by: Ian Kent
Cc: Sage Weil
Cc: Al Viro
Cc: Andreas Dilger
Cc: Christoph Hellwig
Cc: Yehuda Saheh
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
In autofs4_lookup_active() a declaration within the list traversal loop
uses a declaration that has the same name as the function parameter.Signed-off-by: Ian Kent
Cc: Sage Weil
Cc: Al Viro
Cc: Andreas Dilger
Cc: Christoph Hellwig
Cc: Yehuda Saheh
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
We unhash the dentry (in a subsequent patch) in ->d_revalidate() in order
to send mount requests to ->lookup(). But then we can not rely on
d_unhased() to give reliable results because it may be called at any time
by any code path. The d_unhashed() function is used by __simple_empty()
in the path walking callbacks but autofs mount point dentrys should have
no directories at all so a list_empty() on d_subdirs should be (and is)
sufficient.Signed-off-by: Ian Kent
Cc: Sage Weil
Cc: Al Viro
Cc: Andreas Dilger
Cc: Christoph Hellwig
Cc: Yehuda Saheh
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
The lookup functions for active and expiring dentrys use parameters that
can be easily obtained on entry so we change the call to to take just the
dentry. This makes the subsequent change, to send all lookups to
->lookup(), a bit cleaner.Signed-off-by: Ian Kent
Cc: Sage Weil
Cc: Al Viro
Cc: Andreas Dilger
Cc: Christoph Hellwig
Cc: Yehuda Saheh
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Rename the variable unhashed to active in autofs4_lookup() to better
reflect its usage.Signed-off-by: Ian Kent
Cc: Sage Weil
Cc: Al Viro
Cc: Andreas Dilger
Cc: Christoph Hellwig
Cc: Yehuda Saheh
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Eliminate the use of the d_lock spin lock by using the autofs super block
info spin lock. This reduces the number of spin locks we use by one and
makes the code for the following patch (to redirect ->d_revalidate() to
->lookup()) a little simpler.Signed-off-by: Ian Kent
Cc: Sage Weil
Cc: Al Viro
Cc: Andreas Dilger
Cc: Christoph Hellwig
Cc: Yehuda Saheh
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Define simple helper function for checking if we need to trigger a mount.
Signed-off-by: Ian Kent
Cc: Sage Weil
Cc: Al Viro
Cc: Andreas Dilger
Cc: Christoph Hellwig
Cc: Yehuda Saheh
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Define some simple helper functions for adding and deleting entries on the
expiring dentry list.Signed-off-by: Ian Kent
Cc: Sage Weil
Cc: Al Viro
Cc: Andreas Dilger
Cc: Christoph Hellwig
Cc: Yehuda Saheh
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Define some simple helper functions for adding and deleting entries on the
active (and unhashed) dentry list.Signed-off-by: Ian Kent
Cc: Sage Weil
Cc: Al Viro
Cc: Andreas Dilger
Cc: Christoph Hellwig
Cc: Yehuda Saheh
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
01 Sep, 2009
1 commit
-
In the recent change by Al Viro that changes verious subsystems
to use "struct path" one case was missed in the autofs4 module
which causes mounts to no longer expire.Signed-off-by: Ian Kent
Signed-off-by: Linus Torvalds
13 Jul, 2009
1 commit
-
* Remove smp_lock.h from files which don't need it (including some headers!)
* Add smp_lock.h to files which do need it
* Make smp_lock.h include conditional in hardirq.h
It's needed only for one kernel_locked() usage which is under CONFIG_PREEMPTThis will make hardirq.h inclusion cheaper for every PREEMPT=n config
(which includes allmodconfig/allyesconfig, BTW)Signed-off-by: Alexey Dobriyan
Signed-off-by: Linus Torvalds
12 Jun, 2009
3 commits
-
Signed-off-by: Al Viro
-
Signed-off-by: Al Viro
-
Signed-off-by: Al Viro
10 Jun, 2009
1 commit
-
The recent ->lookup() deadlock correction required the directory inode
mutex to be dropped while waiting for expire completion. We were
concerned about side effects from this change and one has been identified.I saw several error messages.
They cause autofs to become quite confused and don't really point to the
actual problem.Things like:
handle_packet_missing_direct:1376: can't find map entry for (43,1827932)
which is usually totally fatal (although in this case it wouldn't be
except that I treat is as such because it normally is).do_mount_direct: direct trigger not valid or already mounted
/test/nested/g3c/s1/ss1which is recoverable, however if this problem is at play it can cause
autofs to become quite confused as to the dependencies in the mount tree
because mount triggers end up mounted multiple times. It's hard to
accurately check for this over mounting case and automount shouldn't need
to if the kernel module is doing its job.There was one other message, similar in consequence of this last one but I
can't locate a log example just now.When checking if a mount has already completed prior to adding a new mount
request to the wait queue we check if the dentry is hashed and, if so, if
it is a mount point. But, if a mount successfully completed while we
slept on the wait queue mutex the dentry must exist for the mount to have
completed so the test is not really needed.Mounts can also be done on top of a global root dentry, so for the above
case, where a mount request completes and the wait queue entry has already
been removed, the hashed test returning false can cause an incorrect
callback to the daemon. Also, d_mountpoint() is not sufficient to check
if a mount has completed for the multi-mount case when we don't have a
real mount at the base of the tree.Signed-off-by: Ian Kent
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
03 May, 2009
1 commit
-
Fix an obvious incorrect return status in autofs4_mount_busy().
Signed-off-by: Ian Kent
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
21 Apr, 2009
2 commits
-
Signed-off-by: Al Viro
-
Missing conversion from kernel to userland dev_t; this sucker
breaks as soon as we get sufficiently many autofs mounts for
new_encode_dev(s_dev) != s_dev.Note: this is the minimal fix.
Signed-off-by: Al Viro
01 Apr, 2009
2 commits
-
A deadlock can occur when user space uses a signal (autofs version 4 uses
SIGCHLD for this) to effect expire completion.The order of events is:
Expire process completes, but before being able to send SIGCHLD to it's parent
...Another process walks onto a different mount point and drops the directory
inode semaphore prior to sending the request to the daemon as it must ...A third process does an lstat on on the expired mount point causing it to wait
on expire completion (unfortunately) holding the directory semaphore.The mount request then arrives at the daemon which does an lstat and,
deadlock.For some time I was concerned about releasing the directory semaphore around
the expire wait in autofs4_lookup as well as for the mount call back. I
finally realized that the last round of changes in this function made the
expiring dentry and the lookup dentry separate and distinct so the check and
possible wait can be done anywhere prior to the mount call back. This patch
moves the check to just before the mount call back and inside the directory
inode mutex release.Signed-off-by: Ian Kent
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
A significant portion of the autofs_dev_ioctl_expire() and
autofs4_expire_multi() functions is duplicated code. This patch cleans that
up.Signed-off-by: Ian Kent
Signed-off-by: Jeff Moyer
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
28 Mar, 2009
1 commit
-
Signed-off-by: Al Viro
22 Jan, 2009
1 commit
-
Signed-off-by: Alexey Dobriyan
07 Jan, 2009
4 commits
-
In function validate_dev_ioctl() we check that the string we've been sent
is a valid path. The function that does this check assumes the string is
NULL terminated but our NULL termination check isn't done until after this
call. This patch changes the order of the check.Signed-off-by: Ian Kent
Acked-by: Jeff Moyer
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
- the type assigned at mount when no type is given is changed
from 0 to AUTOFS_TYPE_INDIRECT. This was done because 0 and
AUTOFS_TYPE_INDIRECT were being treated implicitly as the same
type.- previously, an offset mount had it's type set to
AUTOFS_TYPE_DIRECT|AUTOFS_TYPE_OFFSET but the mount control
re-implementation needs to be able distinguish all three types.
So this was changed to make the type setting explicit.- a type AUTOFS_TYPE_ANY was added for use by the re-implementation
when checking if a given path is a mountpoint. It's not really a
type as we use this to ask if a given path is a mountpoint in the
autofs_dev_ioctl_ismountpoint() function.- functions to set and test the autofs mount types have been added to
improve readability and make the type usage explicit.- the mount type is used from user space for the mount control
re-implementtion so, for consistency, all the definitions have
been moved to the user space include file include/linux/auto_fs4.h.Signed-off-by: Ian Kent
Signed-off-by: Jeff Moyer
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
A local definition of devid in autofs_dev_ioctl_ismountpoint() shadows
the fuction wide definition.Signed-off-by: Ian Kent
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
The parameter usage in the device node ioctl code uses arg1 and arg2 as
parameter names. This patch redefines the parameter names to reflect what
they actually are in an effort to make the code more readable.Signed-off-by: Ian Kent
Signed-off-by: Jeff Moyer
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
06 Jan, 2009
1 commit
-
... and don't bother in callers. Don't bother with zeroing i_blocks,
while we are at it - it's already been zeroed.i_mode is not worth the effort; it has no common default value.
Signed-off-by: Al Viro
14 Nov, 2008
3 commits
-
Conflicts:
security/keys/internal.h
security/keys/process_keys.c
security/keys/request_key.cFixed conflicts above by using the non 'tsk' versions.
Signed-off-by: James Morris
-
Pass credentials through dentry_open() so that the COW creds patch can have
SELinux's flush_unauthorized_files() pass the appropriate creds back to itself
when it opens its null chardev.The security_dentry_open() call also now takes a creds pointer, as does the
dentry_open hook in struct security_operations.Signed-off-by: David Howells
Acked-by: James Morris
Signed-off-by: James Morris -
Wrap access to task credentials so that they can be separated more easily from
the task_struct during the introduction of COW creds.Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id().
Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more
sense to use RCU directly rather than a convenient wrapper; these will be
addressed by later patches.Signed-off-by: David Howells
Reviewed-by: James Morris
Acked-by: Serge Hallyn
Cc: Ian Kent
Cc: autofs@linux.kernel.org
Signed-off-by: James Morris
07 Nov, 2008
2 commits
-
The function check_dev_ioctl_version() returns an error code upon fail but
it isn't captured and returned in validate_dev_ioctl() as it should be.[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Ian Kent
Signed-off-by: Jeff Moyer
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
When checking a directory tree in autofs_tree_busy() we can incorrectly
decide that the tree isn't busy. This happens for the case of an active
offset mount as autofs4_follow_mount() follows past the active offset
mount, which has an open file handle used for expires, causing the file
handle not to count toward the busyness check.Signed-off-by: Ian Kent
Signed-off-by: Jeff Moyer
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
17 Oct, 2008
3 commits
-
Add a miscellaneous device to the autofs4 module for routing ioctls. This
provides the ability to obtain an ioctl file handle for an autofs mount
point that is possibly covered by another mount.The actual problem with autofs is that it can't reconnect to existing
mounts. Immediately one things of just adding the ability to remount
autofs file systems would solve it, but alas, that can't work. This is
because autofs direct mounts and the implementation of "on demand mount
and expire" of nested mount trees have the file system mounted on top of
the mount trigger dentry.To resolve this a miscellaneous device node for routing ioctl commands to
these mount points has been implemented in the autofs4 kernel module and a
library added to autofs. This provides the ability to open a file
descriptor for these over mounted autofs mount points.Please refer to Documentation/filesystems/autofs4-mount-control.txt for a
discussion of the problem, implementation alternatives considered and a
description of the interface.[akpm@linux-foundation.org: coding-style fixes]
[akpm@linux-foundation.org: build fix]
Signed-off-by: Ian Kent
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Track the uid and gid of the last process to request a mount for on an
autofs dentry.[akpm@linux-foundation.org: fix tpyo in comment]
Signed-off-by: Ian Kent
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Usage of the AUTOFS_TYPE_* defines is a little confusing and appears
inconsistent.Signed-off-by: Ian Kent
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
14 Oct, 2008
1 commit
-
This is a much better version of a previous patch to make the parser
tables constant. Rather than changing the typedef, we put the "const" in
all the various places where its required, allowing the __initconst
exception for nfsroot which was the cause of the previous trouble.This was posted for review some time ago and I believe its been in -mm
since then.Signed-off-by: Steven Whitehouse
Cc: Alexander Viro
Signed-off-by: Linus Torvalds