Commit 6b46419b authored by Oleksij Rempel's avatar Oleksij Rempel Committed by Linus Torvalds

fat: add extended fileds to struct fat_boot_sector

Later we will need "state" field to check if volume was cleanly unmounted.
Signed-off-by: default avatarOleksij Rempel <bug-track@fisher-privat.net>
Signed-off-by: default avatarOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 899bed05
...@@ -1298,17 +1298,17 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat, ...@@ -1298,17 +1298,17 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat,
sbi->prev_free = FAT_START_ENT; sbi->prev_free = FAT_START_ENT;
sb->s_maxbytes = 0xffffffff; sb->s_maxbytes = 0xffffffff;
if (!sbi->fat_length && b->fat32_length) { if (!sbi->fat_length && b->fat32.length) {
struct fat_boot_fsinfo *fsinfo; struct fat_boot_fsinfo *fsinfo;
struct buffer_head *fsinfo_bh; struct buffer_head *fsinfo_bh;
/* Must be FAT32 */ /* Must be FAT32 */
sbi->fat_bits = 32; sbi->fat_bits = 32;
sbi->fat_length = le32_to_cpu(b->fat32_length); sbi->fat_length = le32_to_cpu(b->fat32.length);
sbi->root_cluster = le32_to_cpu(b->root_cluster); sbi->root_cluster = le32_to_cpu(b->fat32.root_cluster);
/* MC - if info_sector is 0, don't multiply by 0 */ /* MC - if info_sector is 0, don't multiply by 0 */
sbi->fsinfo_sector = le16_to_cpu(b->info_sector); sbi->fsinfo_sector = le16_to_cpu(b->fat32.info_sector);
if (sbi->fsinfo_sector == 0) if (sbi->fsinfo_sector == 0)
sbi->fsinfo_sector = 1; sbi->fsinfo_sector = 1;
......
...@@ -120,14 +120,34 @@ struct fat_boot_sector { ...@@ -120,14 +120,34 @@ struct fat_boot_sector {
__le32 hidden; /* hidden sectors (unused) */ __le32 hidden; /* hidden sectors (unused) */
__le32 total_sect; /* number of sectors (if sectors == 0) */ __le32 total_sect; /* number of sectors (if sectors == 0) */
/* The following fields are only used by FAT32 */ union {
__le32 fat32_length; /* sectors/FAT */ struct {
__le16 flags; /* bit 8: fat mirroring, low 4: active fat */ /* Extended BPB Fields for FAT16 */
__u8 version[2]; /* major, minor filesystem version */ __u8 drive_number; /* Physical drive number */
__le32 root_cluster; /* first cluster in root directory */ __u8 state; /* undocumented, but used
__le16 info_sector; /* filesystem info sector */ for mount state. */
__le16 backup_boot; /* backup boot sector */ /* other fiealds are not added here */
__le16 reserved2[6]; /* Unused */ } fat16;
struct {
/* only used by FAT32 */
__le32 length; /* sectors/FAT */
__le16 flags; /* bit 8: fat mirroring,
low 4: active fat */
__u8 version[2]; /* major, minor filesystem
version */
__le32 root_cluster; /* first cluster in
root directory */
__le16 info_sector; /* filesystem info sector */
__le16 backup_boot; /* backup boot sector */
__le16 reserved2[6]; /* Unused */
/* Extended BPB Fields for FAT32 */
__u8 drive_number; /* Physical drive number */
__u8 state; /* undocumented, but used
for mount state. */
/* other fiealds are not added here */
} fat32;
};
}; };
struct fat_boot_fsinfo { struct fat_boot_fsinfo {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment