1224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef _UAPI_LINUX_MSDOS_FS_H
2224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define _UAPI_LINUX_MSDOS_FS_H
3224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
4224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/types.h>
5224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/magic.h>
6224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <asm/byteorder.h>
7224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
8224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
9224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * The MS-DOS filesystem constants/structures
10224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
11224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
12224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define SECTOR_SIZE	512		/* sector size (bytes) */
13224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define SECTOR_BITS	9		/* log2(SECTOR_SIZE) */
14224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MSDOS_DPB	(MSDOS_DPS)	/* dir entries per block */
15224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MSDOS_DPB_BITS	4		/* log2(MSDOS_DPB) */
16224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MSDOS_DPS	(SECTOR_SIZE / sizeof(struct msdos_dir_entry))
17224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MSDOS_DPS_BITS	4		/* log2(MSDOS_DPS) */
18224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MSDOS_LONGNAME	256		/* maximum name length */
19224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CF_LE_W(v)	le16_to_cpu(v)
20224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CF_LE_L(v)	le32_to_cpu(v)
21224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CT_LE_W(v)	cpu_to_le16(v)
22224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CT_LE_L(v)	cpu_to_le32(v)
23224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
24224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MSDOS_ROOT_INO	 1	/* The root inode number */
25224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MSDOS_FSINFO_INO 2	/* Used for managing the FSINFO block */
26224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
27224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MSDOS_DIR_BITS	5	/* log2(sizeof(struct msdos_dir_entry)) */
28224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
29224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* directory limit */
30224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define FAT_MAX_DIR_ENTRIES	(65536)
31224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define FAT_MAX_DIR_SIZE	(FAT_MAX_DIR_ENTRIES << MSDOS_DIR_BITS)
32224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
33224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ATTR_NONE	0	/* no attribute bits */
34224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ATTR_RO		1	/* read-only */
35224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ATTR_HIDDEN	2	/* hidden */
36224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ATTR_SYS	4	/* system */
37224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ATTR_VOLUME	8	/* volume label */
38224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ATTR_DIR	16	/* directory */
39224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ATTR_ARCH	32	/* archived */
40224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
41224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* attribute bits that are copied "as is" */
42224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ATTR_UNUSED	(ATTR_VOLUME | ATTR_ARCH | ATTR_SYS | ATTR_HIDDEN)
43224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* bits that are used by the Windows 95/Windows NT extended FAT */
44224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define ATTR_EXT	(ATTR_RO | ATTR_HIDDEN | ATTR_SYS | ATTR_VOLUME)
45224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
46224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CASE_LOWER_BASE	8	/* base is lower case */
47224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CASE_LOWER_EXT	16	/* extension is lower case */
48224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
49224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define DELETED_FLAG	0xe5	/* marks file as deleted when in name[0] */
50224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IS_FREE(n)	(!*(n) || *(n) == DELETED_FLAG)
51224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
52224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define FAT_LFN_LEN	255	/* maximum long name length */
53224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MSDOS_NAME	11	/* maximum name length */
54224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MSDOS_SLOTS	21	/* max # of slots for short and long names */
55224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MSDOS_DOT	".          "	/* ".", padded to MSDOS_NAME chars */
56224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MSDOS_DOTDOT	"..         "	/* "..", padded to MSDOS_NAME chars */
57224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
58224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define FAT_FIRST_ENT(s, x)	((MSDOS_SB(s)->fat_bits == 32 ? 0x0FFFFF00 : \
59224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	MSDOS_SB(s)->fat_bits == 16 ? 0xFF00 : 0xF00) | (x))
60224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
61224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* start of data cluster's entry (number of reserved clusters) */
62224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define FAT_START_ENT	2
63224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
64224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* maximum number of clusters */
65224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MAX_FAT12	0xFF4
66224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MAX_FAT16	0xFFF4
67224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MAX_FAT32	0x0FFFFFF6
68224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MAX_FAT(s)	(MSDOS_SB(s)->fat_bits == 32 ? MAX_FAT32 : \
69224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	MSDOS_SB(s)->fat_bits == 16 ? MAX_FAT16 : MAX_FAT12)
70224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
71224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* bad cluster mark */
72224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BAD_FAT12	0xFF7
73224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BAD_FAT16	0xFFF7
74224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define BAD_FAT32	0x0FFFFFF7
75224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
76224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* standard EOF */
77224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define EOF_FAT12	0xFFF
78224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define EOF_FAT16	0xFFFF
79224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define EOF_FAT32	0x0FFFFFFF
80224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
81224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define FAT_ENT_FREE	(0)
82224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define FAT_ENT_BAD	(BAD_FAT32)
83224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define FAT_ENT_EOF	(EOF_FAT32)
84224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
85224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define FAT_FSINFO_SIG1	0x41615252
86224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define FAT_FSINFO_SIG2	0x61417272
87224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define IS_FSINFO(x)	(le32_to_cpu((x)->signature1) == FAT_FSINFO_SIG1 \
88224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			 && le32_to_cpu((x)->signature2) == FAT_FSINFO_SIG2)
89224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
90224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define FAT_STATE_DIRTY 0x01
91224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
92224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct __fat_dirent {
93224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	long		d_ino;
94224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__kernel_off_t	d_off;
95224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	unsigned short	d_reclen;
96224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	char		d_name[256]; /* We must not include limits.h! */
97224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
98224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
99224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/*
100224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * ioctl commands
101224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
102224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define VFAT_IOCTL_READDIR_BOTH		_IOR('r', 1, struct __fat_dirent[2])
103224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define VFAT_IOCTL_READDIR_SHORT	_IOR('r', 2, struct __fat_dirent[2])
104224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* <linux/videotext.h> has used 0x72 ('r') in collision, so skip a few */
105224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define FAT_IOCTL_GET_ATTRIBUTES	_IOR('r', 0x10, __u32)
106224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define FAT_IOCTL_SET_ATTRIBUTES	_IOW('r', 0x11, __u32)
107e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris/*Android kernel has used 0x12, so we use 0x13*/
108e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define FAT_IOCTL_GET_VOLUME_ID		_IOR('r', 0x13, __u32)
109224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
110224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct fat_boot_sector {
111224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8	ignored[3];	/* Boot strap short or near jump */
112224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8	system_id[8];	/* Name - can be used to special case
113224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng				   partition manager volumes */
114224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8	sector_size[2];	/* bytes per logical sector */
115224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8	sec_per_clus;	/* sectors/cluster */
116224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le16	reserved;	/* reserved sectors */
117224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8	fats;		/* number of FATs */
118224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8	dir_entries[2];	/* root directory entries */
119224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8	sectors[2];	/* number of sectors */
120224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8	media;		/* media code */
121224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le16	fat_length;	/* sectors/FAT */
122224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le16	secs_track;	/* sectors per track */
123224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le16	heads;		/* number of heads */
124224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le32	hidden;		/* hidden sectors (unused) */
125224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le32	total_sect;	/* number of sectors (if sectors == 0) */
126224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
127224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	union {
128224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng		struct {
129224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			/*  Extended BPB Fields for FAT16 */
130224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			__u8	drive_number;	/* Physical drive number */
131224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			__u8	state;		/* undocumented, but used
132224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng						   for mount state. */
133e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris			__u8	signature;  /* extended boot signature */
134e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris			__u8	vol_id[4];	/* volume ID */
135e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris			__u8	vol_label[11];	/* volume label */
136e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris			__u8	fs_type[8];		/* file system type */
13712e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris			/* other fields are not added here */
138224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng		} fat16;
139224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
140224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng		struct {
141224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			/* only used by FAT32 */
142224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			__le32	length;		/* sectors/FAT */
143224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			__le16	flags;		/* bit 8: fat mirroring,
144224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng						   low 4: active fat */
145224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			__u8	version[2];	/* major, minor filesystem
146224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng						   version */
147224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			__le32	root_cluster;	/* first cluster in
148224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng						   root directory */
149224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			__le16	info_sector;	/* filesystem info sector */
150224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			__le16	backup_boot;	/* backup boot sector */
151224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			__le16	reserved2[6];	/* Unused */
152224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			/* Extended BPB Fields for FAT32 */
153224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			__u8	drive_number;   /* Physical drive number */
154224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng			__u8    state;       	/* undocumented, but used
155224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng						   for mount state. */
156e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris			__u8	signature;  /* extended boot signature */
157e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris			__u8	vol_id[4];	/* volume ID */
158e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris			__u8	vol_label[11];	/* volume label */
159e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris			__u8	fs_type[8];		/* file system type */
16012e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris			/* other fields are not added here */
161224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng		} fat32;
162224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	};
163224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
164224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
165224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct fat_boot_fsinfo {
166224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le32   signature1;	/* 0x41615252L */
167224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le32   reserved1[120];	/* Nothing as far as I can tell */
168224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le32   signature2;	/* 0x61417272L */
169224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le32   free_clusters;	/* Free cluster count.  -1 if unknown */
170224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le32   next_cluster;	/* Most recently allocated cluster */
171224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le32   reserved2[4];
172224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
173224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
174224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct msdos_dir_entry {
175224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8	name[MSDOS_NAME];/* name and extension */
176224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8	attr;		/* attribute bits */
177224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8    lcase;		/* Case for base and extension */
178224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8	ctime_cs;	/* Creation time, centiseconds (0-199) */
179224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le16	ctime;		/* Creation time */
180224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le16	cdate;		/* Creation date */
181224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le16	adate;		/* Last access date */
182224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le16	starthi;	/* High 16 bits of cluster in FAT32 */
183224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le16	time,date,start;/* time, date and first cluster */
184224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le32	size;		/* file size (in bytes) */
185224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
186224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
187224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* Up to 13 characters of the name */
188224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct msdos_dir_slot {
189224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8    id;		/* sequence number for slot */
190224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8    name0_4[10];	/* first 5 characters in name */
191224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8    attr;		/* attribute byte */
192224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8    reserved;	/* always 0 */
193224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8    alias_checksum;	/* checksum for 8.3 alias */
194224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8    name5_10[12];	/* 6 more characters in name */
195224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__le16   start;		/* starting cluster number, 0 in long slots */
196224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u8    name11_12[4];	/* last 2 characters in name */
197224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
198224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
199224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif /* _UAPI_LINUX_MSDOS_FS_H */
200