File: [Development] / linux-2.6-xfs / fs / xfs / xfs_dinode.h (download)
Revision 1.2, Sat Nov 6 22:03:23 1993 UTC (23 years, 11 months ago) by doucette
Branch: MAIN
Changes since 1.1: +22 -20
lines
Get rid of nested includes. Get rid of dummy freelist structure.
Move some fields around for alignment. Clean up union members. Add
xfs_dinode_fmt_t.
|
#ifndef _FS_XFS_DINODE_H
#define _FS_XFS_DINODE_H
#ident "$Revision$"
#define XFS_DINODE_VERSION 1
#define XFS_DINODE_MAGIC 0x494e4f44 /* 'INOD' */
/*
* Disk inode structure.
* This is just the header; the inode is expanded to fill a variable size
* with the last field expanding.
*/
typedef struct xfs_dinode
{
__uint32_t di_magic; /* inode magic # = XFS_DINODE_MAGIC */
__uint16_t di_mode; /* mode and type of file */
__int8_t di_version; /* inode version */
__int8_t di_format; /* format of di_c data */
__int16_t di_nlink; /* number of links to file */
__uint16_t di_uid; /* owner's user id */
__uint16_t di_gid; /* owner's group id */
__int64_t di_size; /* number of bytes in file */
xfs_uuid_t di_uuid; /* file unique id */
/*
* Should these be timestruc_t's??
* efs makes them __int32_t's.
*/
time_t di_atime; /* time last accessed */
time_t di_mtime; /* time last modified */
time_t di_ctime; /* time created/inode modified */
/*
* Should this be 64 bits? What does nfs3.0 want?
*/
__uint32_t di_gen; /* generation number */
union {
xfs_agino_t di_next;/* next inode for freelist inodes */
dev_t di_dev; /* device for IFCHR/IFBLK */
char di_c[1];/* local contents */
xfs_bmx_t di_bmx; /* extent list */
xfs_btree_block_t di_bmbt;/* btree root */
xfs_uuid_t di_uuid;/* mount point value */
} di_u;
} xfs_dinode_t;
/*
* Values for di_format
*/
typedef enum xfs_dinode_fmt
{
XFS_DINODE_FMT_AGINO, /* free inodes: di_next */
XFS_DINODE_FMT_DEV, /* CHR, BLK: di_dev */
XFS_DINODE_FMT_LOCAL, /* DIR, REG, LNK: di_c */
XFS_DINODE_FMT_EXTENTS, /* DIR, REG, LNK: di_bmx */
XFS_DINODE_FMT_BTREE, /* DIR, REG, LNK: di_bmbt */
XFS_DINODE_FMT_UUID /* MNT: di_uuid */
} xfs_dinode_fmt_t;
/*
* File types (mode field)
*/
#define IFMT 0170000 /* type of file */
#define IFIFO 0010000 /* named pipe (fifo) */
#define IFCHR 0020000 /* character special */
#define IFDIR 0040000 /* directory */
#define IFBLK 0060000 /* block special */
#define IFREG 0100000 /* regular */
#define IFLNK 0120000 /* symbolic link */
#define IFSOCK 0140000 /* socket */
#define IFMNT 0160000 /* mount point */
/*
* File execution and access modes.
*/
#define ISUID 04000 /* set user id on execution */
#define ISGID 02000 /* set group id on execution */
#define ISVTX 01000 /* sticky directory */
#define IREAD 0400 /* read, write, execute permissions */
#define IWRITE 0200
#define IEXEC 0100
#define xfs_buf_to_dinode(buf) ((xfs_dinode_t *)(buf->b_un.b_addr))
#endif /* _FS_XFS_DINODE_H */