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