ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / linux / umsdos_fs_i.h
1 #ifndef UMSDOS_FS_I_H
2 #define UMSDOS_FS_I_H
3
4 #ifndef _LINUX_TYPES_H
5 #include <linux/types.h>
6 #endif
7
8 #include <linux/msdos_fs_i.h>
9 #include <linux/pipe_fs_i.h>
10
11 /* #Specification: strategy / in memory inode
12  * Here is the information specific to the inode of the UMSDOS file
13  * system. This information is added to the end of the standard struct
14  * inode. Each file system has its own extension to struct inode,
15  * so do the umsdos file system.
16  * 
17  * The strategy is to have the umsdos_inode_info as a superset of
18  * the msdos_inode_info, since most of the time the job is done
19  * by the msdos fs code.
20  * 
21  * So we duplicate the msdos_inode_info, and add our own info at the
22  * end.
23  * 
24  * The offset in this EMD file of the entry: pos
25  * 
26  * For directory, we have dir_locking_info to help synchronise
27  * file creation and file lookup. See also msdos_fs_i.h for more 
28  * information about msdos_inode_info.
29  * 
30  * Special file and fifo do have an inode which correspond to an
31  * empty MSDOS file.
32  * 
33  * symlink are processed mostly like regular file. The content is the
34  * link.
35  * 
36  * The UMSDOS specific extension is placed after the union.
37  */
38
39 struct dir_locking_info {
40         wait_queue_head_t p;
41         short int looking;      /* How many process doing a lookup */
42         short int creating;     /* Is there any creation going on here
43                                  *  Only one at a time, although one
44                                  *  may recursively lock, so it is a counter
45                                  */
46         long pid;               /* pid of the process owning the creation
47                                  * lock */
48 };
49
50 struct umsdos_inode_info {
51         struct msdos_inode_info msdos_info;
52         struct dir_locking_info dir_info;
53         int i_patched;          /* Inode has been patched */
54         int i_is_hlink;         /* Resolved hardlink inode? */
55         off_t pos;              /* Entry offset in the emd_owner file */
56 };
57
58 #endif