Commit | Line | Data |
---|---|---|
805e021f CE |
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_ */ |