1#ifndef _LINUX_NTFS_FS_I_H
2#define _LINUX_NTFS_FS_I_H
3
4#include <linux/types.h>
5
6/* Forward declarations, to keep number of mutual includes low */
7struct ntfs_attribute;
8struct ntfs_sb_info;
9
10/* Duplicate definitions from ntfs/ntfstypes.h */
11#ifndef NTFS_INTEGRAL_TYPES
12#define NTFS_INTEGRAL_TYPES
13typedef u8  ntfs_u8;
14typedef u16 ntfs_u16;
15typedef u32 ntfs_u32;
16typedef u64 ntfs_u64;
17typedef s8  ntfs_s8;
18typedef s16 ntfs_s16;
19typedef s32 ntfs_s32;
20typedef s64 ntfs_s64;
21#endif
22
23#ifndef NTMODE_T
24#define NTMODE_T
25typedef __kernel_mode_t ntmode_t;
26#endif
27#ifndef NTFS_UID_T
28#define NTFS_UID_T
29typedef uid_t ntfs_uid_t;
30#endif
31#ifndef NTFS_GID_T
32#define NTFS_GID_T
33typedef gid_t ntfs_gid_t;
34#endif
35#ifndef NTFS_SIZE_T
36#define NTFS_SIZE_T
37typedef __kernel_size_t ntfs_size_t;
38#endif
39#ifndef NTFS_TIME_T
40#define NTFS_TIME_T
41typedef __kernel_time_t ntfs_time_t;
42#endif
43
44/* unicode character type */
45#ifndef NTFS_WCHAR_T
46#define NTFS_WCHAR_T
47typedef u16 ntfs_wchar_t;
48#endif
49/* file offset */
50#ifndef NTFS_OFFSET_T
51#define NTFS_OFFSET_T
52typedef s64 ntfs_offset_t;
53#endif
54/* UTC */
55#ifndef NTFS_TIME64_T
56#define NTFS_TIME64_T
57typedef u64 ntfs_time64_t;
58#endif
59/*
60 * This is really signed long long. So we support only volumes up to 2Tb. This
61 * is ok as Win2k also only uses 32-bits to store clusters.
62 * Whatever you do keep this a SIGNED value or a lot of NTFS users with
63 * corrupted filesystems will lynch you! It causes massive fs corruption when
64 * unsigned due to the nature of many checks relying on being performed on
65 * signed quantities. (AIA)
66 */
67#ifndef NTFS_CLUSTER_T
68#define NTFS_CLUSTER_T
69typedef s32 ntfs_cluster_t;
70#endif
71
72/* Definition of the NTFS in-memory inode structure. */
73struct ntfs_inode_info {
74	struct ntfs_sb_info *vol;
75	unsigned long i_number;		/* Should be really 48 bits. */
76	__u16 sequence_number;		/* The current sequence number. */
77	unsigned char *attr;		/* Array of the attributes. */
78	int attr_count;			/* Size of attrs[]. */
79	struct ntfs_attribute *attrs;
80	int record_count;		/* Size of records[]. */
81	int *records; /* Array of the record numbers of the $Mft whose
82		       * attributes have been inserted in the inode. */
83	union {
84		struct {
85			int recordsize;
86			int clusters_per_record;
87		} index;
88	} u;
89};
90
91#endif
92