Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

include/uapi/linux/msdos_fs.h: use MSDOS_NAME for volume label size

The FAT file system volume label file stored in the root directory
should match the volume label field in the FAT boot sector. As
consequence, the max length of these fields ought to be the same. This
patch replaces the magic '11' usef in the struct fat_boot_sector with
MSDOS_NAME, which is used in struct msdos_dir_entry.

Please check the following references:
1. Microsoft FAT specification 2005
(http://read.pudn.com/downloads77/ebook/294884/FAT32%20Spec%20%28SDA%20Contribution%29.pdf).
Search for 'volume label'.
2. Microsoft Extensible Firmware Initiative, FAT32 File System Specification
(https://staff.washington.edu/dittrich/misc/fatgen103.pdf).
Search for 'volume label'.
3. User space code that creates FAT filesystem
sometimes uses MSDOS_NAME for the label, sometimes not.
Search for 'if (memcmp(label, NO_NAME, MSDOS_NAME))'.
I consider to make the same patch there as well.
https://github.com/dosfstools/dosfstools/blob/master/src/mkfs.fat.c

Link: http://lkml.kernel.org/r/1543096879-82837-1-git-send-email-carmeli.tamir@gmail.com
Signed-off-by: Carmeli Tamir <carmeli.tamir@gmail.com>
Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Bart Van Assche <bvanassche@acm.org>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Carmeli Tamir and committed by
Linus Torvalds
9da22854 f93ca1ed

+2 -2
+2 -2
include/uapi/linux/msdos_fs.h
··· 135 135 for mount state. */ 136 136 __u8 signature; /* extended boot signature */ 137 137 __u8 vol_id[4]; /* volume ID */ 138 - __u8 vol_label[11]; /* volume label */ 138 + __u8 vol_label[MSDOS_NAME]; /* volume label */ 139 139 __u8 fs_type[8]; /* file system type */ 140 140 /* other fields are not added here */ 141 141 } fat16; ··· 158 158 for mount state. */ 159 159 __u8 signature; /* extended boot signature */ 160 160 __u8 vol_id[4]; /* volume ID */ 161 - __u8 vol_label[11]; /* volume label */ 161 + __u8 vol_label[MSDOS_NAME]; /* volume label */ 162 162 __u8 fs_type[8]; /* file system type */ 163 163 /* other fields are not added here */ 164 164 } fat32;