Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1298,17 +1298,17 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat,
	sbi->prev_free = FAT_START_ENT;
	sb->s_maxbytes = 0xffffffff;

	if (!sbi->fat_length && b->fat32_length) {
	if (!sbi->fat_length && b->fat32.length) {
		struct fat_boot_fsinfo *fsinfo;
		struct buffer_head *fsinfo_bh;

		/* Must be FAT32 */
		sbi->fat_bits = 32;
		sbi->fat_length = le32_to_cpu(b->fat32_length);
		sbi->root_cluster = le32_to_cpu(b->root_cluster);
		sbi->fat_length = le32_to_cpu(b->fat32.length);
		sbi->root_cluster = le32_to_cpu(b->fat32.root_cluster);

		/* 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)
			sbi->fsinfo_sector = 1;

+28 −8
Original line number Diff line number Diff line
@@ -120,14 +120,34 @@ struct fat_boot_sector {
	__le32	hidden;		/* hidden sectors (unused) */
	__le32	total_sect;	/* number of sectors (if sectors == 0) */

	/* The following fields are only used by FAT32 */
	__le32	fat32_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 */
	union {
		struct {
			/*  Extended BPB Fields for FAT16 */
			__u8	drive_number;	/* Physical drive number */
			__u8	state;		/* undocumented, but used
						   for mount state. */
			/* other fiealds are not added here */
		} 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 {