. service tells you which device it couldn't stat
[minix3.git] / servers / vfs / vnode.h
blob6cc1eec0c6068ccbdb325bba121dbb034bc94006
3 EXTERN struct vnode {
4 endpoint_t v_fs_e; /* FS process' endpoint number */
5 ino_t v_inode_nr; /* inode number on its (minor) device */
6 mode_t v_mode; /* file type, protection, etc. */
7 uid_t v_uid;
8 gid_t v_gid;
9 off_t v_size; /* current file size in bytes */
10 int v_ref_count; /* # times vnode used; 0 means slot is free */
11 int v_fs_count; /* # reference at the underlying FS */
12 int v_ref_check; /* for consistency checks */
13 char v_pipe; /* set to I_PIPE if pipe */
14 off_t v_pipe_rd_pos;
15 off_t v_pipe_wr_pos;
16 endpoint_t v_bfs_e; /* endpoint number for the FS proces in case
17 of a block special file */
19 dev_t v_dev; /* device number on which the corresponding
20 inode resides */
22 Dev_t v_sdev; /* device number for special files */
23 int v_blocksize; /* block size of the filesys */
24 unsigned short v_index; /* inode's index in the FS inode table */
25 struct vmnt *v_vmnt; /* vmnt object of the partition */
27 /* For debugging */
28 char *v_file;
29 int v_line;
30 int v_isfifo;
31 } vnode[NR_VNODES];
33 #define NIL_VNODE (struct vnode *) 0 /* indicates absence of vnode slot */
35 /* Field values. Note that CLEAN and DIRTY are defined in "const.h" */
36 #define NO_PIPE 0 /* i_pipe is NO_PIPE if inode is not a pipe */
37 #define I_PIPE 1 /* i_pipe is I_PIPE if inode is a pipe */
38 #define NO_MOUNT 0 /* i_mount is NO_MOUNT if file not mounted on*/
39 #define I_MOUNT 1 /* i_mount is I_MOUNT if file mounted on */
40 #define NO_SEEK 0 /* i_seek = NO_SEEK if last op was not SEEK */
41 #define ISEEK 1 /* i_seek = ISEEK if last op was SEEK */