patch-2.1.74 linux/fs/ntfs/struct.h

Next file: linux/fs/ntfs/super.c
Previous file: linux/fs/ntfs/macros.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.73/linux/fs/ntfs/struct.h linux/fs/ntfs/struct.h
@@ -0,0 +1,155 @@
+/*
+ * struct.h
+ * Structure definitions
+ *
+ *  Copyright (C) 1997 Régis Duchesne
+ */
+
+/* Necessary forward definition */
+struct ntfs_inode;
+
+#ifdef __FreeBSD__
+#include <sys/queue.h>
+/* Define the struct ntfs_head type */
+LIST_HEAD(ntfs_head,ntfs_inode);
+#endif
+
+/* which files should be returned from a director listing */
+/* only short names, no hidden files */
+#define ngt_dos   1
+/* only long names, all-uppercase becomes all-lowercase, no hidden files */
+#define ngt_nt    2
+/* all names except hidden files */
+#define ngt_posix 3
+/* all entries */
+#define ngt_full  4
+
+#ifdef NTFS_IN_LINUX_KERNEL
+typedef struct ntfs_sb_info ntfs_volume;
+#else
+typedef struct _ntfs_volume{
+	/* NTFS_SB_INFO_START */
+	/* Configuration provided by user at mount time */
+	ntfs_uid_t uid;
+	ntfs_gid_t gid;
+	ntmode_t umask;
+        unsigned int nct;
+	void *nls_map;
+	unsigned int ngt;
+	/* Configuration provided by user with ntfstools */
+	ntfs_size_t partition_bias;	/* for access to underlying device */
+	/* Attribute definitions */
+	ntfs_u32 at_standard_information;
+	ntfs_u32 at_attribute_list;
+	ntfs_u32 at_file_name;
+	ntfs_u32 at_security_descriptor;
+	ntfs_u32 at_data;
+	ntfs_u32 at_index_root;
+	ntfs_u32 at_index_allocation;
+	ntfs_u32 at_bitmap;
+	ntfs_u32 at_symlink; /* aka SYMBOLIC_LINK or REPARSE_POINT */
+	/* Data read from the boot file */
+	int blocksize;
+	int clusterfactor;
+	int clustersize;
+	int mft_recordsize;
+	int mft_clusters_per_record;
+	int index_recordsize;
+	int index_clusters_per_record;
+	int mft_cluster;
+	/* data read from special files */
+	unsigned char *mft;
+	unsigned short *upcase;
+	unsigned int upcase_length;
+	/* inodes we always hold onto */
+	struct ntfs_inode *mft_ino;
+	struct ntfs_inode *mftmirr;
+	struct ntfs_inode *bitmap;
+	/* NTFS_SB_INFO_END */
+	union{
+		int fd;		/* file descriptor for the tools */
+		void *sb;	/* pointer to super block for the kernel */
+	}u;
+#ifdef __FreeBSD__
+	dev_t rdev;
+	struct vnode *devvp;
+	struct ntfs_head *inode_hash;   /* not really a hash */
+#endif
+}ntfs_volume;
+#endif
+
+typedef struct {
+	ntfs_cluster_t cluster;
+	ntfs_cluster_t len;
+}ntfs_runlist;
+
+typedef struct ntfs_attribute{
+	int type;
+	ntfs_u16 *name;
+	int namelen;
+	int attrno;
+	int size,allocated,initialized,compsize;
+	int compressed,resident,indexed;
+	int cengine;
+	union{
+		void *data;             /* if resident */
+		struct {
+			ntfs_runlist *runlist;
+			int len;
+		}r;
+	}d;
+}ntfs_attribute;
+
+/* Structure to define IO to user buffer. do_read means that
+   the destination has to be written using fn_put, do_write means
+   that the destination has to read using fn_get. So, do_read is
+   from a user's point of view, while put and get are from the driver's
+   point of view. The first argument is always the destination of the IO
+*/
+#ifdef NTFS_IN_LINUX_KERNEL
+typedef struct ntfs_inode_info ntfs_inode;
+#else
+typedef struct ntfs_inode{
+	ntfs_volume *vol;
+	/* NTFS_INODE_INFO_START */
+	int i_number;                /* should be really 48 bits */
+	unsigned sequence_number;
+	unsigned char* attr;         /* array of the attributes */
+	int attr_count;              /* size of attrs[] */
+	struct ntfs_attribute *attrs;
+	int record_count;            /* size of records[] */
+	/* array of the record numbers of the MFT 
+	   whose attributes have been inserted in the inode */
+	int *records;
+	union{
+		struct{
+			int recordsize;
+			int clusters_per_record;
+		}index;
+	} u;	
+	/* NTFS_INODE_INFO_END */
+#ifdef __FreeBSD__
+	struct vnode *vp;
+	LIST_ENTRY(ntfs_inode) h_next;
+#endif
+}ntfs_inode;
+#endif
+
+typedef struct ntfs_io{
+	int do_read;
+	void (*fn_put)(struct ntfs_io *dest, void *buf, ntfs_size_t);
+	void (*fn_get)(void *buf, struct ntfs_io *src, ntfs_size_t len);
+	void *param;
+	int size;
+}ntfs_io;
+
+#if 0
+typedef struct {
+	ntfs_volume *vol;
+	ntfs_inode *ino;
+	int type;
+	char *name;
+	int mftno;
+	int start_vcn;
+} ntfs_attrlist_item;
+#endif

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov