__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<!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>Optimized MPEG Filesystem (OMFS) — 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="ORANGEFS" href="orangefs.html" />
<link rel="prev" title="OCFS2 file system - online file check" href="ocfs2-online-filecheck.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/omfs.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="optimized-mpeg-filesystem-omfs">
<h1>Optimized MPEG Filesystem (OMFS)<a class="headerlink" href="#optimized-mpeg-filesystem-omfs" title="Link to this heading">¶</a></h1>
<section id="overview">
<h2>Overview<a class="headerlink" href="#overview" title="Link to this heading">¶</a></h2>
<p>OMFS is a filesystem created by SonicBlue for use in the ReplayTV DVR
and Rio Karma MP3 player. The filesystem is extent-based, utilizing
block sizes from 2k to 8k, with hash-based directories. This
filesystem driver may be used to read and write disks from these
devices.</p>
<p>Note, it is not recommended that this FS be used in place of a general
filesystem for your own streaming media device. Native Linux filesystems
will likely perform better.</p>
<p>More information is available at:</p>
<blockquote>
<div><p><a class="reference external" href="http://linux-karma.sf.net/">http://linux-karma.sf.net/</a></p>
</div></blockquote>
<p>Various utilities, including mkomfs and omfsck, are included with
omfsprogs, available at:</p>
<blockquote>
<div><p><a class="reference external" href="https://bobcopeland.com/karma/">https://bobcopeland.com/karma/</a></p>
</div></blockquote>
<p>Instructions are included in its README.</p>
</section>
<section id="options">
<h2>Options<a class="headerlink" href="#options" title="Link to this heading">¶</a></h2>
<p>OMFS supports the following mount-time options:</p>
<blockquote>
<div><table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p>uid=n</p></td>
<td><p>make all files owned by specified user</p></td>
</tr>
<tr class="row-even"><td><p>gid=n</p></td>
<td><p>make all files owned by specified group</p></td>
</tr>
<tr class="row-odd"><td><p>umask=xxx</p></td>
<td><p>set permission umask to xxx</p></td>
</tr>
<tr class="row-even"><td><p>fmask=xxx</p></td>
<td><p>set umask to xxx for files</p></td>
</tr>
<tr class="row-odd"><td><p>dmask=xxx</p></td>
<td><p>set umask to xxx for directories</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
</section>
<section id="disk-format">
<h2>Disk format<a class="headerlink" href="#disk-format" title="Link to this heading">¶</a></h2>
<p>OMFS discriminates between “sysblocks” and normal data blocks. The sysblock
group consists of super block information, file metadata, directory structures,
and extents. Each sysblock has a header containing CRCs of the entire
sysblock, and may be mirrored in successive blocks on the disk. A sysblock may
have a smaller size than a data block, but since they are both addressed by the
same 64-bit block number, any remaining space in the smaller sysblock is
unused.</p>
<p>Sysblock header information:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct omfs_header {
__be64 h_self; /* FS block where this is located */
__be32 h_body_size; /* size of useful data after header */
__be16 h_crc; /* crc-ccitt of body_size bytes */
char h_fill1[2];
u8 h_version; /* version, always 1 */
char h_type; /* OMFS_INODE_X */
u8 h_magic; /* OMFS_IMAGIC */
u8 h_check_xor; /* XOR of header bytes before this */
__be32 h_fill2;
};
</pre></div>
</div>
<p>Files and directories are both represented by omfs_inode:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct omfs_inode {
struct omfs_header i_head; /* header */
__be64 i_parent; /* parent containing this inode */
__be64 i_sibling; /* next inode in hash bucket */
__be64 i_ctime; /* ctime, in milliseconds */
char i_fill1[35];
char i_type; /* OMFS_[DIR,FILE] */
__be32 i_fill2;
char i_fill3[64];
char i_name[OMFS_NAMELEN]; /* filename */
__be64 i_size; /* size of file, in bytes */
};
</pre></div>
</div>
<p>Directories in OMFS are implemented as a large hash table. Filenames are
hashed then prepended into the bucket list beginning at OMFS_DIR_START.
Lookup requires hashing the filename, then seeking across i_sibling pointers
until a match is found on i_name. Empty buckets are represented by block
pointers with all-1s (~0).</p>
<p>A file is an omfs_inode structure followed by an extent table beginning at
OMFS_EXTENT_START:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct omfs_extent_entry {
__be64 e_cluster; /* start location of a set of blocks */
__be64 e_blocks; /* number of blocks after e_cluster */
};
struct omfs_extent {
__be64 e_next; /* next extent table location */
__be32 e_extent_count; /* total # extents in this table */
__be32 e_fill;
struct omfs_extent_entry e_entry; /* start of extent entries */
};
</pre></div>
</div>
<p>Each extent holds the block offset followed by number of blocks allocated to
the extent. The final extent in each table is a terminator with e_cluster
being ~0 and e_blocks being ones’-complement of the total number of blocks
in the table.</p>
<p>If this table overflows, a continuation inode is written and pointed to by
e_next. These have a header but lack the rest of the inode structure.</p>
</section>
</section>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
©The kernel development community.
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
& <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
|
<a href="../_sources/filesystems/omfs.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>| 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 |
|