Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / afs / LINUX / osi_vfs.h
1 /*
2 * Copyright 2000, International Business Machines Corporation and others.
3 * All Rights Reserved.
4 *
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
8 */
9
10 /*
11 * Linux interpretations of vnode and vfs structs.
12 */
13
14 #ifndef OSI_VFS_H_
15 #define OSI_VFS_H_
16
17 typedef struct inode vnode_t;
18 #define vnode inode
19
20 /* Map vnode fields to inode fields */
21 #define i_number i_ino
22 #define v_count i_count
23 #define v_op i_op
24 #define v_fop i_fop
25 #define v_type i_mode
26 #define v_vfsp i_sb
27 #define v_data u.generic_ip
28
29 /* v_type bits map to mode bits */
30 #define VNON 0
31 #define VREG S_IFREG
32 #define VDIR S_IFDIR
33 #define VBLK S_IFBLK
34 #define VCHR S_IFCHR
35 #define VLNK S_IFLNK
36 #define VSOCK S_IFSOCK
37 #define VFIFO S_IFIFO
38
39 /* vcexcl - used only by afs_create */
40 enum vcexcl { EXCL, NONEXCL } ;
41
42 /* afs_open and afs_close needs to distinguish these cases */
43 #define FWRITE O_WRONLY|O_RDWR|O_APPEND
44 #define FTRUNC O_TRUNC
45
46 #define IO_APPEND O_APPEND
47 #define FSYNC O_SYNC
48
49 #define VTOI(V) (V)
50
51 /* Various mode bits */
52 #define VWRITE S_IWUSR
53 #define VREAD S_IRUSR
54 #define VEXEC S_IXUSR
55 #define VSUID S_ISUID
56 #define VSGID S_ISGID
57
58 #define vfs super_block
59
60 typedef struct vattr {
61 int va_type; /* One of v_types above. */
62 afs_size_t va_size;
63 unsigned long va_blocks;
64 unsigned long va_blocksize;
65 int va_mask; /* AT_xxx operation to perform. */
66 umode_t va_mode; /* mode bits. */
67 uid_t va_uid;
68 gid_t va_gid;
69 int va_fsid; /* Not used? */
70 dev_t va_rdev;
71 ino_t va_nodeid; /* Inode number */
72 nlink_t va_nlink; /* link count for file. */
73 struct timeval va_atime;
74 struct timeval va_mtime;
75 struct timeval va_ctime;
76 } vattr_t;
77
78 #define VATTR_NULL(A) memset(A, 0, sizeof(struct vattr))
79
80 #ifndef HAVE_LINUX_I_SIZE_READ
81 #define i_size_read(X) ((X)->i_size)
82 #define i_size_write(X,Y) (X)->i_size = Y
83 #endif
84
85 #endif /* OSI_VFS_H_ */