X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fautofs4%2Fautofs_i.h;fp=fs%2Fautofs4%2Fautofs_i.h;h=385bed09b0d84005674acc1bba64ad816ced5e6c;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=47e38f3f7fecb2a97cf4f19b39f9d704a5974f04;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h index 47e38f3f7..385bed09b 100644 --- a/fs/autofs4/autofs_i.h +++ b/fs/autofs4/autofs_i.h @@ -3,7 +3,6 @@ * linux/fs/autofs/autofs_i.h * * Copyright 1997-1998 Transmeta Corporation - All Rights Reserved - * Copyright 2005-2006 Ian Kent * * This file is part of the Linux kernel and is made available under * the terms of the GNU General Public License, version 2, or at your @@ -14,7 +13,6 @@ /* Internal header file for autofs */ #include -#include #include /* This is the range of ioctl() numbers we claim as ours */ @@ -42,6 +40,14 @@ #define AUTOFS_SUPER_MAGIC 0x0187 +/* + * If the daemon returns a negative response (AUTOFS_IOC_FAIL) then the + * kernel will keep the negative response cached for up to the time given + * here, although the time can be shorter if the kernel throws the dcache + * entry away. This probably should be settable from user space. + */ +#define AUTOFS_NEGATIVE_TIMEOUT (60*HZ) /* 1 minute */ + /* Unified info structure. This is pointed to by both the dentry and inode structures. Each file in the filesystem has an instance of this structure. It holds a reference to the dentry, so dentries are never @@ -56,7 +62,6 @@ struct autofs_info { struct autofs_sb_info *sbi; unsigned long last_used; - atomic_t count; mode_t mode; size_t size; @@ -74,42 +79,30 @@ struct autofs_wait_queue { struct autofs_wait_queue *next; autofs_wqt_t wait_queue_token; /* We use the following to see what we are waiting for */ - unsigned int hash; - unsigned int len; + int hash; + int len; char *name; - u32 dev; - u64 ino; - uid_t uid; - gid_t gid; - pid_t pid; - pid_t tgid; /* This is for status reporting upon return */ int status; + atomic_t notified; atomic_t wait_ctr; }; #define AUTOFS_SBI_MAGIC 0x6d4a556d -#define AUTOFS_TYPE_INDIRECT 0x0001 -#define AUTOFS_TYPE_DIRECT 0x0002 -#define AUTOFS_TYPE_OFFSET 0x0004 - struct autofs_sb_info { u32 magic; - int pipefd; + struct dentry *root; struct file *pipe; pid_t oz_pgrp; int catatonic; int version; int sub_version; - int min_proto; - int max_proto; unsigned long exp_timeout; - unsigned int type; int reghost_enabled; int needs_reghost; struct super_block *sb; - struct mutex wq_mutex; + struct semaphore wq_sem; spinlock_t fs_lock; struct autofs_wait_queue *queues; /* Wait queue pointer */ }; @@ -172,10 +165,8 @@ int autofs4_expire_multi(struct super_block *, struct vfsmount *, extern struct inode_operations autofs4_symlink_inode_operations; extern struct inode_operations autofs4_dir_inode_operations; extern struct inode_operations autofs4_root_inode_operations; -extern struct inode_operations autofs4_indirect_root_inode_operations; -extern struct inode_operations autofs4_direct_root_inode_operations; -extern const struct file_operations autofs4_dir_operations; -extern const struct file_operations autofs4_root_operations; +extern struct file_operations autofs4_dir_operations; +extern struct file_operations autofs4_root_operations; /* Initializing function */ @@ -184,6 +175,13 @@ struct autofs_info *autofs4_init_ino(struct autofs_info *, struct autofs_sb_info /* Queue management functions */ +enum autofs_notify +{ + NFY_NONE, + NFY_MOUNT, + NFY_EXPIRE +}; + int autofs4_wait(struct autofs_sb_info *,struct dentry *, enum autofs_notify); int autofs4_wait_release(struct autofs_sb_info *,autofs_wqt_t,int); void autofs4_catatonic_mode(struct autofs_sb_info *); @@ -201,22 +199,12 @@ static inline int autofs4_follow_mount(struct vfsmount **mnt, struct dentry **de return res; } -static inline u32 autofs4_get_dev(struct autofs_sb_info *sbi) -{ - return new_encode_dev(sbi->sb->s_dev); -} - -static inline u64 autofs4_get_ino(struct autofs_sb_info *sbi) -{ - return sbi->sb->s_root->d_inode->i_ino; -} - static inline int simple_positive(struct dentry *dentry) { return dentry->d_inode && !d_unhashed(dentry); } -static inline int __simple_empty(struct dentry *dentry) +static inline int simple_empty_nolock(struct dentry *dentry) { struct dentry *child; int ret = 0; @@ -228,6 +216,3 @@ static inline int __simple_empty(struct dentry *dentry) out: return ret; } - -void autofs4_dentry_release(struct dentry *); -extern void autofs4_kill_sb(struct super_block *);