exFAT volume label length: 11 or 15 characters?

7

2

There's a fair amount of reference material on the web that states that the maximum label length for an exFAT volume is supposed to be 11 characters. However there are two ways that I am aware of to exceed this:

  1. Use the Linux tool exfatlabel found in the exfat-utils package;

  2. Format a USB device using the "Format" option from the "Right click on the drive" context menu under Windows 7. Note that the same option under Windows 8.1 no longer allows labels longer than 11 characters.

Both of the above allow a volume label up to 15 characters long with no other apparent ill effects.

Any ideas as to what is going on here? The fact that Microsoft corrected this issue with the transition from Windows 7 to Windows 8.1 suggests it's probably a bug, or some other sort of undefined or otherwise questionable behavior.

David G

Posted 2017-05-04T21:13:26.213

Reputation: 73

That's an interesting find, I hope someone will be able to shed some light on this. – gronostaj – 2017-05-04T21:43:20.757

Answers

7

exFAT stores the volume label in a special directory entry. The size of the entire entry is always 32 bytes, so both "file name" and "volume label" entries have 30 bytes of space for the text itself – that means 15 UCS-2 codepoints can be stored, technically. (Volume label is exactly one entry, while file names can span multiple.)

However, the exFAT 1.0 specification in US patent 20090164440 (page 21, table 23) says that the valid range of label length byte is between 0 and 11, and marks the remaining space of the directory entry as "reserved".

So my guess is that Microsoft decided to deliberately limit exFAT labels to the same size as FAT in order to reduce compatibility issues with other software, e.g. device firmwares which are difficult to update. (Perhaps another implementation tried to share code between FAT and exFAT, and long labels made it crash?)

(FAT stores volume labels in exactly the same manner, so it has a 11-byte limit due to using the 8.3 filename field.)

Meanwhile, exfat-utils either wasn't written exactly to the spec (perhaps parts of it were reverse-engineered) or just doesn't care about this issue, and makes full use of the available space.

So long labels are nonstandard, but probably safe to use – it is unlikely that those spare bytes will ever be reused for anything else, as Microsoft know that repurposing them would conflict with old 15-byte labels that people created in the past. If they allowed it in Win7, they have to support it for a long time.

user1686

Posted 2017-05-04T21:13:26.213

Reputation: 283 655