Re: [PATCH] fat: Replaced 11 magic to MSDOS_NAME for volume label

OGAWA Hirofumi
2018-11-27T02:18:30Z

Carmeli Tamir <carmeli.tamir@gmail.com> writes:

> 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
>
> Signed-off-by: Carmeli Tamir <carmeli.tamir@gmail.com>

Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>

Looks good. Thanks.

> ---
> include/uapi/linux/msdos_fs.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/include/uapi/linux/msdos_fs.h b/include/uapi/linux/msdos_fs.h
> index fde7537..1216e6c 100644
> --- a/include/uapi/linux/msdos_fs.h
> +++ b/include/uapi/linux/msdos_fs.h
> @@ -135,7 +135,7 @@ struct fat_boot_sector {
> for mount state. */
> __u8 signature; /* extended boot signature */
> __u8 vol_id[4]; /* volume ID */
> - __u8 vol_label[11]; /* volume label */
> + __u8 vol_label[MSDOS_NAME]; /* volume label */
> __u8 fs_type[8]; /* file system type */
> /* other fields are not added here */
> } fat16;
> @@ -158,7 +158,7 @@ struct fat_boot_sector {
> for mount state. */
> __u8 signature; /* extended boot signature */
> __u8 vol_id[4]; /* volume ID */
> - __u8 vol_label[11]; /* volume label */
> + __u8 vol_label[MSDOS_NAME]; /* volume label */
> __u8 fs_type[8]; /* file system type */
> /* other fields are not added here */
> } fat32;

--
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>