summaryrefslogtreecommitdiffstats
path: root/fs/autofs
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1998-05-07 02:55:41 +0000
committerRalf Baechle <ralf@linux-mips.org>1998-05-07 02:55:41 +0000
commitdcec8a13bf565e47942a1751a9cec21bec5648fe (patch)
tree548b69625b18cc2e88c3e68d0923be546c9ebb03 /fs/autofs
parent2e0f55e79c49509b7ff70ff1a10e1e9e90a3dfd4 (diff)
o Merge with Linux 2.1.99.
o Fix ancient bug in the ELF loader making ldd crash. o Fix ancient bug in the keyboard code for SGI, SNI and Jazz.
Diffstat (limited to 'fs/autofs')
-rw-r--r--fs/autofs/inode.c3
-rw-r--r--fs/autofs/root.c14
2 files changed, 9 insertions, 8 deletions
diff --git a/fs/autofs/inode.c b/fs/autofs/inode.c
index cbcefc34a..d17115208 100644
--- a/fs/autofs/inode.c
+++ b/fs/autofs/inode.c
@@ -41,16 +41,13 @@ static void autofs_put_super(struct super_block *sb)
if ( !sbi->catatonic )
autofs_catatonic_mode(sbi); /* Free wait queues, close pipe */
- lock_super(sb);
autofs_hash_nuke(&sbi->dirhash);
for ( n = 0 ; n < AUTOFS_MAX_SYMLINKS ; n++ ) {
if ( test_bit(n, sbi->symlink_bitmap) )
kfree(sbi->symlink[n].data);
}
- sb->s_dev = 0;
kfree(sb->u.generic_sbp);
- unlock_super(sb);
DPRINTK(("autofs: shutting down\n"));
diff --git a/fs/autofs/root.c b/fs/autofs/root.c
index 36d38b84e..60f9efe01 100644
--- a/fs/autofs/root.c
+++ b/fs/autofs/root.c
@@ -109,8 +109,7 @@ static int try_to_fill_dentry(struct dentry *dentry, struct super_block *sb, str
if ( !(ent = autofs_hash_lookup(&sbi->dirhash, &dentry->d_name)) ) {
do {
if ( status && dentry->d_inode ) {
- printk("autofs: lookup failure on existing dentry, status = %d, name = %s\n", status, dentry->d_name.name);
- printk("autofs: trying to recover, but prepare for Armageddon\n");
+ printk("autofs warning: lookup failure on existing dentry, status = %d, name = %s\n", status, dentry->d_name.name);
break;
}
@@ -146,7 +145,10 @@ static int try_to_fill_dentry(struct dentry *dentry, struct super_block *sb, str
return !autofs_wait(sbi, &dentry->d_name);
}
- autofs_update_usage(&sbi->dirhash,ent);
+ /* We don't update the usages for the autofs daemon itself, this
+ is necessary for recursive autofs mounts */
+ if ( !autofs_oz_mode(sbi) )
+ autofs_update_usage(&sbi->dirhash,ent);
dentry->d_flags &= ~DCACHE_AUTOFS_PENDING;
return 1;
@@ -188,8 +190,10 @@ static int autofs_revalidate(struct dentry * dentry)
}
/* Update the usage list */
- ent = (struct autofs_dir_ent *) dentry->d_time;
- autofs_update_usage(&sbi->dirhash,ent);
+ if ( !autofs_oz_mode(sbi) ) {
+ ent = (struct autofs_dir_ent *) dentry->d_time;
+ autofs_update_usage(&sbi->dirhash,ent);
+ }
return 1;
}