On 2024-04-27 07:08, Roland Mainz via Cygwin wrote:
Are the |FILE_ID_BOTH_DIR_INFORMATION| fields
|ShortName|+|ShortNameLength| mandatory these days, e.g. is it legal
to set |ShortNameLength = 0;| for Cygwin 3.4/3.5 in Windows 10 ?

MS Windows 8/Server 2012+ disabled 8.3 short name generation on new volumes/partitions, for example see:

        https://ss64.com/nt/syntax-filenames.html

        https://archive.techarp.com/showarticle53b4.html?artno=827

https://learn.microsoft.com/en-ca/archive/blogs/josebda/windows-server-2012-file-server-tip-disable-8-3-naming-and-strip-those-short-names-too

https://learn.microsoft.com/en-ca/windows-server/administration/windows-commands/fsutil-8dot3name

This really makes a big difference on directories like /var/log/ and /tmp/ if apps create a lot of files with similar name prefixes there, for example, date/time suffixed long file names from multiple hourly cron jobs, as long names can be queried via the B-tree but short names have to be scanned sequentially.

Is there anything else for a filesystem driver to do to indicate that
|ShortName| support is not available ?

Also see fsutil behavior query|set disable8dot3 [[<volumepath> [{1|0}]]|<value>]

% fsutil 8dot3name set /?
usage : fsutil 8dot3name set [0 through 3] | [<Volume Path> 1 | 0]

When a volume is not specified the operation updates the registry value:

    0 - Enable 8dot3 name creation on all volumes on the system
    1 - Disable 8dot3 name creation on all volumes on the system
    2 - Set 8dot3 name creation on a per volume basis
    3 - Disable 8dot3 name creation on all volumes except the
              system volume

    When a volume is specified the operation updates the individual
        volume's on disk flag.  This operation is only meaningful
        if the registry value is set to 2.

    0 - Enable 8dot3 name creation on this volume
    1 - Disable 8dot3 name creation on this volume

This operation takes effect immediately (no reboot required).

Sample commands:
  "fsutil 8dot3name set 1"      - disable 8dot3 name creation on all volumes
  "fsutil 8dot3name set C: 1"   - disable 8dot3 name creation on c:

% regtool get -v /proc/registry/HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/FileSystem/NtfsDisable8dot3NameCreation
2

% fsutil 8dot3name query c:
The volume state is: 0 (8dot3 name creation is enabled).
The registry state is: 2 (Per volume setting - the default).

Based on the above settings, 8dot3 name creation is enabled on c:

% fsutil 8dot3name query d:
The volume state is: 0 (8dot3 name creation is enabled).
The registry state is: 2 (Per volume setting - the default).

Based on the above settings, 8dot3 name creation is enabled on d:

--
Take care. Thanks, Brian Inglis              Calgary, Alberta, Canada

La perfection est atteinte                   Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter  not when there is no more to add
mais lorsqu'il n'y a plus rien à retirer     but when there is no more to cut
                                -- Antoine de Saint-Exupéry

--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to