diff options
author | Roland McGrath <roland@gnu.org> | 2000-02-04 03:21:18 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2000-02-04 03:21:18 +0000 |
commit | 9fd51e9b0ad33a89a83fdbbb66bd20d85f7893fb (patch) | |
tree | 8845b79f170028cb4380045c50277bbf075b5b7d /pfinet/linux-src/include/linux/umsdos_fs_i.h | |
download | hurd-9fd51e9b0ad33a89a83fdbbb66bd20d85f7893fb.tar.gz hurd-9fd51e9b0ad33a89a83fdbbb66bd20d85f7893fb.tar.bz2 hurd-9fd51e9b0ad33a89a83fdbbb66bd20d85f7893fb.zip |
Import of Linux 2.2.12 subset (ipv4 stack and related)
Diffstat (limited to 'pfinet/linux-src/include/linux/umsdos_fs_i.h')
-rw-r--r-- | pfinet/linux-src/include/linux/umsdos_fs_i.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/pfinet/linux-src/include/linux/umsdos_fs_i.h b/pfinet/linux-src/include/linux/umsdos_fs_i.h new file mode 100644 index 00000000..111fd913 --- /dev/null +++ b/pfinet/linux-src/include/linux/umsdos_fs_i.h @@ -0,0 +1,75 @@ +#ifndef UMSDOS_FS_I_H +#define UMSDOS_FS_I_H + +#ifndef _LINUX_TYPES_H +#include <linux/types.h> +#endif + +#include <linux/msdos_fs_i.h> +#include <linux/pipe_fs_i.h> + +/* #Specification: strategy / in memory inode + * Here is the information specific to the inode of the UMSDOS file + * system. This information is added to the end of the standard struct + * inode. Each file system has its own extension to struct inode, + * so do the umsdos file system. + * + * The strategy is to have the umsdos_inode_info as a superset of + * the msdos_inode_info, since most of the time the job is done + * by the msdos fs code. + * + * So we duplicate the msdos_inode_info, and add our own info at the + * end. + * + * For all file type (and directory) the inode has a reference to: + * the directory which hold this entry: i_dir_owner + * The EMD file of i_dir_owner: i_emd_owner + * The offset in this EMD file of the entry: pos + * + * For directory, we also have a reference to the inode of its + * own EMD file. Also, we have dir_locking_info to help synchronise + * file creation and file lookup. This data is sharing space with + * the pipe_inode_info not used by directory. See also msdos_fs_i.h + * for more information about pipe_inode_info and msdos_inode_info. + * + * Special file and fifo do have an inode which correspond to an + * empty MSDOS file. + * + * symlink are processed mostly like regular file. The content is the + * link. + * + * fifos add there own extension to the inode. I have reserved some + * space for fifos side by side with msdos_inode_info. This is just + * to for the show, because msdos_inode_info already include the + * pipe_inode_info. + * + * The UMSDOS specific extension is placed after the union. + */ + +struct dir_locking_info { + struct wait_queue *p; + short int looking; /* How many process doing a lookup */ + short int creating; /* Is there any creation going on here + * Only one at a time, although one + * may recursively lock, so it is a counter + */ + long pid; /* pid of the process owning the creation */ + /* lock */ +}; + +struct umsdos_inode_info { + union { + struct msdos_inode_info msdos_info; + struct pipe_inode_info pipe_info; + struct dir_locking_info dir_info; + } u; + int i_patched; /* Inode has been patched */ + int i_is_hlink; /* Resolved hardlink inode? */ + unsigned long i_emd_owner; /* Is this the EMD file inode? */ + off_t pos; /* Entry offset in the emd_owner file */ + /* The rest is used only if this inode describes a directory */ + struct dentry *i_emd_dentry; /* EMD dentry for this directory */ + unsigned long i_emd_dir; /* Inode of the EMD file */ +}; + +#endif |