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 59