2018-11-24 22:03:10

by Carmeli Tamir

[permalink] [raw]
Subject: [PATCH] fat: Replaced 11 magic to MSDOS_NAME for volume label

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 <[email protected]>
---
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;
--
2.7.4



2018-11-26 05:09:33

by Sergey Senozhatsky

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

On (11/24/18 17:01), Carmeli Tamir wrote:
> 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).
[..]
> Signed-off-by: Carmeli Tamir <[email protected]>

Looks good to me,
Reviewed-by: Sergey Senozhatsky <[email protected]>

-ss

2018-11-26 08:00:42

by Johannes Thumshirn

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

Looks good,
Reviewed-by: Johannes Thumshirn <[email protected]>
--
Johannes Thumshirn SUSE Labs
[email protected] +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850

2018-11-26 19:24:56

by Carmeli Tamir

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

Thanks for the reply and sorry for my noob question:
Wasn't I supposed to send this patch also to the FAT maintainer, OGAWA
Hirofumi? His name wasn't on the get_maintainer output, and I think
that this specific file isn't listed anywhere under the maintainers
file.

On Mon, Nov 26, 2018 at 9:58 AM Johannes Thumshirn <[email protected]> wrote:
>
> Looks good,
> Reviewed-by: Johannes Thumshirn <[email protected]>
> --
> Johannes Thumshirn SUSE Labs
> [email protected] +49 911 74053 689
> SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: Felix Imendörffer, Jane Smithard, Graham Norton
> HRB 21284 (AG Nürnberg)
> Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850

2018-11-27 01:42:04

by Sergey Senozhatsky

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

On (11/26/18 21:23), Tamir Carmeli wrote:
> Thanks for the reply and sorry for my noob question:
> Wasn't I supposed to send this patch also to the FAT maintainer, OGAWA
> Hirofumi?

Yes.

> His name wasn't on the get_maintainer output, and I think
> that this specific file isn't listed anywhere under the maintainers
> file.

Right. Not all headers are tracked; so usually you'd want
to ./scripts/get_maintainer.pl fs/fat (where C files are).

-ss

2018-11-27 02:19:59

by OGAWA Hirofumi

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

Carmeli Tamir <[email protected]> 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 <[email protected]>

Reviewed-by: Johannes Thumshirn <[email protected]>
Reviewed-by: Sergey Senozhatsky <[email protected]>
Acked-by: OGAWA Hirofumi <[email protected]>

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 <[email protected]>