Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 1
/*
2
 * efs_fs_i.h
3
 *
4
 * Copyright (c) 1999 Al Smith
5
 *
6
 * Portions derived from IRIX header files (c) 1988 Silicon Graphics
7
 */
8
 
9
#ifndef __EFS_FS_I_H__
10
#define __EFS_FS_I_H__
11
 
12
typedef int32_t         efs_block_t;
13
typedef uint32_t        efs_ino_t;
14
 
15
#define EFS_DIRECTEXTENTS       12
16
 
17
/*
18
 * layout of an extent, in memory and on disk. 8 bytes exactly.
19
 */
20
typedef union extent_u {
21
        unsigned char raw[8];
22
        struct extent_s {
23
                unsigned int    ex_magic:8;     /* magic # (zero) */
24
                unsigned int    ex_bn:24;       /* basic block */
25
                unsigned int    ex_length:8;    /* numblocks in this extent */
26
                unsigned int    ex_offset:24;   /* logical offset into file */
27
        } cooked;
28
} efs_extent;
29
 
30
typedef struct edevs {
31
        short           odev;
32
        unsigned int    ndev;
33
} efs_devs;
34
 
35
/*
36
 * extent based filesystem inode as it appears on disk.  The efs inode
37
 * is exactly 128 bytes long.
38
 */
39
struct  efs_dinode {
40
        u_short         di_mode;        /* mode and type of file */
41
        short           di_nlink;       /* number of links to file */
42
        u_short         di_uid;         /* owner's user id */
43
        u_short         di_gid;         /* owner's group id */
44
        int32_t         di_size;        /* number of bytes in file */
45
        int32_t         di_atime;       /* time last accessed */
46
        int32_t         di_mtime;       /* time last modified */
47
        int32_t         di_ctime;       /* time created */
48
        uint32_t        di_gen;         /* generation number */
49
        short           di_numextents;  /* # of extents */
50
        u_char          di_version;     /* version of inode */
51
        u_char          di_spare;       /* spare - used by AFS */
52
        union di_addr {
53
                efs_extent      di_extents[EFS_DIRECTEXTENTS];
54
                efs_devs        di_dev; /* device for IFCHR/IFBLK */
55
        } di_u;
56
};
57
 
58
/* efs inode storage in memory */
59
struct efs_inode_info {
60
        int             numextents;
61
        int             lastextent;
62
 
63
        efs_extent      extents[EFS_DIRECTEXTENTS];
64
        struct inode    vfs_inode;
65
};
66
 
67
#endif  /* __EFS_FS_I_H__ */
68