1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
/* -*- linux-c -*- --------------------------------------------------------- *
*
* linux/fs/autofs/dir.c
*
* Copyright 1997-1998 Transmeta Corporation -- All Rights Reserved
*
* 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
* option, any later version, incorporated herein by reference.
*
* ------------------------------------------------------------------------- */
#include "autofs_i.h"
static int autofs_dir_readdir(struct file *filp,
void *dirent, filldir_t filldir)
{
struct inode *inode=filp->f_dentry->d_inode;
switch((unsigned long) filp->f_pos)
{
case 0:
if (filldir(dirent, ".", 1, 0, inode->i_ino) < 0)
return 0;
filp->f_pos++;
/* fall through */
case 1:
if (filldir(dirent, "..", 2, 1, AUTOFS_ROOT_INO) < 0)
return 0;
filp->f_pos++;
/* fall through */
}
return 1;
}
/*
* No entries except for "." and "..", both of which are handled by the VFS layer
*/
static struct dentry *autofs_dir_lookup(struct inode *dir,struct dentry *dentry)
{
d_add(dentry, NULL);
return NULL;
}
struct file_operations autofs_dir_operations = {
read: generic_read_dir,
readdir: autofs_dir_readdir,
};
struct inode_operations autofs_dir_inode_operations = {
lookup: autofs_dir_lookup,
};
|