Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / afs / LINUX / osi_vfs.h
CommitLineData
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
17typedef 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 */
40enum 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
60typedef 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_ */