driver core: Make Kconfig text for DEBUG_TEST_DRIVER_REMOVE stronger
[cascardo/linux.git] / fs / xfs / libxfs / xfs_inode_buf.h
1 /*
2  * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc.
3  * All Rights Reserved.
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it would be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write the Free Software Foundation,
16  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17  */
18 #ifndef __XFS_INODE_BUF_H__
19 #define __XFS_INODE_BUF_H__
20
21 struct xfs_inode;
22 struct xfs_dinode;
23
24 /*
25  * In memory representation of the XFS inode. This is held in the in-core struct
26  * xfs_inode and represents the current on disk values but the structure is not
27  * in on-disk format.  That is, this structure is always translated to on-disk
28  * format specific structures at the appropriate time.
29  */
30 struct xfs_icdinode {
31         __int8_t        di_version;     /* inode version */
32         __int8_t        di_format;      /* format of di_c data */
33         __uint16_t      di_flushiter;   /* incremented on flush */
34         __uint32_t      di_uid;         /* owner's user id */
35         __uint32_t      di_gid;         /* owner's group id */
36         __uint16_t      di_projid_lo;   /* lower part of owner's project id */
37         __uint16_t      di_projid_hi;   /* higher part of owner's project id */
38         xfs_fsize_t     di_size;        /* number of bytes in file */
39         xfs_rfsblock_t  di_nblocks;     /* # of direct & btree blocks used */
40         xfs_extlen_t    di_extsize;     /* basic/minimum extent size for file */
41         xfs_extnum_t    di_nextents;    /* number of extents in data fork */
42         xfs_aextnum_t   di_anextents;   /* number of extents in attribute fork*/
43         __uint8_t       di_forkoff;     /* attr fork offs, <<3 for 64b align */
44         __int8_t        di_aformat;     /* format of attr fork's data */
45         __uint32_t      di_dmevmask;    /* DMIG event mask */
46         __uint16_t      di_dmstate;     /* DMIG state info */
47         __uint16_t      di_flags;       /* random flags, XFS_DIFLAG_... */
48
49         __uint64_t      di_flags2;      /* more random flags */
50         __uint32_t      di_cowextsize;  /* basic cow extent size for file */
51
52         xfs_ictimestamp_t di_crtime;    /* time created */
53 };
54
55 /*
56  * Inode location information.  Stored in the inode and passed to
57  * xfs_imap_to_bp() to get a buffer and dinode for a given inode.
58  */
59 struct xfs_imap {
60         xfs_daddr_t     im_blkno;       /* starting BB of inode chunk */
61         ushort          im_len;         /* length in BBs of inode chunk */
62         ushort          im_boffset;     /* inode offset in block in bytes */
63 };
64
65 int     xfs_imap_to_bp(struct xfs_mount *, struct xfs_trans *,
66                        struct xfs_imap *, struct xfs_dinode **,
67                        struct xfs_buf **, uint, uint);
68 int     xfs_iread(struct xfs_mount *, struct xfs_trans *,
69                   struct xfs_inode *, uint);
70 void    xfs_dinode_calc_crc(struct xfs_mount *, struct xfs_dinode *);
71 void    xfs_inode_to_disk(struct xfs_inode *ip, struct xfs_dinode *to,
72                           xfs_lsn_t lsn);
73 void    xfs_inode_from_disk(struct xfs_inode *ip, struct xfs_dinode *from);
74 void    xfs_log_dinode_to_disk(struct xfs_log_dinode *from,
75                                struct xfs_dinode *to);
76
77 #if defined(DEBUG)
78 void    xfs_inobp_check(struct xfs_mount *, struct xfs_buf *);
79 #else
80 #define xfs_inobp_check(mp, bp)
81 #endif /* DEBUG */
82
83 #endif  /* __XFS_INODE_BUF_H__ */