From: David Howells Here's a patch to allow the kAFS filesystem to use the automount facility patch presented in a previous email. It allows me to mount an AFS root volume on /afs and then just walk through the directory structure causing referenced volumes to be automounted and autoumounted. For instance, if I do: [root@andromeda root]# mount -t afs \#root.afs. /afs [root@andromeda root]# ls /afs asd cambridge cambridge.redhat.com grand.central.org [root@andromeda root]# ls /afs/cambridge afsdoc [root@andromeda root]# ls /afs/cambridge/afsdoc/ ChangeLog html LICENSE pdf RELNOTES-1.2.2 And then look in the mountpoint catalogue, I see: [root@andromeda root]# cat /proc/mounts ... #root.afs. /afs afs rw 0 0 #root.cell. /afs/cambridge.redhat.com afs rw 0 0 #afsdoc. /afs/cambridge.redhat.com/afsdoc afs rw 0 0 Then after waiting a few minutes: [root@andromeda root]# cat /proc/mounts ... #root.afs. /afs afs rw 0 0 Is all that remains. Signed-off-by: Andrew Morton --- 25-akpm/fs/afs/cmservice.c | 4 ---- 25-akpm/fs/afs/internal.h | 2 -- 25-akpm/fs/afs/mntpt.c | 9 --------- 25-akpm/fs/afs/super.c | 2 -- 4 files changed, 17 deletions(-) diff -puN fs/afs/cmservice.c~kafs-automount-support fs/afs/cmservice.c --- 25/fs/afs/cmservice.c~kafs-automount-support Thu Jul 1 13:59:41 2004 +++ 25-akpm/fs/afs/cmservice.c Thu Jul 1 13:59:41 2004 @@ -307,10 +307,8 @@ int afscm_start(void) if (ret < 0) goto kill; -#ifdef AFS_AUTOMOUNT_SUPPORT afs_kafstimod_add_timer(&afs_mntpt_expiry_timer, afs_mntpt_expiry_timeout * HZ); -#endif } afscm_usage++; @@ -392,9 +390,7 @@ void afscm_stop(void) } spin_unlock(&kafscmd_attention_lock); -#ifdef AFS_AUTOMOUNT_SUPPORT afs_kafstimod_del_timer(&afs_mntpt_expiry_timer); -#endif } up_write(&afscm_sem); diff -puN fs/afs/internal.h~kafs-automount-support fs/afs/internal.h --- 25/fs/afs/internal.h~kafs-automount-support Thu Jul 1 13:59:41 2004 +++ 25-akpm/fs/afs/internal.h Thu Jul 1 13:59:41 2004 @@ -107,11 +107,9 @@ extern struct cachefs_netfs afs_cache_ne */ extern struct inode_operations afs_mntpt_inode_operations; extern struct file_operations afs_mntpt_file_operations; -#ifdef AFS_AUTOMOUNT_SUPPORT extern struct afs_timer afs_mntpt_expiry_timer; extern struct afs_timer_ops afs_mntpt_expiry_timer_ops; extern unsigned long afs_mntpt_expiry_timeout; -#endif extern int afs_mntpt_check_symlink(struct afs_vnode *vnode); diff -puN fs/afs/mntpt.c~kafs-automount-support fs/afs/mntpt.c --- 25/fs/afs/mntpt.c~kafs-automount-support Thu Jul 1 13:59:41 2004 +++ 25-akpm/fs/afs/mntpt.c Thu Jul 1 13:59:41 2004 @@ -30,10 +30,7 @@ static struct dentry *afs_mntpt_lookup(s struct dentry *dentry, struct nameidata *nd); static int afs_mntpt_open(struct inode *inode, struct file *file); - -#ifdef AFS_AUTOMOUNT_SUPPORT static int afs_mntpt_follow_link(struct dentry *dentry, struct nameidata *nd); -#endif struct file_operations afs_mntpt_file_operations = { .open = afs_mntpt_open, @@ -41,14 +38,11 @@ struct file_operations afs_mntpt_file_op struct inode_operations afs_mntpt_inode_operations = { .lookup = afs_mntpt_lookup, -#ifdef AFS_AUTOMOUNT_SUPPORT .follow_link = afs_mntpt_follow_link, -#endif .readlink = page_readlink, .getattr = afs_inode_getattr, }; -#ifdef AFS_AUTOMOUNT_SUPPORT static LIST_HEAD(afs_vfsmounts); static void afs_mntpt_expiry_timed_out(struct afs_timer *timer); @@ -60,7 +54,6 @@ struct afs_timer_ops afs_mntpt_expiry_ti struct afs_timer afs_mntpt_expiry_timer; unsigned long afs_mntpt_expiry_timeout = 20; -#endif /*****************************************************************************/ /* @@ -156,7 +149,6 @@ static int afs_mntpt_open(struct inode * return -EREMOTE; } /* end afs_mntpt_open() */ -#ifdef AFS_AUTOMOUNT_SUPPORT /*****************************************************************************/ /* * create a vfsmount to be automounted @@ -288,4 +280,3 @@ static void afs_mntpt_expiry_timed_out(s kleave(""); } /* end afs_mntpt_expiry_timed_out() */ -#endif diff -puN fs/afs/super.c~kafs-automount-support fs/afs/super.c --- 25/fs/afs/super.c~kafs-automount-support Thu Jul 1 13:59:41 2004 +++ 25-akpm/fs/afs/super.c Thu Jul 1 13:59:41 2004 @@ -78,9 +78,7 @@ int __init afs_fs_init(void) _enter(""); -#ifdef AFS_AUTOMOUNT_SUPPORT afs_timer_init(&afs_mntpt_expiry_timer, &afs_mntpt_expiry_timer_ops); -#endif /* create ourselves an inode cache */ atomic_set(&afs_count_active_inodes, 0); _