Files
docs/unicos.html

961 lines
334 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!--[if IE 6]>
<html id="ie6" lang="en-US">
<![endif]-->
<!--[if IE 7]>
<html id="ie7" lang="en-US">
<![endif]-->
<!--[if IE 8]>
<html id="ie8" lang="en-US">
<![endif]-->
<!--[if !(IE 6) & !(IE 7) & !(IE 8)]><!-->
<html lang="en-US">
<!--<![endif]-->
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<title>The UNICOS File-system | Modular Circuits</title>
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="stylesheet" type="text/css" media="all" href="http://www.modularcircuits.com/blog/wp-content/themes/twentyeleven-child/style.css" />
<link rel="pingback" href="http://www.modularcircuits.com/blog/xmlrpc.php" />
<!--[if lt IE 9]>
<script src="http://www.modularcircuits.com/blog/wp-content/themes/twentyeleven/js/html5.js" type="text/javascript"></script>
<![endif]-->
<link rel='dns-prefetch' href='//s.w.org' />
<link rel="alternate" type="application/rss+xml" title="Modular Circuits &raquo; Feed" href="http://www.modularcircuits.com/blog/feed/" />
<link rel="alternate" type="application/rss+xml" title="Modular Circuits &raquo; Comments Feed" href="http://www.modularcircuits.com/blog/comments/feed/" />
<script type="text/javascript">
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.3\/svg\/","svgExt":".svg","source":{"concatemoji":"http:\/\/www.modularcircuits.com\/blog\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.8.1"}};
!function(a,b,c){function d(a){var b,c,d,e,f=String.fromCharCode;if(!k||!k.fillText)return!1;switch(k.clearRect(0,0,j.width,j.height),k.textBaseline="top",k.font="600 32px Arial",a){case"flag":return k.fillText(f(55356,56826,55356,56819),0,0),b=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,56826,8203,55356,56819),0,0),c=j.toDataURL(),b===c&&(k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447),0,0),b=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447),0,0),c=j.toDataURL(),b!==c);case"emoji4":return k.fillText(f(55358,56794,8205,9794,65039),0,0),d=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55358,56794,8203,9794,65039),0,0),e=j.toDataURL(),d!==e}return!1}function e(a){var c=b.createElement("script");c.src=a,c.defer=c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g,h,i,j=b.createElement("canvas"),k=j.getContext&&j.getContext("2d");for(i=Array("flag","emoji4"),c.supports={everything:!0,everythingExceptFlag:!0},h=0;h<i.length;h++)c.supports[i[h]]=d(i[h]),c.supports.everything=c.supports.everything&&c.supports[i[h]],"flag"!==i[h]&&(c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&c.supports[i[h]]);c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&!c.supports.flag,c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.everything||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
</script>
<style type="text/css">
img.wp-smiley,
img.emoji {
display: inline !important;
border: none !important;
box-shadow: none !important;
height: 1em !important;
width: 1em !important;
margin: 0 .07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}
</style>
<link rel='stylesheet' id='crayon-css' href='http://www.modularcircuits.com/blog/wp-content/plugins/crayon-syntax-highlighter/css/min/crayon.min.css?ver=_2.7.2_beta' type='text/css' media='all' />
<link rel='stylesheet' id='crayon-theme-classic-css' href='http://www.modularcircuits.com/blog/wp-content/plugins/crayon-syntax-highlighter/themes/classic/classic.css?ver=_2.7.2_beta' type='text/css' media='all' />
<link rel='stylesheet' id='crayon-font-monaco-css' href='http://www.modularcircuits.com/blog/wp-content/plugins/crayon-syntax-highlighter/fonts/monaco.css?ver=_2.7.2_beta' type='text/css' media='all' />
<link rel='stylesheet' id='stcr-plugin-style-css' href='http://www.modularcircuits.com/blog/wp-content/plugins/subscribe-to-comments-reloaded/includes/css/stcr-plugin-style.css?ver=4.8.1' type='text/css' media='all' />
<script type='text/javascript' src='http://www.modularcircuits.com/blog/wp-includes/js/jquery/jquery.js?ver=1.12.4'></script>
<script type='text/javascript' src='http://www.modularcircuits.com/blog/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1'></script>
<script type='text/javascript'>
/* <![CDATA[ */
var CrayonSyntaxSettings = {"version":"_2.7.2_beta","is_admin":"0","ajaxurl":"http:\/\/www.modularcircuits.com\/blog\/wp-admin\/admin-ajax.php","prefix":"crayon-","setting":"crayon-setting","selected":"crayon-setting-selected","changed":"crayon-setting-changed","special":"crayon-setting-special","orig_value":"data-orig-value","debug":""};
var CrayonSyntaxStrings = {"copy":"Press %s to Copy, %s to Paste","minimize":"Click To Expand Code"};
/* ]]> */
</script>
<script type='text/javascript' src='http://www.modularcircuits.com/blog/wp-content/plugins/crayon-syntax-highlighter/js/min/crayon.min.js?ver=_2.7.2_beta'></script>
<script type='text/javascript' src='http://www.modularcircuits.com/blog/wp-content/plugins/subscribe-to-comments-reloaded/includes/js/stcr-plugin.js?ver=4.8.1'></script>
<link rel='https://api.w.org/' href='http://www.modularcircuits.com/blog/wp-json/' />
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.modularcircuits.com/blog/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.modularcircuits.com/blog/wp-includes/wlwmanifest.xml" />
<meta name="generator" content="WordPress 4.8.1" />
<link rel="canonical" href="http://www.modularcircuits.com/blog/articles/the-return-of-the-cray-files/the-unicos-file-system/" />
<link rel='shortlink' href='http://www.modularcircuits.com/blog/?p=1839' />
<link rel="alternate" type="application/json+oembed" href="http://www.modularcircuits.com/blog/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fwww.modularcircuits.com%2Fblog%2Farticles%2Fthe-return-of-the-cray-files%2Fthe-unicos-file-system%2F" />
<link rel="alternate" type="text/xml+oembed" href="http://www.modularcircuits.com/blog/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fwww.modularcircuits.com%2Fblog%2Farticles%2Fthe-return-of-the-cray-files%2Fthe-unicos-file-system%2F&#038;format=xml" />
<script type='text/javascript' src='http://www.modularcircuits.com/blog/wp-content/plugins/anti-captcha/anti-captcha-0.3.js.php?ver=28b60a16b55fd531047c0c958ce14b95'></script>
<style type="text/css">.broken_link, a.broken_link {
text-decoration: line-through;
}</style></head>
<body class="page-template-default page page-id-1839 page-child parent-pageid-1783 single-author singular one-column content">
<div id="page" class="hfeed">
<header id="branding" role="banner">
<hgroup>
<h1 id="site-title"><span><a href="http://www.modularcircuits.com/blog/" rel="home">Modular Circuits</a></span></h1>
<h2 id="site-description"></h2>
</hgroup>
<a href="http://www.modularcircuits.com/blog/">
<img src="http://modularcircuits.tantosonline.com/blog/wp-content/uploads/2013/10/header.jpg" width="1000" height="288" alt="Modular Circuits" />
</a>
<form method="get" id="searchform" action="http://www.modularcircuits.com/blog/">
<label for="s" class="assistive-text">Search</label>
<input type="text" class="field" name="s" id="s" placeholder="Search" />
<input type="submit" class="submit" name="submit" id="searchsubmit" value="Search" />
</form>
<nav id="access" role="navigation">
<h3 class="assistive-text">Main menu</h3>
<div class="skip-link"><a class="assistive-text" href="#content">Skip to primary content</a></div>
<div class="menu"><ul>
<li ><a href="http://www.modularcircuits.com/blog/">Home</a></li><li class="page_item page-item-574 page_item_has_children"><a href="http://www.modularcircuits.com/blog/projects/">Projects</a>
<ul class='children'>
<li class="page_item page-item-669"><a href="http://www.modularcircuits.com/blog/projects/licenses/">Licenses</a></li>
<li class="page_item page-item-607 page_item_has_children"><a href="http://www.modularcircuits.com/blog/projects/h-storm-cpu-modules/">The H-Storm Project</a>
<ul class='children'>
<li class="page_item page-item-617"><a href="http://www.modularcircuits.com/blog/projects/h-storm-cpu-modules/hcat91/">hcAT91</a></li>
<li class="page_item page-item-619"><a href="http://www.modularcircuits.com/blog/projects/h-storm-cpu-modules/hcpci/">hcPCI</a></li>
<li class="page_item page-item-621"><a href="http://www.modularcircuits.com/blog/projects/h-storm-cpu-modules/hpcs8900/">hpCS8900</a></li>
<li class="page_item page-item-623"><a href="http://www.modularcircuits.com/blog/projects/h-storm-cpu-modules/hsstartup/">hsStartup</a></li>
</ul>
</li>
<li class="page_item page-item-613 page_item_has_children"><a href="http://www.modularcircuits.com/blog/projects/umodules/">µModules</a>
<ul class='children'>
<li class="page_item page-item-629"><a href="http://www.modularcircuits.com/blog/projects/umodules/%c2%b5m-h-bridge/">µM-H-Bridge</a></li>
<li class="page_item page-item-634"><a href="http://www.modularcircuits.com/blog/projects/umodules/%c2%b5m-servo-brain/">µM-Servo brain</a></li>
<li class="page_item page-item-632"><a href="http://www.modularcircuits.com/blog/projects/umodules/%c2%b5m-servo-32/">µM-Servo-32</a></li>
</ul>
</li>
<li class="page_item page-item-615 page_item_has_children"><a href="http://www.modularcircuits.com/blog/projects/development-tools/">Development Tools</a>
<ul class='children'>
<li class="page_item page-item-644"><a href="http://www.modularcircuits.com/blog/projects/development-tools/gcc-for-arm-avr-and-blackfin/">GCC for ARM, AVR and BlackFin</a></li>
<li class="page_item page-item-636"><a href="http://www.modularcircuits.com/blog/projects/development-tools/logic-probe/">Logic probe</a></li>
<li class="page_item page-item-638"><a href="http://www.modularcircuits.com/blog/projects/development-tools/parallel-port-jtag-programmer/">Parallel port JTAG programmer</a></li>
<li class="page_item page-item-640"><a href="http://www.modularcircuits.com/blog/projects/development-tools/parallel-port-jtag-programmer-2/">Parallel port JTAG programmer 2</a></li>
<li class="page_item page-item-642"><a href="http://www.modularcircuits.com/blog/projects/development-tools/usb-port-jtag-programmer/">USB port JTAG programmer</a></li>
</ul>
</li>
</ul>
</li>
<li class="page_item page-item-578 page_item_has_children current_page_ancestor"><a href="http://www.modularcircuits.com/blog/articles/">Articles</a>
<ul class='children'>
<li class="page_item page-item-563 page_item_has_children"><a href="http://www.modularcircuits.com/blog/articles/h-bridge-secrets/">H-Bridge Secrets</a>
<ul class='children'>
<li class="page_item page-item-568"><a href="http://www.modularcircuits.com/blog/articles/h-bridge-secrets/h-bridges-the-basics/">H-Bridges &#8211; the Basics</a></li>
<li class="page_item page-item-570"><a href="http://www.modularcircuits.com/blog/articles/h-bridge-secrets/sign-magnitude-drive/">Sign-Magnitude Drive</a></li>
<li class="page_item page-item-572"><a href="http://www.modularcircuits.com/blog/articles/h-bridge-secrets/lock-anti-phase-drive/">Lock Anti-Phase Drive</a></li>
<li class="page_item page-item-794"><a href="http://www.modularcircuits.com/blog/articles/h-bridge-secrets/asynchronous-sign-magnitude-drive/">Asynchronous Sign-magnitude Drive</a></li>
<li class="page_item page-item-863"><a href="http://www.modularcircuits.com/blog/articles/h-bridge-secrets/mosfets-and-catch-diodes/">MOSFETs and catch diodes</a></li>
<li class="page_item page-item-889"><a href="http://www.modularcircuits.com/blog/articles/h-bridge-secrets/h-bridge_drivers/">H-Bridge Drivers</a></li>
<li class="page_item page-item-983"><a href="http://www.modularcircuits.com/blog/articles/h-bridge-secrets/h-bridge-control/">H-bridge Control</a></li>
<li class="page_item page-item-1008"><a href="http://www.modularcircuits.com/blog/articles/h-bridge-secrets/safety-features/">Safety features</a></li>
</ul>
</li>
<li class="page_item page-item-687 page_item_has_children"><a href="http://www.modularcircuits.com/blog/articles/old-h-bridge-secrets/">Old H-Bridge Secrets</a>
<ul class='children'>
<li class="page_item page-item-689"><a href="http://www.modularcircuits.com/blog/articles/old-h-bridge-secrets/part-1/">Part 1</a></li>
<li class="page_item page-item-691"><a href="http://www.modularcircuits.com/blog/articles/old-h-bridge-secrets/part-2/">Part 2</a></li>
<li class="page_item page-item-693"><a href="http://www.modularcircuits.com/blog/articles/old-h-bridge-secrets/part-3/">Part 3</a></li>
</ul>
</li>
<li class="page_item page-item-585 page_item_has_children"><a href="http://www.modularcircuits.com/blog/articles/bridge-to-the-far-side/">Bridge to the far-side</a>
<ul class='children'>
<li class="page_item page-item-582"><a href="http://www.modularcircuits.com/blog/articles/bridge-to-the-far-side/motor-modeling/">Motor Modeling</a></li>
<li class="page_item page-item-583"><a href="http://www.modularcircuits.com/blog/articles/bridge-to-the-far-side/how-to-read-motor-datasheets/">How to Read Motor Datasheets</a></li>
<li class="page_item page-item-584"><a href="http://www.modularcircuits.com/blog/articles/bridge-to-the-far-side/modeling-mechanical-systems/">Modeling mechanical systems</a></li>
</ul>
</li>
<li class="page_item page-item-1201 page_item_has_children"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/">The Cray Files</a>
<ul class='children'>
<li class="page_item page-item-1172"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/prelude/">Prelude</a></li>
<li class="page_item page-item-1216"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/a-new-hope/">A New Hope</a></li>
<li class="page_item page-item-1230"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/the-hunt-for-the-red-bootcode/">The Hunt for the Red Bootcode</a></li>
<li class="page_item page-item-1238"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/the-return-of-the-cray/">The Return of the Cray</a></li>
<li class="page_item page-item-1386"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/the-matrix/">The Matrix</a></li>
<li class="page_item page-item-1422"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/first-update/">First update</a></li>
<li class="page_item page-item-1440"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/needle-in-the-hay-stack/">Needle in the hay-stack</a></li>
<li class="page_item page-item-1504"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/a-brave-new-world/">A Brave New World</a></li>
<li class="page_item page-item-1532"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/multiple-platforms/">Multiple Platforms</a></li>
<li class="page_item page-item-1541"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/jobs/">Jobs</a></li>
<li class="page_item page-item-1696"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/parallels/">Parallels</a></li>
<li class="page_item page-item-1739"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/turbo/">Turbo</a></li>
<li class="page_item page-item-1425"><a href="http://www.modularcircuits.com/blog/articles/the-cray-files/downloads/">Downloads</a></li>
</ul>
</li>
<li class="page_item page-item-1783 page_item_has_children current_page_ancestor current_page_parent"><a href="http://www.modularcircuits.com/blog/articles/the-return-of-the-cray-files/">The Return of the Cray files</a>
<ul class='children'>
<li class="page_item page-item-1782"><a href="http://www.modularcircuits.com/blog/articles/the-return-of-the-cray-files/a-bridge-too-far/">A Bridge too Far</a></li>
<li class="page_item page-item-1792"><a href="http://www.modularcircuits.com/blog/articles/the-return-of-the-cray-files/that-obscure-object-of-desire/">That Obscure Object of Desire</a></li>
<li class="page_item page-item-1813"><a href="http://www.modularcircuits.com/blog/articles/the-return-of-the-cray-files/exploring-the-cd/">Exploring the CD</a></li>
<li class="page_item page-item-1823"><a href="http://www.modularcircuits.com/blog/articles/the-return-of-the-cray-files/a-new-simulator-part-1/">A New Simulator, part 1</a></li>
<li class="page_item page-item-1826"><a href="http://www.modularcircuits.com/blog/articles/the-return-of-the-cray-files/a-new-simulator-part-2/">A New Simulator, part 2</a></li>
<li class="page_item page-item-1834"><a href="http://www.modularcircuits.com/blog/articles/the-return-of-the-cray-files/a-new-simulator-part-3/">A New Simulator, part 3</a></li>
<li class="page_item page-item-1851"><a href="http://www.modularcircuits.com/blog/articles/the-return-of-the-cray-files/oldies-but-goldies/">Oldies But Goldies</a></li>
<li class="page_item page-item-1839 current_page_item"><a href="http://www.modularcircuits.com/blog/articles/the-return-of-the-cray-files/the-unicos-file-system/">The UNICOS File-system</a></li>
</ul>
</li>
</ul>
</li>
<li class="page_item page-item-674"><a href="http://www.modularcircuits.com/blog/contact/">Contact</a></li>
</ul></div>
</nav><!-- #access -->
</header><!-- #branding -->
<div id="main">
<div id="primary">
<div id="content" role="main">
<article id="post-1839" class="post-1839 page type-page status-publish hentry">
<header class="entry-header">
<h1 class="entry-title">The UNICOS File-system</h1>
</header><!-- .entry-header -->
<div class="entry-content">
<div style=text-align:left;><a class="wpptopdfenh" target="_blank" rel="noindex,nofollow" href="/blog/articles/the-return-of-the-cray-files/the-unicos-file-system/?format=pdf" title="Download PDF"><img alt="Download PDF" src="http://www.modularcircuits.com/blog/wp-content/plugins/wp-post-to-pdf-enhanced/asset/images/pdf.png"></a></div><p class="western">Previously Ive gotten as far as getting the main console more or less working and UNICOS checking in. After cleaning up some garbage on the screen due to some misunderstanding of how the sequence number and acknowledge system worked for the terminal, I have a much cleaner picture now:</p>
<p><img src="data:image/png;base64,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" name="Picture 3" border="0" /></p>
<p>Looking at the screen, there are two ominous warnings: one that the system apparently cannot open root with disk inode and the other reporting the file-system to be full. Ill let the first one slide for now as, apparently the system still boots and look at the second problem: why is the file-system full and what to do about it?</p>
<p>Turning on logging of disk activity and looking at whats going on, its pretty easy to identify the culprit: The OS tries to write the full kernel memory content onto the disk (sort of like a core-dump). But why would it dump the core? If the kernel actually crashed, it wouldnt have gotten as far as it did, and if it wasnt the kernel, the dump wouldnt be of the full memory only of the processes memory space.</p>
<p>Maybe thats what just UNICOS does: it dumps the memory on boot for fun and giggles.</p>
<p>However that possibility brings up the next problem: the file-system I have (ram_fs) clearly isnt big enough to hold the dump.</p>
<p>(Update: As I much later found out, UNICOS only dumps the kernel memory space if it&#8217;s booting off of a IOS-attached disk as opposed to a ram_fs. In this case, however I&#8217;ve emulated a virtual hard drive, containing the ram_fs image, which confused the OS. Nevertheless, I didn&#8217;t figure out much later how to even boot off of a RAM drive, let alone that that was the problem.)</p>
<p>Whatever the reason is, the solution seems to be to figure out how to re-size an existing file-system. This might turn out to be hard to do, but I have to reverse-engineer the file-system anyway: at the moment I can only exchange files with the OS running in the simulator through creating a FS on the host and mounting it inside the simulator. And exchanging files I must if I want to install the full OS: I need to transfer the install media.</p>
<p>So, how should I go about it?</p>
<p>Lets go back to our trusted source of information: /usr/include/sys. Theres actually a whole directory here dealing with file-system stuff:</p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->
<div id="crayon-598a6a3599cc1390039940" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
<div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><span class="crayon-title"></span>
<div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><div class="crayon-button crayon-nums-button" title="Toggle Line Numbers"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-plain-button" title="Toggle Plain Code"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-wrap-button" title="Toggle Line Wrap"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-expand-button" title="Expand Code"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-copy-button" title="Copy"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-popup-button" title="Open Code In New Window"><div class="crayon-button-icon"></div></div><span class="crayon-language">Shell</span></div></div>
<div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;"></div>
<div class="crayon-plain-wrap"><textarea wrap="soft" class="crayon-plain print-no" data-settings="dblclick" readonly style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;">
$ ls -la
total 165
drwxrwx---+ 1 tantos None 0 Jun 18 07:11 .
drwxrwx---+ 1 tantos None 0 Jun 18 07:11 ..
-rwxrwx---+ 1 tantos None 472 Jun 18 07:11 nc1dir.h
-rwxrwx---+ 1 tantos None 10251 Jun 18 07:11 nc1filsys.h
-rwxrwx---+ 1 tantos None 7709 Jun 18 07:11 nc1ino.h
-rwxrwx---+ 1 tantos None 16110 Jun 18 07:11 nc1inode.h
-rwxrwx---+ 1 tantos None 11884 Jun 18 07:11 nc1proto.h
-rwxrwx---+ 1 tantos None 1625 Jun 18 07:11 ncdir.h
drwxrwx---+ 1 tantos None 0 Jun 18 07:11 nfs
-rwxrwx---+ 1 tantos None 7001 Jun 18 07:11 prfcntl.h
-rwxrwx---+ 1 tantos None 1313 Jun 18 07:11 prmount.h
-rwxrwx---+ 1 tantos None 2307 Jun 18 07:11 prnode.h
-rwxrwx---+ 1 tantos None 985 Jun 18 07:11 sfsblock.h
-rwxrwx---+ 1 tantos None 1034 Jun 18 07:11 sfsconsts.h</textarea></div>
<div class="crayon-main" style="">
<table class="crayon-table">
<tr class="crayon-row">
<td class="crayon-nums " data-settings="show">
<div class="crayon-nums-content" style="font-size: 12px !important; line-height: 15px !important;"><div class="crayon-num" data-line="crayon-598a6a3599cc1390039940-1">1</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cc1390039940-2">2</div><div class="crayon-num" data-line="crayon-598a6a3599cc1390039940-3">3</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cc1390039940-4">4</div><div class="crayon-num" data-line="crayon-598a6a3599cc1390039940-5">5</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cc1390039940-6">6</div><div class="crayon-num" data-line="crayon-598a6a3599cc1390039940-7">7</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cc1390039940-8">8</div><div class="crayon-num" data-line="crayon-598a6a3599cc1390039940-9">9</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cc1390039940-10">10</div><div class="crayon-num" data-line="crayon-598a6a3599cc1390039940-11">11</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cc1390039940-12">12</div><div class="crayon-num" data-line="crayon-598a6a3599cc1390039940-13">13</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cc1390039940-14">14</div><div class="crayon-num" data-line="crayon-598a6a3599cc1390039940-15">15</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cc1390039940-16">16</div></div>
</td>
<td class="crayon-code"><div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="crayon-598a6a3599cc1390039940-1"><span class="crayon-sy">$</span><span class="crayon-h"> </span><span class="crayon-r">ls</span><span class="crayon-h"> </span><span class="crayon-o">-</span><span class="crayon-e">la</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cc1390039940-2"><span class="crayon-i">total</span><span class="crayon-h"> </span><span class="crayon-cn">165</span></div><div class="crayon-line" id="crayon-598a6a3599cc1390039940-3"><span class="crayon-v">drwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-cn">0</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-sy">.</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cc1390039940-4"><span class="crayon-v">drwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-cn">0</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-sy">.</span><span class="crayon-sy">.</span></div><div class="crayon-line" id="crayon-598a6a3599cc1390039940-5"><span class="crayon-o">-</span><span class="crayon-v">rwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-cn">472</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-v">nc1dir</span><span class="crayon-e">.h</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cc1390039940-6"><span class="crayon-o">-</span><span class="crayon-v">rwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h"> </span><span class="crayon-cn">10251</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-v">nc1filsys</span><span class="crayon-e">.h</span></div><div class="crayon-line" id="crayon-598a6a3599cc1390039940-7"><span class="crayon-o">-</span><span class="crayon-v">rwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-cn">7709</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-v">nc1ino</span><span class="crayon-e">.h</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cc1390039940-8"><span class="crayon-o">-</span><span class="crayon-v">rwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h"> </span><span class="crayon-cn">16110</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-v">nc1inode</span><span class="crayon-e">.h</span></div><div class="crayon-line" id="crayon-598a6a3599cc1390039940-9"><span class="crayon-o">-</span><span class="crayon-v">rwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h"> </span><span class="crayon-cn">11884</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-v">nc1proto</span><span class="crayon-e">.h</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cc1390039940-10"><span class="crayon-o">-</span><span class="crayon-v">rwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-cn">1625</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-v">ncdir</span><span class="crayon-e">.h</span></div><div class="crayon-line" id="crayon-598a6a3599cc1390039940-11"><span class="crayon-v">drwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-cn">0</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-v">nfs</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cc1390039940-12"><span class="crayon-o">-</span><span class="crayon-v">rwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-cn">7001</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-v">prfcntl</span><span class="crayon-e">.h</span></div><div class="crayon-line" id="crayon-598a6a3599cc1390039940-13"><span class="crayon-o">-</span><span class="crayon-v">rwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-cn">1313</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-v">prmount</span><span class="crayon-e">.h</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cc1390039940-14"><span class="crayon-o">-</span><span class="crayon-v">rwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-cn">2307</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-v">prnode</span><span class="crayon-e">.h</span></div><div class="crayon-line" id="crayon-598a6a3599cc1390039940-15"><span class="crayon-o">-</span><span class="crayon-v">rwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-cn">985</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-v">sfsblock</span><span class="crayon-e">.h</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cc1390039940-16"><span class="crayon-o">-</span><span class="crayon-v">rwxrwx</span><span class="crayon-o">--</span><span class="crayon-o">-</span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-h"> </span><span class="crayon-e">tantos </span><span class="crayon-i">None</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-cn">1034</span><span class="crayon-h"> </span><span class="crayon-i">Jun</span><span class="crayon-h"> </span><span class="crayon-cn">18</span><span class="crayon-h"> </span><span class="crayon-cn">07</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-h"> </span><span class="crayon-v">sfsconsts</span><span class="crayon-e">.h</span></div></div></td>
</tr>
</table>
</div>
</div>
<!-- [Format Time: 0.0058 seconds] -->
<p>Of primary interest are nc1filsys.h nc1ino.h and ncdir.h. They contain (in order) the layout of the super-block, something called the dynamic block, the inode structure and the directory structure.</p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->
<div id="crayon-598a6a3599ce8461941656" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
<div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><span class="crayon-title">nc1filsys.h</span>
<div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><div class="crayon-button crayon-nums-button" title="Toggle Line Numbers"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-plain-button" title="Toggle Plain Code"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-wrap-button" title="Toggle Line Wrap"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-expand-button" title="Expand Code"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-copy-button" title="Copy"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-popup-button" title="Open Code In New Window"><div class="crayon-button-icon"></div></div><span class="crayon-language">C</span></div></div>
<div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;"></div>
<div class="crayon-plain-wrap"><textarea wrap="soft" class="crayon-plain print-no" data-settings="dblclick" readonly style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;">
/* USMID @(#)uts/c1/sys/fs/nc1filsys.h 100.1 04/16/98 12:47:39 */
/* COPYRIGHT CRAY RESEARCH, INC.
* UNPUBLISHED -- ALL RIGHTS RESERVED UNDER
* THE COPYRIGHT LAWS OF THE UNITED STATES.
*/
#ifndef __C1SYS_FS_NC1FILSYS_H_
#define __C1SYS_FS_NC1FILSYS_H_
/*
* NC1 File system structures and definitions
*/
/*
* Inode region descriptor.
* The first block of an inode region is a
* bit map for the inodes in that region.
*/
struct nc1ireg_sb {
uint i_unused:16, /* reserved */
i_nblk :16, /* number of blocks */
i_sblk :32; /* start block number */
};
struct nc1ireg_db {
uint i_avail; /* number of available inodes */
};
#define NC1MAXIREG 4 /* Maximum inode regions per partition */
#define NC1IMAPBLKS 1 /* number of blocks in inode map */
struct nc1fdev_sb
{
long fd_name; /* Physical device name */
uint fd_sblk :32, /* Start block number */
fd_nblk :32; /* Number of blocks */
struct nc1ireg_sb fd_ireg[NC1MAXIREG]; /* Inode regions */
};
struct nc1fdev_db
{
int fd_flag; /* flag word */
struct nc1ireg_db fd_ireg[NC1MAXIREG]; /* Inode regions */
};
#define FDNC1_DOWN 1 /* Slice is not available */
#define FDNC1_RDONLY 2 /* Slice is read only */
#define FDNC1_NOALLOC 4 /* Slice is not available for allocation */
#define FDNC1_SBDB 010 /* Slice has valid FS tables */
#define FDNC1_RTDIR 020 /* Slice has valid ROOT Inode and directory */
#define FDNC1_SECALL 0100 /* Slice sector allocated */
#define NC1MAXPART 64 /* Maximum number of partitions */
/*
* Structure of the super-block
*/
struct nc1filsys
{
long s_magic; /* magic number to indicate file system type */
char s_fname[8]; /* file system name */
char s_fpack[8]; /* file system pack name */
dev_t s_dev; /* major/minor device, for verification */
daddr_t s_fsize; /* size in blocks of entire volume */
int s_isize; /* Number of total inodes */
long s_bigfile; /* number of bytes at which a file is big */
long s_bigunit; /* minimum number of blocks allocated for
big files */
long s_secure; /* security: secure FS label */
int s_maxlvl; /* security: maximum security level */
int s_minlvl; /* security: minimum security level */
long s_valcmp; /* security: valid security compartments */
time_t s_time; /* last super block update */
blkno_t s_dboff; /* Dynamic block number */
ino_t s_root; /* root inode */
int s_error; /* Type of file system error detected */
blkno_t s_mapoff; /* Start map block number */
int s_mapblks; /* Last map block number */
int s_nscpys; /* Number of copies of s.b per partition */
int s_npart; /* Number of partitions */
int s_ifract; /* Ratio of inodes to blocks */
extent_t s_sfs; /* SFS only blocks */
long s_flag; /* Flag word */
struct nc1fdev_sb s_part[NC1MAXPART]; /* Partition descriptors */
int s_iounit; /* Physical block size */
long s_numiresblks; /* number of inode reservation blocks */
/* per region (currently 1) */
/* 0 = 1*(AU) words, n = (n+1)*(AU) words */
long s_priparts; /* bitmap of primary partitions */
long s_priblock; /* block size of primary partition(s) */
/* 0 = 1*512 words, n = (n+1)*512 words */
long s_prinblks; /* number of 512 wds blocks in primary */
long s_secparts; /* bitmap of secondary partitions */
long s_secblock; /* block size of secondary partition(s) */
/* 0 = 1*512 words, n = (n+1)*512 words */
long s_secnblks; /* number of 512 wds blocks in secondary */
long s_sbdbparts; /* bitmap of partitions with file system data */
/* including super blocks, dynamic block */
/* and free block bitmaps (only primary */
/* partitions may contain these) */
long s_rootdparts; /* bitmap of partitions with root directory */
/* (only primary partitions) */
long s_nudparts; /* bitmap of no-user-data partitions */
/* (only primary partitions) */
long s_nsema; /* SFS: # fs semaphores to allocate */
long s_priactive; /* bitmap of primary partitions which contain */
/* active (up to date) dynamic blocks and */
/* free block bitmaps. All bits set indicate */
/* that all primary partitions are active, */
/* and no kernel manipulation of active flag */
/* is allowed. */
int s_sfs_arbiterid;/* SFS Arbiter ID */
long s_fill[91]; /* reserved */
};
#define NC1NSUPER 10 /* Copies of s.b. per partition */
#define NC1MINPARTSZ (6+NC1NSUPER) /* Minimum blocks per partition */
#define NC1MAXACTIVEPARTS 4 /* Max. number of primary partitions */
/* maintained as up to date */
#define FsMAGIC_NC1 0x6e6331667331636e /* s_magic number */
#define FsSECURE 0xcd076d1771d670cd /* s_secure: secure file system */
/*
* Filesystem errors
*/
#define Fs_SUPER 1 /* Bad super block encountered */
#define Fs_DYNAMIC 2 /* Bad dynamic block encountered */
#define Fs_SHARED 3 /* Bad shared block encountered */
#define Fs_MAP 4 /* Bad map block encountered */
#define Fs_SFS_SYSDOWN 5 /* SFS System Active sema cleared */
/*
* Filesystem super block flags
* (For mostly historical reasons nearly all of the flags defined here,
* and later for dynamic block usage, are mutually exclusive.
* This practice dates back to before the time when the super block
* and dynamic block were separated.)
* Many of the bit combinations that aren't apparently `available' have
* probably been moved to m_fsflag in the mount table.
* As these flags get separated into different data structures, the
* need &amp;/or desire to retain their old bit notations rapidly decreases.
* The flags that remain in the super block, or dynamic block, must stay
* in the current form, as these flags are carried on-media, and become
* a matter of file system compatibility.
*/
#define Fs_PANIC 0000000001 /* not used */
#define Fs_RRFILE 0000000002 /* Round robin file allocation */
#define Fs_RRALLDIR 0000000004 /* Round robin all directories */
#define Fs_RR1STDIR 0000000010 /* Round robin 1st level directories */
/* Fs_CHECKED 0000000040 Flag used in the Dynamic Blk */
/* Fs_MOUNTED 0000000100 Flag used in the Dynamic Blk */
#define Fs_UPDATE 0000001000 /* File system update in progress */
#define Fs_WUPDAT 0000002000 /* File system wakeup after update */
#define Fs_RRALLUDATA 0000020000 /* Round robin all user file data */
#define Fs_NOIPREF 0000040000 /* Inode alloc. preference disabled */
#define Fs_PANICLESS 0000100000 /* Attempt to continue on error */
#define Fs_SCRUB 0000200000 /* Enable/Disable filesystem scrub */
#define Fs_SFS 0010000000 /* Shared File system */
#define Fs_TESTCOND1 0100000000 /* Test condition #1 */
#define Fs_TESTCOND2 0200000000 /* Test condition #2 */
#define Fs_TESTCOND3 0400000000 /* Test condition #3 */
struct nc1dblock
{
long db_magic; /* magic number to indicate file system type */
daddr_t db_tfree; /* total available blocks */
int db_ifree; /* total free inodes */
int db_ninode; /* total allocated inodes */
long db_state; /* file system state */
time_t db_time; /* last dynamic block update */
long db_type; /* type of new file system */
int db_spart; /* Partition from which system mounted */
int db_ifptr; /* Inode allocation pointer */
int db_actype; /* device accounting type (for billing) */
long db_flag; /* Flag word */
long db_res1[10]; /* reserved */
struct nc1fdev_db db_part[NC1MAXPART]; /* Partition descriptors */
lockinfo_t db_lockinf; /* proc of the process locking the filesystem */
int db_dpfptr; /* primary partitions allocation pointer */
int db_dsfptr; /* secondary partitions allocation pointer */
daddr_t db_sfree; /* secondary parts free blocks */
union {
int db_fpmapfil[16];
struct map db_fpm; /* Free blk map hdr - primary part. */
} db_fpmap_u;
union {
int db_fsmapfil[16];
struct map db_fsm; /* Free blk map hdr - secondary part. */
} db_fsmap_u;
long db_fill[133]; /* reserved */
};
#define db_fpmap db_fpmap_u.db_fpm
#define db_fsmap db_fsmap_u.db_fsm
#define db_fptr db_ifptr
#define db_fmap db_fpmap
#define DbMAGIC_NC1 0x6e6331646231636e /* db_magic number */
/*
* Filesystem dynamic block flags
*/
#define Fs_CHECKED 0000000040 /* File system checked */
#define Fs_MOUNTED 0000000100 /* File system mounted */
/*
* Macros that result an a pointer to a file system Mount structure
*/
#define VFS_TO_MP(vfsp) \
((struct mount *)((vfsp)-&gt;vfs_data))
#define VP_TO_MP(vp) \
((struct mount *)(((vp)-&gt;v_vfsp)-&gt;vfs_data))
/*
* Macros that result an a pointer to a file system Super Block
*/
#define MP_TO_NC1SB(mp) \
((struct nc1filsys *)(((mp)-&gt;m_bufp)-&gt;b_waddr))
#define VFS_TO_NC1SB(vfsp) \
((struct nc1filsys *)((VFS_TO_MP(vfsp)-&gt;m_bufp)-&gt;b_waddr))
#define VP_TO_NC1SB(vp) \
((struct nc1filsys *)((VP_TO_MP(vp)-&gt;m_bufp)-&gt;b_waddr))
/*
* Macros that result an a pointer to a file system Dynamic Block
*/
#define MP_TO_NC1DB(mp) \
((struct nc1dblock *)(((mp)-&gt;m_dbufp)-&gt;b_waddr))
#define VFS_TO_NC1DB(vfsp) \
((struct nc1dblock *)((VFS_TO_MP(vfsp)-&gt;m_dbufp)-&gt;b_waddr))
#define VP_TO_NC1DB(vp) \
((struct nc1dblock *)((VP_TO_MP(vp)-&gt;m_dbufp)-&gt;b_waddr))
/*
* Macros that result an a pointer to a file system SFS Control Block
*/
#define MP_TO_NC1SFSB(mp) \
((struct sfsdblk *)(((mp)-&gt;m_sfsbufp)-&gt;b_waddr))
#define VFS_TO_NC1SFSB(vfsp) \
((struct sfsdblk *)((VFS_TO_MP(vfsp)-&gt;m_sfsbufp)-&gt;b_waddr))
#define VP_TO_NC1SFSB(vp) \
((struct sfsdblk *)((VP_TO_MP(vp)-&gt;m_sfsbufp)-&gt;b_waddr))
#ifndef KERNEL
/*
* Bit-position flags for fsgetsuper() flags argument.
*/
#define FSGETSUPER_USEFIRST 0001
#define FSGETSUPER_NOERRORS 0002
struct mntent;
int ismounted(char *special, ...);
int issfscapable(int *port_num, char **error_string);
int sfsgetpathnames(int arbiter_id,
char *smpname, char *sfsname, char *mntname);
int sfsgetarbiterid(char *arbiter_name);
int fsgetsuper(int sfd, char *fname, struct nc1filsys *sb,
struct nc1dblock *db, uint flags, int *ret_iou);
int get_fs_sema(struct nc1filsys *sb);
int print_shared_mount_table(char *arbiter_list);
int sfsaddmntent(struct mntent *newmnt, struct nc1filsys *sb);
int sfschkmntent(struct mntent *newmnt, struct nc1filsys *sb);
int sfsdeletemntent(struct mntent *mnt_to_delete, int port);
#endif /* KERNEL */
#endif /* __C1SYS_FS_NC1FILSYS_H_ */</textarea></div>
<div class="crayon-main" style="">
<table class="crayon-table">
<tr class="crayon-row">
<td class="crayon-nums " data-settings="show">
<div class="crayon-nums-content" style="font-size: 12px !important; line-height: 15px !important;"><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-1">1</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-2">2</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-3">3</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-4">4</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-5">5</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-6">6</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-7">7</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-8">8</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-9">9</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-10">10</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-11">11</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-12">12</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-13">13</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-14">14</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-15">15</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-16">16</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-17">17</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-18">18</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-19">19</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-20">20</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-21">21</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-22">22</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-23">23</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-24">24</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-25">25</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-26">26</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-27">27</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-28">28</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-29">29</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-30">30</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-31">31</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-32">32</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-33">33</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-34">34</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-35">35</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-36">36</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-37">37</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-38">38</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-39">39</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-40">40</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-41">41</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-42">42</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-43">43</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-44">44</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-45">45</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-46">46</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-47">47</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-48">48</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-49">49</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-50">50</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-51">51</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-52">52</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-53">53</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-54">54</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-55">55</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-56">56</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-57">57</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-58">58</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-59">59</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-60">60</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-61">61</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-62">62</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-63">63</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-64">64</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-65">65</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-66">66</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-67">67</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-68">68</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-69">69</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-70">70</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-71">71</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-72">72</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-73">73</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-74">74</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-75">75</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-76">76</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-77">77</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-78">78</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-79">79</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-80">80</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-81">81</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-82">82</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-83">83</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-84">84</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-85">85</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-86">86</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-87">87</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-88">88</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-89">89</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-90">90</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-91">91</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-92">92</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-93">93</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-94">94</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-95">95</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-96">96</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-97">97</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-98">98</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-99">99</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-100">100</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-101">101</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-102">102</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-103">103</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-104">104</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-105">105</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-106">106</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-107">107</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-108">108</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-109">109</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-110">110</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-111">111</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-112">112</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-113">113</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-114">114</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-115">115</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-116">116</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-117">117</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-118">118</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-119">119</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-120">120</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-121">121</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-122">122</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-123">123</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-124">124</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-125">125</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-126">126</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-127">127</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-128">128</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-129">129</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-130">130</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-131">131</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-132">132</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-133">133</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-134">134</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-135">135</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-136">136</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-137">137</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-138">138</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-139">139</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-140">140</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-141">141</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-142">142</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-143">143</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-144">144</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-145">145</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-146">146</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-147">147</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-148">148</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-149">149</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-150">150</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-151">151</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-152">152</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-153">153</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-154">154</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-155">155</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-156">156</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-157">157</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-158">158</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-159">159</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-160">160</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-161">161</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-162">162</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-163">163</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-164">164</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-165">165</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-166">166</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-167">167</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-168">168</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-169">169</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-170">170</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-171">171</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-172">172</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-173">173</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-174">174</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-175">175</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-176">176</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-177">177</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-178">178</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-179">179</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-180">180</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-181">181</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-182">182</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-183">183</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-184">184</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-185">185</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-186">186</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-187">187</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-188">188</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-189">189</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-190">190</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-191">191</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-192">192</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-193">193</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-194">194</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-195">195</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-196">196</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-197">197</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-198">198</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-199">199</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-200">200</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-201">201</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-202">202</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-203">203</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-204">204</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-205">205</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-206">206</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-207">207</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-208">208</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-209">209</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-210">210</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-211">211</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-212">212</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-213">213</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-214">214</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-215">215</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-216">216</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-217">217</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-218">218</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-219">219</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-220">220</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-221">221</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-222">222</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-223">223</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-224">224</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-225">225</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-226">226</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-227">227</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-228">228</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-229">229</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-230">230</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-231">231</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-232">232</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-233">233</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-234">234</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-235">235</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-236">236</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-237">237</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-238">238</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-239">239</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-240">240</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-241">241</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-242">242</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-243">243</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-244">244</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-245">245</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-246">246</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-247">247</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-248">248</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-249">249</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-250">250</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-251">251</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-252">252</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-253">253</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-254">254</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-255">255</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-256">256</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-257">257</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-258">258</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-259">259</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-260">260</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-261">261</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-262">262</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-263">263</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-264">264</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-265">265</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-266">266</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-267">267</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-268">268</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-269">269</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-270">270</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-271">271</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-272">272</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-273">273</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-274">274</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-275">275</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-276">276</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-277">277</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-278">278</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-279">279</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-280">280</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-281">281</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-282">282</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-283">283</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-284">284</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-285">285</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-286">286</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-287">287</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-288">288</div><div class="crayon-num" data-line="crayon-598a6a3599ce8461941656-289">289</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599ce8461941656-290">290</div></div>
</td>
<td class="crayon-code"><div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="crayon-598a6a3599ce8461941656-1"><span class="crayon-c">/* USMID @(#)uts/c1/sys/fs/nc1filsys.h 100.1 04/16/98 12:47:39 */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-2">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-3"><span class="crayon-c">/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COPYRIGHT CRAY RESEARCH, INC.</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-4"><span class="crayon-c"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UNPUBLISHED -- ALL RIGHTS RESERVED UNDER</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-5"><span class="crayon-c"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;THE COPYRIGHT LAWS OF THE UNITED STATES.</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-6"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-7">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-8"><span class="crayon-p">#ifndef __C1SYS_FS_NC1FILSYS_H_</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-9"><span class="crayon-p">#define __C1SYS_FS_NC1FILSYS_H_</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-10">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-11"><span class="crayon-c">/*</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-12"><span class="crayon-c"> * NC1 File system structures and definitions</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-13"><span class="crayon-c"> */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-14">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-15">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-16"><span class="crayon-c">/*</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-17"><span class="crayon-c"> * Inode region descriptor.</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-18"><span class="crayon-c"> * The first block of an inode region is a</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-19"><span class="crayon-c"> * bit map for the inodes in that region.</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-20"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-21">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-22"><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">nc1ireg_sb</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-23"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">i_unused</span><span class="crayon-o">:</span><span class="crayon-cn">16</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* reserved */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-24"><span class="crayon-h"> </span><span class="crayon-v">i_nblk</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-cn">16</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* number of blocks */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-25"><span class="crayon-h"> </span><span class="crayon-v">i_sblk</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-cn">32</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* start block number */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-26"><span class="crayon-sy">}</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-27">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-28"><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">nc1ireg_db</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-29"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">i_avail</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* number of available inodes */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-30"><span class="crayon-sy">}</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-31"><span class="crayon-p">#define NC1MAXIREG 4 /* Maximum inode regions per partition */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-32"><span class="crayon-p">#define NC1IMAPBLKS 1 /* number of blocks in inode map */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-33">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-34"><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">nc1fdev_sb</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-35"><span class="crayon-sy">{</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-36"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">fd_name</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Physical device name */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-37"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">fd_sblk</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-cn">32</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Start block number */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-38"><span class="crayon-h"> </span><span class="crayon-v">fd_nblk</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-cn">32</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Number of blocks */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-39"><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">nc1ireg_sb&nbsp;&nbsp;</span><span class="crayon-v">fd_ireg</span><span class="crayon-sy">[</span><span class="crayon-v">NC1MAXIREG</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Inode regions */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-40"><span class="crayon-sy">}</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-41">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-42"><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">nc1fdev_db</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-43"><span class="crayon-sy">{</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-44"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">fd_flag</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* flag word */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-45"><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">nc1ireg_db&nbsp;&nbsp;</span><span class="crayon-v">fd_ireg</span><span class="crayon-sy">[</span><span class="crayon-v">NC1MAXIREG</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Inode regions */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-46"><span class="crayon-sy">}</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-47">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-48">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-49"><span class="crayon-p">#define FDNC1_DOWN 1 /* Slice is not available */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-50"><span class="crayon-p">#define FDNC1_RDONLY 2 /* Slice is read only */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-51"><span class="crayon-p">#define FDNC1_NOALLOC 4 /* Slice is not available for allocation */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-52"><span class="crayon-p">#define FDNC1_SBDB 010 /* Slice has valid FS tables */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-53"><span class="crayon-p">#define FDNC1_RTDIR 020 /* Slice has valid ROOT Inode and directory */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-54"><span class="crayon-p">#define FDNC1_SECALL 0100 /* Slice sector allocated */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-55">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-56"><span class="crayon-p">#define NC1MAXPART 64 /* Maximum number of partitions */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-57">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-58">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-59"><span class="crayon-c">/*</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-60"><span class="crayon-c"> * Structure of the super-block</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-61"><span class="crayon-c"> */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-62">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-63"><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">nc1filsys</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-64"><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-65"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_magic</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* magic number to indicate file system type */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-66"><span class="crayon-h"> </span><span class="crayon-t">char</span><span class="crayon-h"> </span><span class="crayon-v">s_fname</span><span class="crayon-sy">[</span><span class="crayon-cn">8</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* file system name */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-67"><span class="crayon-h"> </span><span class="crayon-t">char</span><span class="crayon-h"> </span><span class="crayon-v">s_fpack</span><span class="crayon-sy">[</span><span class="crayon-cn">8</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* file system pack name */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-68"><span class="crayon-h"> </span><span class="crayon-e">dev_t </span><span class="crayon-v">s_dev</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* major/minor device, for verification */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-69">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-70"><span class="crayon-h"> </span><span class="crayon-e">daddr_t </span><span class="crayon-v">s_fsize</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* size in blocks of entire volume */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-71"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">s_isize</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Number of total inodes */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-72"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_bigfile</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* number of bytes at which a file is big */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-73"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_bigunit</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* minimum number of blocks allocated for</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-74"><span class="crayon-c"> &nbsp;&nbsp; big files */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-75"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_secure</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* security: secure FS label */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-76"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">s_maxlvl</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* security: maximum security level */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-77"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">s_minlvl</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* security: minimum security level */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-78"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_valcmp</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* security: valid security compartments */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-79"><span class="crayon-h"> </span><span class="crayon-e">time_t </span><span class="crayon-v">s_time</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* last super block update */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-80"><span class="crayon-h"> </span><span class="crayon-e">blkno_t </span><span class="crayon-v">s_dboff</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Dynamic block number */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-81"><span class="crayon-h"> </span><span class="crayon-e">ino_t </span><span class="crayon-v">s_root</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* root inode */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-82"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">s_error</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Type of file system error detected */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-83"><span class="crayon-h"> </span><span class="crayon-e">blkno_t </span><span class="crayon-v">s_mapoff</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Start map block number */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-84"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">s_mapblks</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Last map block number */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-85"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">s_nscpys</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Number of copies of s.b per partition */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-86"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">s_npart</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Number of partitions */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-87"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">s_ifract</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Ratio of inodes to blocks */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-88"><span class="crayon-h"> </span><span class="crayon-e">extent_t </span><span class="crayon-v">s_sfs</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* SFS only blocks */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-89"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-v">s_flag</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Flag word */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-90">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-91"><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">nc1fdev_sb </span><span class="crayon-v">s_part</span><span class="crayon-sy">[</span><span class="crayon-v">NC1MAXPART</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-c">/* Partition descriptors */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-92"><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-t">int</span><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-v">s_iounit</span><span class="crayon-sy">;</span><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-c">/* Physical block size */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-93"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_numiresblks</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* number of inode reservation blocks */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-94"><span class="crayon-h"> </span><span class="crayon-c">/* per region (currently 1) */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-95"><span class="crayon-h"> </span><span class="crayon-c">/* 0 = 1*(AU) words, n = (n+1)*(AU) words */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-96"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_priparts</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* bitmap of primary partitions */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-97"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_priblock</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* block size of primary partition(s) */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-98"><span class="crayon-h"> </span><span class="crayon-c">/* 0 = 1*512 words, n = (n+1)*512 words */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-99"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_prinblks</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* number of 512 wds blocks in primary */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-100"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_secparts</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* bitmap of secondary partitions */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-101"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_secblock</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* block size of secondary partition(s) */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-102"><span class="crayon-h"> </span><span class="crayon-c">/* 0 = 1*512 words, n = (n+1)*512 words */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-103"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_secnblks</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* number of 512 wds blocks in secondary */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-104"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_sbdbparts</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* bitmap of partitions with file system data */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-105"><span class="crayon-h"> </span><span class="crayon-c">/* including super blocks, dynamic block */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-106"><span class="crayon-h"> </span><span class="crayon-c">/* and free block bitmaps (only primary */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-107"><span class="crayon-h"> </span><span class="crayon-c">/* partitions may contain these) */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-108"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_rootdparts</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* bitmap of partitions with root directory */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-109"><span class="crayon-h"> </span><span class="crayon-c">/* (only primary partitions) */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-110"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_nudparts</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* bitmap of no-user-data partitions */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-111"><span class="crayon-h"> </span><span class="crayon-c">/* (only primary partitions) */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-112"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_nsema</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* SFS: # fs semaphores to allocate */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-113"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_priactive</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* bitmap of primary partitions which contain */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-114"><span class="crayon-h"> </span><span class="crayon-c">/* active (up to date) dynamic blocks and */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-115"><span class="crayon-h"> </span><span class="crayon-c">/* free block bitmaps. All bits set indicate */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-116"><span class="crayon-h"> </span><span class="crayon-c">/* that all primary partitions are active, */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-117"><span class="crayon-h"> </span><span class="crayon-c">/* and no kernel manipulation of active flag */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-118"><span class="crayon-h"> </span><span class="crayon-c">/* is allowed. */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-119"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">s_sfs_arbiterid</span><span class="crayon-sy">;</span><span class="crayon-c">/* SFS Arbiter ID */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-120"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">s_fill</span><span class="crayon-sy">[</span><span class="crayon-cn">91</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* reserved */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-121"><span class="crayon-sy">}</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-122">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-123"><span class="crayon-p">#define NC1NSUPER 10 /* Copies of s.b. per partition */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-124"><span class="crayon-p">#define NC1MINPARTSZ (6+NC1NSUPER) /* Minimum blocks per partition */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-125"><span class="crayon-p">#define NC1MAXACTIVEPARTS 4 /* Max. number of primary partitions */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-126"><span class="crayon-h"> </span><span class="crayon-c">/* maintained as up to date */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-127">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-128"><span class="crayon-p">#define FsMAGIC_NC1 0x6e6331667331636e /* s_magic number */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-129">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-130"><span class="crayon-p">#define FsSECURE 0xcd076d1771d670cd /* s_secure: secure file system */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-131">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-132"><span class="crayon-c">/*</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-133"><span class="crayon-c"> * Filesystem errors</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-134"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-135"><span class="crayon-p">#define Fs_SUPER 1 /* Bad super block encountered */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-136"><span class="crayon-p">#define Fs_DYNAMIC 2 /* Bad dynamic block encountered */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-137"><span class="crayon-p">#define Fs_SHARED 3 /* Bad shared block encountered */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-138"><span class="crayon-p">#define Fs_MAP 4 /* Bad map block encountered */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-139"><span class="crayon-p">#define Fs_SFS_SYSDOWN 5 /* SFS System Active sema cleared */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-140">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-141"><span class="crayon-c">/*</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-142"><span class="crayon-c"> * Filesystem super block flags</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-143"><span class="crayon-c"> * (For mostly historical reasons nearly all of the flags defined here,</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-144"><span class="crayon-c"> *&nbsp;&nbsp;and later for dynamic block usage, are mutually exclusive.</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-145"><span class="crayon-c"> *&nbsp;&nbsp;This practice dates back to before the time when the super block</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-146"><span class="crayon-c"> *&nbsp;&nbsp;and dynamic block were separated.)</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-147"><span class="crayon-c"> *&nbsp;&nbsp;Many of the bit combinations that aren't apparently `available' have</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-148"><span class="crayon-c"> *&nbsp;&nbsp;probably been moved to m_fsflag in the mount table.</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-149"><span class="crayon-c"> *&nbsp;&nbsp;As these flags get separated into different data structures, the</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-150"><span class="crayon-c"> *&nbsp;&nbsp;need &amp;/or desire to retain their old bit notations rapidly decreases.</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-151"><span class="crayon-c"> *&nbsp;&nbsp;The flags that remain in the super block, or dynamic block, must stay</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-152"><span class="crayon-c"> *&nbsp;&nbsp;in the current form, as these flags are carried on-media, and become</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-153"><span class="crayon-c"> *&nbsp;&nbsp;a matter of file system compatibility.</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-154"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-155"><span class="crayon-p">#define Fs_PANIC 0000000001 /* not used */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-156"><span class="crayon-p">#define Fs_RRFILE 0000000002 /* Round robin file allocation */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-157"><span class="crayon-p">#define Fs_RRALLDIR 0000000004 /* Round robin all directories */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-158"><span class="crayon-p">#define Fs_RR1STDIR 0000000010 /* Round robin 1st level directories */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-159"><span class="crayon-c">/* Fs_CHECKED 0000000040 &nbsp;&nbsp; Flag used in the Dynamic Blk */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-160"><span class="crayon-c">/* Fs_MOUNTED 0000000100 &nbsp;&nbsp; Flag used in the Dynamic Blk */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-161"><span class="crayon-p">#define Fs_UPDATE 0000001000 /* File system update in progress */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-162"><span class="crayon-p">#define Fs_WUPDAT 0000002000 /* File system wakeup after update */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-163"><span class="crayon-p">#define Fs_RRALLUDATA 0000020000 /* Round robin all user file data */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-164"><span class="crayon-p">#define Fs_NOIPREF 0000040000 /* Inode alloc. preference disabled */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-165"><span class="crayon-p">#define Fs_PANICLESS 0000100000 /* Attempt to continue on error */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-166"><span class="crayon-p">#define Fs_SCRUB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0000200000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* Enable/Disable filesystem scrub */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-167"><span class="crayon-p">#define Fs_SFS 0010000000 /* Shared File system */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-168"><span class="crayon-p">#define Fs_TESTCOND1 0100000000 /* Test condition #1 */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-169"><span class="crayon-p">#define Fs_TESTCOND2 0200000000 /* Test condition #2 */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-170"><span class="crayon-p">#define Fs_TESTCOND3 0400000000 /* Test condition #3 */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-171">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-172"><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">nc1dblock</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-173"><span class="crayon-sy">{</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-174"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">db_magic</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* magic number to indicate file system type */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-175"><span class="crayon-h"> </span><span class="crayon-e">daddr_t </span><span class="crayon-v">db_tfree</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* total available blocks */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-176"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">db_ifree</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* total free inodes */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-177"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">db_ninode</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* total allocated inodes */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-178"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">db_state</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* file system state */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-179"><span class="crayon-h"> </span><span class="crayon-e">time_t </span><span class="crayon-v">db_time</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* last dynamic block update */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-180"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">db_type</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* type of new file system */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-181"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">db_spart</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Partition from which system mounted */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-182"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">db_ifptr</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Inode allocation pointer */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-183"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">db_actype</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* device accounting type (for billing) */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-184"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-v">db_flag</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Flag word */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-185"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">db_res1</span><span class="crayon-sy">[</span><span class="crayon-cn">10</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* reserved */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-186">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-187"><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">nc1fdev_db </span><span class="crayon-v">db_part</span><span class="crayon-sy">[</span><span class="crayon-v">NC1MAXPART</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-c">/* Partition descriptors */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-188"><span class="crayon-h"> </span><span class="crayon-e">lockinfo_t&nbsp;&nbsp;</span><span class="crayon-v">db_lockinf</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* proc of the process locking the filesystem */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-189"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">db_dpfptr</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* primary partitions allocation pointer */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-190"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">db_dsfptr</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* secondary partitions allocation pointer */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-191"><span class="crayon-h"> </span><span class="crayon-e">daddr_t </span><span class="crayon-v">db_sfree</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* secondary parts free blocks */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-192"><span class="crayon-h"> </span><span class="crayon-t">union</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-193"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">db_fpmapfil</span><span class="crayon-sy">[</span><span class="crayon-cn">16</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-194"><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">map </span><span class="crayon-v">db_fpm</span><span class="crayon-sy">;</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-c">/* Free blk map hdr - primary part.&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-195"><span class="crayon-h"> </span><span class="crayon-sy">}</span><span class="crayon-h"> </span><span class="crayon-v">db_fpmap_u</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-196"><span class="crayon-h"> </span><span class="crayon-t">union</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-197"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">db_fsmapfil</span><span class="crayon-sy">[</span><span class="crayon-cn">16</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-198"><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">map </span><span class="crayon-v">db_fsm</span><span class="crayon-sy">;</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-c">/* Free blk map hdr - secondary part. */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-199"><span class="crayon-h"> </span><span class="crayon-sy">}</span><span class="crayon-h"> </span><span class="crayon-v">db_fsmap_u</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-200"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">db_fill</span><span class="crayon-sy">[</span><span class="crayon-cn">133</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* reserved */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-201"><span class="crayon-sy">}</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-202"><span class="crayon-p">#define db_fpmap db_fpmap_u.db_fpm</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-203"><span class="crayon-p">#define db_fsmap db_fsmap_u.db_fsm</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-204">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-205"><span class="crayon-p">#define db_fptr db_ifptr</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-206"><span class="crayon-p">#define db_fmap db_fpmap</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-207">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-208"><span class="crayon-p">#define DbMAGIC_NC1 0x6e6331646231636e /* db_magic number */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-209">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-210"><span class="crayon-c">/*</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-211"><span class="crayon-c"> * Filesystem dynamic block flags</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-212"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-213"><span class="crayon-p">#define Fs_CHECKED 0000000040 /* File system checked */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-214"><span class="crayon-p">#define Fs_MOUNTED 0000000100 /* File system mounted */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-215">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-216"><span class="crayon-c">/*</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-217"><span class="crayon-c"> * Macros that result an a pointer to a file system Mount structure</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-218"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-219"><span class="crayon-p">#define VFS_TO_MP(vfsp) \</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-220"><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">mount</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-sy">)</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">vfsp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">vfs_data</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-221">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-222"><span class="crayon-p">#define VP_TO_MP(vp) \</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-223"><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">mount</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-sy">)</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">vp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">v_vfsp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">vfs_data</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-224">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-225">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-226"><span class="crayon-c">/*</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-227"><span class="crayon-c"> * Macros that result an a pointer to a file system Super Block</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-228"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-229"><span class="crayon-p">#define MP_TO_NC1SB(mp) \</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-230"><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">nc1filsys</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-sy">)</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">mp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">m_bufp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">b_waddr</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-231">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-232"><span class="crayon-p">#define VFS_TO_NC1SB(vfsp) \</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-233"><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">nc1filsys</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-sy">)</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-e">VFS_TO_MP</span><span class="crayon-sy">(</span><span class="crayon-v">vfsp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">m_bufp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">b_waddr</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-234">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-235"><span class="crayon-p">#define VP_TO_NC1SB(vp) \</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-236"><span class="crayon-h"> &nbsp;&nbsp; </span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">nc1filsys</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-sy">)</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-e">VP_TO_MP</span><span class="crayon-sy">(</span><span class="crayon-v">vp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">m_bufp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">b_waddr</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-237">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-238">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-239"><span class="crayon-c">/*</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-240"><span class="crayon-c"> * Macros that result an a pointer to a file system Dynamic Block</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-241"><span class="crayon-c"> */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-242"><span class="crayon-p">#define MP_TO_NC1DB(mp) \</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-243"><span class="crayon-h"> &nbsp;&nbsp; </span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">nc1dblock</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-sy">)</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">mp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">m_dbufp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">b_waddr</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-244">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-245"><span class="crayon-p">#define VFS_TO_NC1DB(vfsp) \</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-246"><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">nc1dblock</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-sy">)</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-e">VFS_TO_MP</span><span class="crayon-sy">(</span><span class="crayon-v">vfsp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">m_dbufp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">b_waddr</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-247">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-248"><span class="crayon-p">#define VP_TO_NC1DB(vp) \</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-249"><span class="crayon-h"> &nbsp;&nbsp; </span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">nc1dblock</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-sy">)</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-e">VP_TO_MP</span><span class="crayon-sy">(</span><span class="crayon-v">vp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">m_dbufp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">b_waddr</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-250">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-251">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-252"><span class="crayon-c">/*</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-253"><span class="crayon-c"> * Macros that result an a pointer to a file system SFS Control Block</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-254"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-255"><span class="crayon-p">#define MP_TO_NC1SFSB(mp) \</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-256"><span class="crayon-h"> &nbsp;&nbsp; </span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">sfsdblk</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-sy">)</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">mp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">m_sfsbufp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">b_waddr</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-257">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-258"><span class="crayon-p">#define VFS_TO_NC1SFSB(vfsp) \</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-259"><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">sfsdblk</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-sy">)</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-e">VFS_TO_MP</span><span class="crayon-sy">(</span><span class="crayon-v">vfsp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">m_sfsbufp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">b_waddr</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-260">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-261"><span class="crayon-p">#define VP_TO_NC1SFSB(vp) \</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-262"><span class="crayon-h"> &nbsp;&nbsp; </span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">sfsdblk</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-sy">)</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-e">VP_TO_MP</span><span class="crayon-sy">(</span><span class="crayon-v">vp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">m_sfsbufp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">b_waddr</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-263">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-264">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-265"><span class="crayon-p">#ifndef KERNEL</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-266">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-267"><span class="crayon-c">/*</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-268"><span class="crayon-c"> * Bit-position flags for fsgetsuper() flags argument.</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-269"><span class="crayon-c"> */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-270"><span class="crayon-p">#define FSGETSUPER_USEFIRST 0001</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-271"><span class="crayon-p">#define FSGETSUPER_NOERRORS 0002</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-272">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-273"><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">mntent</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-274">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-275"><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-e">ismounted</span><span class="crayon-sy">(</span><span class="crayon-t">char</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">special</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">.</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-276"><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-e">issfscapable</span><span class="crayon-sy">(</span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">port_num</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-t">char</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-o">*</span><span class="crayon-v">error_string</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-277"><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-e">sfsgetpathnames</span><span class="crayon-sy">(</span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">arbiter_id</span><span class="crayon-sy">,</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-278"><span class="crayon-h"> &nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-t">char</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">smpname</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-t">char</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">sfsname</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-t">char</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">mntname</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-279"><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-e">sfsgetarbiterid</span><span class="crayon-sy">(</span><span class="crayon-t">char</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">arbiter_name</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-280"><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-e">fsgetsuper</span><span class="crayon-sy">(</span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">sfd</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-t">char</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">fname</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">nc1filsys</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">sb</span><span class="crayon-sy">,</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-281"><span class="crayon-h"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">nc1dblock</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">db</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">flags</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">ret_iou</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-282"><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-e">get_fs_sema</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">nc1filsys</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">sb</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-283"><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-e">print_shared_mount_table</span><span class="crayon-sy">(</span><span class="crayon-t">char</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">arbiter_list</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-284"><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-e">sfsaddmntent</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">mntent</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">newmnt</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">nc1filsys</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">sb</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-285"><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-e">sfschkmntent</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">mntent</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">newmnt</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">nc1filsys</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">sb</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-286"><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-e">sfsdeletemntent</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">mntent</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">mnt_to_delete</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">port</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-287">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-288"><span class="crayon-p">#endif /* KERNEL */</span></div><div class="crayon-line" id="crayon-598a6a3599ce8461941656-289">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599ce8461941656-290"><span class="crayon-p">#endif /* __C1SYS_FS_NC1FILSYS_H_ */</span></div></div></td>
</tr>
</table>
</div>
</div>
<!-- [Format Time: 0.0183 seconds] -->
<p></p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->
<div id="crayon-598a6a3599cfe133896668" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
<div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><span class="crayon-title">nc1ino.h</span>
<div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><div class="crayon-button crayon-nums-button" title="Toggle Line Numbers"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-plain-button" title="Toggle Plain Code"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-wrap-button" title="Toggle Line Wrap"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-expand-button" title="Expand Code"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-copy-button" title="Copy"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-popup-button" title="Open Code In New Window"><div class="crayon-button-icon"></div></div><span class="crayon-language">C</span></div></div>
<div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;"></div>
<div class="crayon-plain-wrap"><textarea wrap="soft" class="crayon-plain print-no" data-settings="dblclick" readonly style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;">
/* USMID @(#)uts/c1/sys/fs/nc1ino.h 100.1 04/16/98 12:47:40 */
/* COPYRIGHT CRAY RESEARCH, INC.
* UNPUBLISHED -- ALL RIGHTS RESERVED UNDER
* THE COPYRIGHT LAWS OF THE UNITED STATES.
*/
#ifndef __C1SYS_FS_NC1INO_H_
#define __C1SYS_FS_NC1INO_H_
#include &lt;sys/fs/sfsconsts.h&gt;
/*
* Typedefs used by the filesystem dependent code
*/
typedef struct {
uint iaf : 1;
uint : 15;
dev_t dev : 16;
blkno_t blk : 32;
} dblk_t;
typedef struct {
int nblks : 32;
blkno_t blk : 32;
} extent_t;
/*
* On-disk inode structure as it appears on the NC1FS &amp; NC2FS filesystems
*/
struct cdinode {
uint cdi_rsrvd_1 : 8, /* Reserved for expansion of cdi_mode */
cdi_mode :24, /* mode and type of file (4-bits still free)*/
cdi_msref : 1, /* Modification signature is referenced flag*/
cdi_ms :14, /* Modification signature */
cdi_nlink :17; /* #of links to file (can hold &gt; 100,000) */
uint cdi_rsrvd_2 : 8, /* Reserved for expansion of cdi_uid */
cdi_uid :24, /* Owner's user-ID */
cdi_rsrvd_3 : 8, /* Reserved for expansion of cdi_gid */
cdi_gid :24; /* Owner's group-ID */
uint cdi_rsrvd_4 : 8, /* Reserved for expansion of cdi_acid */
cdi_acid :24, /* Account-ID */
cdi_gen :32; /* Inode generation number */
long cdi_size; /* Number of bytes in the file */
long cdi_moffset; /* Modification offset for current signature*/
uint cdi_blocks :52, /* Quotas: #of blocks actually allocated */
cdi_extcomp : 1, /* Security: extended compartments flag */
cdi_secrsvd1:11; /* Security: reserved */
union {
long smallcmps; /* Compartments if [0..63] */
} cdi_compart; /* Security: compartments info */
uint cdi_slevel : 8, /* Security: security level */
cdi_intcls : 8, /* Security: integrity class */
cdi_secflg :16, /* Security: flag settings */
cdi_intcat :32; /* Security: integrity category */
union {
daddr_t daddr; /* Extent descriptor */
dblk_t dblk; /* Block descriptor */
} cdi_privs; /* Privilege Assignment List location */
union {
daddr_t daddr; /* Extent descriptor */
dblk_t dblk; /* Block descriptor */
} cdi_acl; /* Security: ACL location */
uint cdi_cpart : 8, /* Next partition from cbits to use */
cdi_dmport : 3, /* DMF daemon number */
cdi_dmstate : 5, /* DMF file state */
cdi_dmkey :48; /* Data-Migration: key */
uint cdi_allocf : 4, /* Data-Block allocation flags */
cdi_alloc : 4, /* Data-Block allocation technique */
cdi_cblks :24, /* Number of blocks to allocate per part */
cdi_dmmid :32; /* Data-Migration: machine-ID */
uint cdi_atmsec :34, /* Access time (secs) */
cdi_uatmsec :30; /* Access time (microsecs) */
uint cdi_mtmsec :34, /* Modification time (secs) */
cdi_umtmsec :30; /* Modification time (microsecs) */
uint cdi_ctmsec :34, /* Time of last inode modification (secs) */
cdi_uctmsec :30; /* Time of last inode modification (microsecs)*/
long cdi_cbits; /* bit mask, file placement within cluster */
union {
daddr_t daddr; /* Extent descriptor */
dblk_t dblk; /* Block descriptor */
long whole;
struct {
uint one :32, /* half 1 */
two :32; /* half 2 */
} half;
struct {
uint one :16, /* quarter 1 */
two :16, /* quarter 2 */
three :16, /* quarter 3 */
four :16; /* quarter 4 */
} quarter;
struct {
uint one : 8, /* eighth 1 */
two : 8, /* eighth 2 */
three : 8, /* eighth 3 */
four : 8, /* eighth 4 */
five : 8, /* eighth 5 */
six : 8, /* eighth 6 */
seven : 8, /* eighth 7 */
eight : 8; /* eighth 8 */
} eighth;
} cdi_addr[8]; /* File allocation locators */
/* The #define for NC1NADDR must not be &gt; 8 */
long cdi_slock[SFSLK_SZ]; /* Reserved for SFS lock structure */
uint cdi_rsrvd_5 : 16, /* Reserved for Kernel group for expansion */
cdi_applac : 32, /* Application accounting tag */
cdi_nindir : 16; /* # of indirect extent blocks */
long cdi_rsrvd; /* Reserved by the Kernel group for use in */
/* future releases of UNICOS. */
/* No notification will be given when these */
/* words will be employed by future versions */
/* of UNICOS. */
long cdi_sitebits; /* Word reserved for site use. */
};
/* NOTE: Reserved fields in the cdinode structure will be preserved
* when an inode is updated. They will be cleared when an inode is
* newly allocated.
*/
#define NC1INOPB 16
/*
* struct cdinode cdi_addr defines
*
* For IFCHR &amp; IFBLK devices, the cdi_addr words are used to hold
* special security and configuration information, as well as
* the device's rdev field.
*/
#define cdi_rdev cdi_addr[0].half.one /* IFCHR or IFBLK rdev */
/* cdi_addr[0].half.two Reserved */
/* Security fields related to devices */
#define cdi_minlvl cdi_addr[1].eighth.one /* minimum level */
#define cdi_maxlvl cdi_addr[1].eighth.two /* maximum level */
/* cdi_addr[1].quarter.two Reserved */
/* cdi_addr[1].half.two Reserved */
#define cdi_valcmp cdi_addr[2].whole /* valid compartments */
/* cdi_addr[3].whole Reserved */
/* Configuration related device parameters */
#define cdi_param0 cdi_addr[4].half.one
#define cdi_param1 cdi_addr[4].half.two
#define cdi_param2 cdi_addr[5].half.one
#define cdi_param3 cdi_addr[5].half.two
#define cdi_param4 cdi_addr[6].half.one
#define cdi_param5 cdi_addr[6].half.two
#define cdi_param6 cdi_addr[7].half.one
#define cdi_param7 cdi_addr[7].half.two
#define cdi_filename cdi_addr[5].whole /* Filename of logical */
/*
* The i_number in the NC1FS is made up of three elements,
* the partition number, the inode region number and the
* inode region relative inode number. The maximum size of
* each of these fields was selected for potential expansion
* at a later date. The current composition of the i_number
* is:
* 32/ 0, 8/ Partition, 4/ Iregion, 20/relative inum
*/
#define nc1ino_rinum(x) (int) ((x)&amp;((1&lt;&lt;20)-1))
#define nc1ino_ireg(x) (int) (((x)&gt;&gt;20)&amp;017)
#define nc1ino_part(x) (int) (((x)&gt;&gt;24)&amp;0377)
#define makenc1ino(p,r,i) (ino_t)((long) (p)&lt;&lt;24 | (long) (r)&lt;&lt;20 | (i))
/*
* NC1FS i_number to disk block (inode region relative) and offset
*/
#define nc1itodf(fp,i) (fp-&gt;s_part[nc1ino_part(i)].fd_ireg[nc1ino_ireg(i)]\
.i_sblk+nc1itod(i)+nc1imapblks(fp))
#define nc1itod(i) (nc1ino_rinum(i) / NC1INOPB)
#define nc1itoo(i) ((nc1ino_rinum(i) % NC1INOPB) * sizeof(struct cdinode))
#define nc1itos(i, iou) ( (iou) &gt; 1 ? (nc1itod(i) / (iou)) : nc1itod(i) )
#define nc1imapblks(fp) ((fp-&gt;s_priblock+1)*(fp-&gt;s_numiresblks+1))
/*
* Allocation types used in cdi_alloc.
*/
#define C1_EXTENT 1 /* Cray-1, X/YMP extent-based allocation */
#define C2_TRACK 2 /* Cray-2 sector/track block-style allocation */
/*
* Allocation flags used in cdi_allocf.
*/
#define CDI_ALF_NOGRW 001 /* Allocation is not allowed to grow */
#define CDI_ALF_PARTR 002 /* Allocation of partition type only */
#define CDI_ALF_RES1 004 /* unused */
#define CDI_ALF_RES2 010 /* unused */
struct nc1bmap_pos {
struct inode *nc1p; /* inode address */
daddr_t indblk; /* indirect block number (or 0) */
int exntni; /* extent index of current pos */
int curblk; /* logical block number not */
/* including blocks at current pos */
};
#endif /* __C1SYS_FS_NC1INO_H_ */</textarea></div>
<div class="crayon-main" style="">
<table class="crayon-table">
<tr class="crayon-row">
<td class="crayon-nums " data-settings="show">
<div class="crayon-nums-content" style="font-size: 12px !important; line-height: 15px !important;"><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-1">1</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-2">2</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-3">3</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-4">4</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-5">5</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-6">6</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-7">7</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-8">8</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-9">9</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-10">10</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-11">11</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-12">12</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-13">13</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-14">14</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-15">15</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-16">16</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-17">17</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-18">18</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-19">19</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-20">20</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-21">21</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-22">22</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-23">23</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-24">24</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-25">25</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-26">26</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-27">27</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-28">28</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-29">29</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-30">30</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-31">31</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-32">32</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-33">33</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-34">34</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-35">35</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-36">36</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-37">37</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-38">38</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-39">39</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-40">40</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-41">41</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-42">42</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-43">43</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-44">44</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-45">45</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-46">46</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-47">47</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-48">48</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-49">49</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-50">50</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-51">51</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-52">52</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-53">53</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-54">54</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-55">55</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-56">56</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-57">57</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-58">58</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-59">59</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-60">60</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-61">61</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-62">62</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-63">63</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-64">64</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-65">65</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-66">66</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-67">67</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-68">68</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-69">69</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-70">70</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-71">71</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-72">72</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-73">73</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-74">74</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-75">75</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-76">76</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-77">77</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-78">78</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-79">79</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-80">80</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-81">81</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-82">82</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-83">83</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-84">84</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-85">85</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-86">86</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-87">87</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-88">88</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-89">89</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-90">90</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-91">91</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-92">92</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-93">93</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-94">94</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-95">95</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-96">96</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-97">97</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-98">98</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-99">99</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-100">100</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-101">101</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-102">102</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-103">103</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-104">104</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-105">105</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-106">106</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-107">107</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-108">108</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-109">109</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-110">110</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-111">111</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-112">112</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-113">113</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-114">114</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-115">115</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-116">116</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-117">117</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-118">118</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-119">119</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-120">120</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-121">121</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-122">122</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-123">123</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-124">124</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-125">125</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-126">126</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-127">127</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-128">128</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-129">129</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-130">130</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-131">131</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-132">132</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-133">133</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-134">134</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-135">135</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-136">136</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-137">137</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-138">138</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-139">139</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-140">140</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-141">141</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-142">142</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-143">143</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-144">144</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-145">145</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-146">146</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-147">147</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-148">148</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-149">149</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-150">150</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-151">151</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-152">152</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-153">153</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-154">154</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-155">155</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-156">156</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-157">157</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-158">158</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-159">159</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-160">160</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-161">161</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-162">162</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-163">163</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-164">164</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-165">165</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-166">166</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-167">167</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-168">168</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-169">169</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-170">170</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-171">171</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-172">172</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-173">173</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-174">174</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-175">175</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-176">176</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-177">177</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-178">178</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-179">179</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-180">180</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-181">181</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-182">182</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-183">183</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-184">184</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-185">185</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-186">186</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-187">187</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-188">188</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-189">189</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-190">190</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-191">191</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-192">192</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-193">193</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-194">194</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-195">195</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-196">196</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-197">197</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-198">198</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-199">199</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-200">200</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-201">201</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-202">202</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-203">203</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-204">204</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-205">205</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-206">206</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-207">207</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-208">208</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-209">209</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-210">210</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-211">211</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-212">212</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-213">213</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-214">214</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-215">215</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-216">216</div><div class="crayon-num" data-line="crayon-598a6a3599cfe133896668-217">217</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599cfe133896668-218">218</div></div>
</td>
<td class="crayon-code"><div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="crayon-598a6a3599cfe133896668-1"><span class="crayon-c">/* USMID @(#)uts/c1/sys/fs/nc1ino.h 100.1 04/16/98 12:47:40 */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-2">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-3"><span class="crayon-c">/* COPYRIGHT CRAY RESEARCH, INC.</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-4"><span class="crayon-c"> * UNPUBLISHED -- ALL RIGHTS RESERVED UNDER</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-5"><span class="crayon-c"> * THE COPYRIGHT LAWS OF THE UNITED STATES.</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-6"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-7">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-8"><span class="crayon-p">#ifndef __C1SYS_FS_NC1INO_H_</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-9"><span class="crayon-p">#define __C1SYS_FS_NC1INO_H_</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-10">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-11"><span class="crayon-p">#include &lt;sys/fs/sfsconsts.h&gt;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-12">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-13"><span class="crayon-c">/*</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-14"><span class="crayon-c"> * Typedefs used by the filesystem dependent code</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-15"><span class="crayon-c"> */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-16"><span class="crayon-r">typedef</span><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-17"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">iaf</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-cn">1</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-18"><span class="crayon-h"> </span><span class="crayon-v">uint</span><span class="crayon-h"> &nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">15</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-19"><span class="crayon-h"> </span><span class="crayon-e">dev_t </span><span class="crayon-v">dev</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">16</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-20"><span class="crayon-h"> </span><span class="crayon-e">blkno_t </span><span class="crayon-v">blk</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">32</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-21"><span class="crayon-sy">}</span><span class="crayon-h"> </span><span class="crayon-v">dblk_t</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-22">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-23"><span class="crayon-r">typedef</span><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-24"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">nblks</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">32</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-25"><span class="crayon-h"> </span><span class="crayon-e">blkno_t </span><span class="crayon-v">blk</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">32</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-26"><span class="crayon-sy">}</span><span class="crayon-h"> </span><span class="crayon-v">extent_t</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-27">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-28"><span class="crayon-c">/*</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-29"><span class="crayon-c"> *&nbsp;&nbsp;On-disk inode structure as it appears on the NC1FS &amp; NC2FS filesystems</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-30"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-31"><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">cdinode</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-32"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">cdi_rsrvd_1</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Reserved for expansion of cdi_mode &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-33"><span class="crayon-h"> </span><span class="crayon-v">cdi_mode</span><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-cn">24</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* mode and type of file (4-bits still free)*/</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-34"><span class="crayon-h"> </span><span class="crayon-v">cdi_msref</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Modification signature is referenced flag*/</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-35"><span class="crayon-h"> </span><span class="crayon-v">cdi_ms</span><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-cn">14</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Modification signature &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-36"><span class="crayon-h"> </span><span class="crayon-v">cdi_nlink</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-cn">17</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* #of links to file (can hold &gt; 100,000)&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-37">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-38"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">cdi_rsrvd_2</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Reserved for expansion of cdi_uid &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-39"><span class="crayon-h"> </span><span class="crayon-v">cdi_uid</span><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-cn">24</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Owner's user-ID &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-40"><span class="crayon-h"> </span><span class="crayon-v">cdi_rsrvd_3</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Reserved for expansion of cdi_gid &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-41"><span class="crayon-h"> </span><span class="crayon-v">cdi_gid</span><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-cn">24</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Owner's group-ID &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-42">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-43"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">cdi_rsrvd_4</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Reserved for expansion of cdi_acid &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-44"><span class="crayon-h"> </span><span class="crayon-v">cdi_acid</span><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-cn">24</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Account-ID &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-45"><span class="crayon-h"> </span><span class="crayon-v">cdi_gen</span><span class="crayon-h">&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-cn">32</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Inode generation number &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-46">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-47"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">cdi_size</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Number of bytes in the file &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-48"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">cdi_moffset</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Modification offset for current signature*/</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-49">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-50"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">cdi_blocks</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-cn">52</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Quotas: #of blocks actually allocated&nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-51"><span class="crayon-h"> </span><span class="crayon-v">cdi_extcomp</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">1</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Security: extended compartments flag&nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-52"><span class="crayon-h"> </span><span class="crayon-v">cdi_secrsvd1</span><span class="crayon-o">:</span><span class="crayon-cn">11</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Security: reserved &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-53">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-54"><span class="crayon-h"> </span><span class="crayon-t">union</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-55"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">smallcmps</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Compartments if [0..63] &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-56"><span class="crayon-h"> </span><span class="crayon-sy">}</span><span class="crayon-h"> </span><span class="crayon-v">cdi_compart</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Security: compartments info &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-57">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-58"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">cdi_slevel</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Security: security level &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-59"><span class="crayon-h"> </span><span class="crayon-v">cdi_intcls</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Security: integrity class &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-60"><span class="crayon-h"> </span><span class="crayon-v">cdi_secflg</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-cn">16</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Security: flag settings &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-61"><span class="crayon-h"> </span><span class="crayon-v">cdi_intcat</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-cn">32</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Security: integrity category &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-62">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-63"><span class="crayon-h"> </span><span class="crayon-t">union</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-64"><span class="crayon-h"> </span><span class="crayon-e">daddr_t </span><span class="crayon-v">daddr</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Extent descriptor &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-65"><span class="crayon-h"> </span><span class="crayon-e">dblk_t </span><span class="crayon-v">dblk</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Block descriptor &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-66"><span class="crayon-h"> </span><span class="crayon-sy">}</span><span class="crayon-h"> </span><span class="crayon-v">cdi_privs</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Privilege Assignment List location &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-67">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-68"><span class="crayon-h"> </span><span class="crayon-t">union</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-69"><span class="crayon-h"> </span><span class="crayon-e">daddr_t </span><span class="crayon-v">daddr</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Extent descriptor &nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-70"><span class="crayon-h"> </span><span class="crayon-e">dblk_t </span><span class="crayon-v">dblk</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Block&nbsp;&nbsp;descriptor &nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-71"><span class="crayon-h"> </span><span class="crayon-sy">}</span><span class="crayon-h"> </span><span class="crayon-v">cdi_acl</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Security: ACL location &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-72">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-73"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">cdi_cpart</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Next partition from cbits to use &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-74"><span class="crayon-h"> </span><span class="crayon-v">cdi_dmport</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">3</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* DMF daemon number &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-75"><span class="crayon-h"> </span><span class="crayon-v">cdi_dmstate</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">5</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* DMF file state &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-76"><span class="crayon-h"> </span><span class="crayon-v">cdi_dmkey</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-cn">48</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Data-Migration: key &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-77">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-78"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">cdi_allocf</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">4</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Data-Block allocation flags &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-79"><span class="crayon-h"> </span><span class="crayon-v">cdi_alloc</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">4</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Data-Block allocation technique &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-80"><span class="crayon-h"> </span><span class="crayon-v">cdi_cblks</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-cn">24</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Number of blocks to allocate per part&nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-81"><span class="crayon-h"> </span><span class="crayon-v">cdi_dmmid</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-cn">32</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Data-Migration: machine-ID &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-82">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-83"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">cdi_atmsec</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-cn">34</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Access time (secs) &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-84"><span class="crayon-h"> </span><span class="crayon-v">cdi_uatmsec</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-cn">30</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Access time (microsecs) &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-85">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-86"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">cdi_mtmsec</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-cn">34</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Modification time (secs) &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-87"><span class="crayon-h"> </span><span class="crayon-v">cdi_umtmsec</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-cn">30</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Modification time (microsecs) &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-88">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-89"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">cdi_ctmsec</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-cn">34</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Time of last inode modification (secs)&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-90"><span class="crayon-h"> </span><span class="crayon-v">cdi_uctmsec</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-cn">30</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Time of last inode modification (microsecs)*/</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-91">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-92"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">cdi_cbits</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* bit mask, file placement within cluster&nbsp;&nbsp;*/</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-93">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-94"><span class="crayon-h"> </span><span class="crayon-t">union</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-95"><span class="crayon-h"> </span><span class="crayon-e">daddr_t </span><span class="crayon-v">daddr</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Extent descriptor &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-96"><span class="crayon-h"> </span><span class="crayon-e">dblk_t </span><span class="crayon-v">dblk</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Block&nbsp;&nbsp;descriptor &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-97"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">whole</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-98"><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-99"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">one</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-cn">32</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* half 1 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-100"><span class="crayon-h"> </span><span class="crayon-v">two</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-cn">32</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* half 2 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-101"><span class="crayon-h"> </span><span class="crayon-sy">}</span><span class="crayon-h"> </span><span class="crayon-v">half</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-102"><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-103"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">one</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-cn">16</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* quarter 1 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-104"><span class="crayon-h"> </span><span class="crayon-v">two</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-cn">16</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* quarter 2 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-105"><span class="crayon-h"> </span><span class="crayon-v">three</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-cn">16</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* quarter 3 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-106"><span class="crayon-h"> </span><span class="crayon-v">four</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-cn">16</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* quarter 4 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-107"><span class="crayon-h"> </span><span class="crayon-sy">}</span><span class="crayon-h"> </span><span class="crayon-v">quarter</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-108"><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-109"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">one</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* eighth 1 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-110"><span class="crayon-h"> </span><span class="crayon-v">two</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* eighth 2 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-111"><span class="crayon-h"> </span><span class="crayon-v">three</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* eighth 3 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-112"><span class="crayon-h"> </span><span class="crayon-v">four</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* eighth 4 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-113"><span class="crayon-h"> </span><span class="crayon-v">five</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* eighth 5 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-114"><span class="crayon-h"> </span><span class="crayon-v">six</span><span class="crayon-h">&nbsp;&nbsp; </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* eighth 6 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-115"><span class="crayon-h"> </span><span class="crayon-v">seven</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* eighth 7 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-116"><span class="crayon-h"> </span><span class="crayon-v">eight</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* eighth 8 &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-117"><span class="crayon-h"> </span><span class="crayon-sy">}</span><span class="crayon-h"> </span><span class="crayon-v">eighth</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-118"><span class="crayon-h"> </span><span class="crayon-sy">}</span><span class="crayon-h"> </span><span class="crayon-v">cdi_addr</span><span class="crayon-sy">[</span><span class="crayon-cn">8</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* File allocation locators &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-119"><span class="crayon-h"> </span><span class="crayon-c">/* The #define for NC1NADDR must not be &gt; 8&nbsp;&nbsp;*/</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-120">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-121"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">cdi_slock</span><span class="crayon-sy">[</span><span class="crayon-v">SFSLK_SZ</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Reserved for SFS lock structure&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-122">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-123"><span class="crayon-h"> </span><span class="crayon-e">uint </span><span class="crayon-v">cdi_rsrvd_5</span><span class="crayon-h"> </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">16</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Reserved for Kernel group for expansion */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-124"><span class="crayon-h"> </span><span class="crayon-v">cdi_applac</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">32</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Application accounting tag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-125"><span class="crayon-h"> </span><span class="crayon-v">cdi_nindir</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-cn">16</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* # of indirect extent blocks &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-126">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-127"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">cdi_rsrvd</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Reserved by the Kernel group for use&nbsp;&nbsp;in&nbsp;&nbsp;*/</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-128"><span class="crayon-h"> </span><span class="crayon-c">/* future releases of UNICOS. &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-129"><span class="crayon-h"> </span><span class="crayon-c">/* No notification will be given when these&nbsp;&nbsp;*/</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-130"><span class="crayon-h"> </span><span class="crayon-c">/* words will be employed by future versions */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-131"><span class="crayon-h"> </span><span class="crayon-c">/* of UNICOS. &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-132">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-133"><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h"> </span><span class="crayon-v">cdi_sitebits</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Word reserved for site use. &nbsp;&nbsp;&nbsp;&nbsp; */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-134"><span class="crayon-sy">}</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-135">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-136"><span class="crayon-c">/* NOTE: Reserved fields in the cdinode structure will be preserved</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-137"><span class="crayon-c"> * when an inode is updated.&nbsp;&nbsp;They will be cleared when an inode is</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-138"><span class="crayon-c"> * newly allocated.</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-139"><span class="crayon-c"> */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-140">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-141"><span class="crayon-p">#define NC1INOPB&nbsp;&nbsp;16</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-142">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-143"><span class="crayon-c">/*</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-144"><span class="crayon-c"> * struct cdinode cdi_addr defines</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-145"><span class="crayon-c"> *</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-146"><span class="crayon-c"> * For IFCHR &amp; IFBLK devices, the cdi_addr words are used to hold</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-147"><span class="crayon-c"> * special security and configuration information, as well as</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-148"><span class="crayon-c"> * the device's rdev field.</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-149"><span class="crayon-c"> */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-150"><span class="crayon-p">#define cdi_rdev cdi_addr[0].half.one /* IFCHR or IFBLK rdev &nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-151"><span class="crayon-h"> &nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-c">/* cdi_addr[0].half.two &nbsp;&nbsp; Reserved &nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-152"><span class="crayon-h"> &nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-c">/* Security fields related to devices &nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-153"><span class="crayon-p">#define cdi_minlvl cdi_addr[1].eighth.one /* minimum level &nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-154"><span class="crayon-p">#define cdi_maxlvl cdi_addr[1].eighth.two /* maximum level &nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-155"><span class="crayon-h"> &nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-c">/* cdi_addr[1].quarter.two &nbsp;&nbsp; Reserved &nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-156"><span class="crayon-h"> &nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-c">/* cdi_addr[1].half.two &nbsp;&nbsp; Reserved &nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-157"><span class="crayon-p">#define cdi_valcmp cdi_addr[2].whole /* valid compartments &nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-158"><span class="crayon-h"> &nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-c">/* cdi_addr[3].whole &nbsp;&nbsp; Reserved &nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-159"><span class="crayon-h"> &nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-c">/* Configuration related device parameters &nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-160"><span class="crayon-p">#define cdi_param0 cdi_addr[4].half.one</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-161"><span class="crayon-p">#define cdi_param1 cdi_addr[4].half.two</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-162"><span class="crayon-p">#define cdi_param2 cdi_addr[5].half.one</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-163"><span class="crayon-p">#define cdi_param3 cdi_addr[5].half.two</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-164"><span class="crayon-p">#define cdi_param4 cdi_addr[6].half.one</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-165"><span class="crayon-p">#define cdi_param5 cdi_addr[6].half.two</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-166"><span class="crayon-p">#define cdi_param6 cdi_addr[7].half.one</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-167"><span class="crayon-p">#define cdi_param7 cdi_addr[7].half.two</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-168">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-169"><span class="crayon-p">#define cdi_filename cdi_addr[5].whole /* Filename of logical &nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-170">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-171"><span class="crayon-c">/*</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-172"><span class="crayon-c"> * The i_number in the NC1FS is made up of three elements,</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-173"><span class="crayon-c"> * the partition number, the inode region number and the</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-174"><span class="crayon-c"> * inode region relative inode number. The maximum size of </span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-175"><span class="crayon-c"> * each of these fields was selected for potential expansion</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-176"><span class="crayon-c"> * at a later date. The current composition of the i_number</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-177"><span class="crayon-c"> * is:</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-178"><span class="crayon-c"> * 32/ 0, 8/ Partition, 4/ Iregion, 20/relative inum</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-179"><span class="crayon-c"> */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-180">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-181"><span class="crayon-p">#define nc1ino_rinum(x) (int) ((x)&amp;((1&lt;&lt;20)-1))</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-182"><span class="crayon-p">#define nc1ino_ireg(x) (int) (((x)&gt;&gt;20)&amp;017)</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-183"><span class="crayon-p">#define nc1ino_part(x) (int) (((x)&gt;&gt;24)&amp;0377)</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-184"><span class="crayon-p">#define makenc1ino(p,r,i) (ino_t)((long) (p)&lt;&lt;24 | (long) (r)&lt;&lt;20 | (i))</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-185">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-186"><span class="crayon-c">/*</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-187"><span class="crayon-c"> * NC1FS i_number to disk block (inode region relative) and offset</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-188"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-189"><span class="crayon-p">#define nc1itodf(fp,i) (fp-&gt;s_part[nc1ino_part(i)].fd_ireg[nc1ino_ireg(i)]\</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-190"><span class="crayon-sy">.</span><span class="crayon-v">i_sblk</span><span class="crayon-o">+</span><span class="crayon-e">nc1itod</span><span class="crayon-sy">(</span><span class="crayon-v">i</span><span class="crayon-sy">)</span><span class="crayon-o">+</span><span class="crayon-e">nc1imapblks</span><span class="crayon-sy">(</span><span class="crayon-v">fp</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-191"><span class="crayon-p">#define nc1itod(i)&nbsp;&nbsp;(nc1ino_rinum(i) / NC1INOPB)</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-192"><span class="crayon-p">#define nc1itoo(i)&nbsp;&nbsp;((nc1ino_rinum(i) % NC1INOPB) * sizeof(struct cdinode))</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-193"><span class="crayon-p">#define nc1itos(i, iou) ( (iou) &gt; 1 ? (nc1itod(i) / (iou)) : nc1itod(i) )</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-194"><span class="crayon-p">#define nc1imapblks(fp) ((fp-&gt;s_priblock+1)*(fp-&gt;s_numiresblks+1))</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-195">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-196"><span class="crayon-c">/*</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-197"><span class="crayon-c"> * Allocation types used in cdi_alloc.</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-198"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-199"><span class="crayon-p">#define C1_EXTENT 1 /* Cray-1, X/YMP extent-based allocation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-200"><span class="crayon-p">#define C2_TRACK&nbsp;&nbsp;2 /* Cray-2 sector/track block-style allocation */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-201">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-202"><span class="crayon-c">/*</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-203"><span class="crayon-c"> * Allocation flags used in cdi_allocf.</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-204"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-205"><span class="crayon-p">#define CDI_ALF_NOGRW 001 /* Allocation is not allowed to grow&nbsp;&nbsp;*/</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-206"><span class="crayon-p">#define CDI_ALF_PARTR 002 /* Allocation of partition type only */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-207"><span class="crayon-p">#define CDI_ALF_RES1 004 /* unused */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-208"><span class="crayon-p">#define CDI_ALF_RES2 010 /* unused */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-209">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-210"><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">nc1bmap_pos</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-211"><span class="crayon-h"> </span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">inode</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">nc1p</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* inode address */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-212"><span class="crayon-h"> </span><span class="crayon-e">daddr_t </span><span class="crayon-v">indblk</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* indirect block number (or 0) */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-213"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">exntni</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* extent index of current pos */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-214"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">curblk</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* logical block number not */</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-215"><span class="crayon-h"> </span><span class="crayon-c">/* including blocks at current pos */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-216"><span class="crayon-sy">}</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599cfe133896668-217">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599cfe133896668-218"><span class="crayon-p">#endif /* __C1SYS_FS_NC1INO_H_ */</span></div></div></td>
</tr>
</table>
</div>
</div>
<!-- [Format Time: 0.0131 seconds] -->
<p></p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->
<div id="crayon-598a6a3599d11241552200" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
<div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><span class="crayon-title">ncdir.h</span>
<div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><div class="crayon-button crayon-nums-button" title="Toggle Line Numbers"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-plain-button" title="Toggle Plain Code"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-wrap-button" title="Toggle Line Wrap"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-expand-button" title="Expand Code"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-copy-button" title="Copy"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-popup-button" title="Open Code In New Window"><div class="crayon-button-icon"></div></div><span class="crayon-language">C</span></div></div>
<div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;"></div>
<div class="crayon-plain-wrap"><textarea wrap="soft" class="crayon-plain print-no" data-settings="dblclick" readonly style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;">
/* USMID @(#)uts/include/sys/fs/ncdir.h 100.0 07/11/97 02:46:40 */
/* COPYRIGHT CRAY RESEARCH, INC.
* UNPUBLISHED -- ALL RIGHTS RESERVED UNDER
* THE COPYRIGHT LAWS OF THE UNITED STATES.
*/
#ifndef __NCDIR_H_
#define __NCDIR_H_
/*
* Directory structure for Cray file systems using Berkeley-style format:
*
* The directory structure for these file systems is modeled after
* the Berkeley directory structure. However, unlike the Berkeley
* implementation, the name in a directory entry is NOT null
* terminated.
*/
#define CDMAXNAMELEN 255 /* Maximum length of file name */
#define CDIRBLKSIZ BSIZE /* Directory fragment size; */
/* WARNING: Must be a power of 2 */
/*
* CDIRSIZ() is a macro that given a pointer to an allocated directory
* entry, returns the smallest possible size (in bytes) for the directory
* entry. Any difference in the value returned by this macro and the actual
* size of the directory entry record is free space within the directory
* chunk.
*/
#define CDIRSIZ(dp) \
(sizeof(struct cdirect) - ((CDMAXNAMELEN + NBPW-1) &amp; ~(NBPW-1)) \
+ ((dp)-&gt;cd_namelen + NBPW-1) &amp; ~(NBPW-1))
struct cdirect {
unsigned long cd_ino; /* Inode for name */
unsigned long cd_sino; /* Reserved for future use */
unsigned short cd_reserved:10, /* Reserved for future use */
cd_signature:22, /* Name signature */
cd_reclen:22, /* Record length (bytes) */
cd_namelen:10; /* Length of name (bytes); */
/* MUST = 0 if cd_ino = 0! */
unsigned char cd_name[CDMAXNAMELEN]; /* NON-null terminated name */
};
#endif /* __NCDIR_H_ */</textarea></div>
<div class="crayon-main" style="">
<table class="crayon-table">
<tr class="crayon-row">
<td class="crayon-nums " data-settings="show">
<div class="crayon-nums-content" style="font-size: 12px !important; line-height: 15px !important;"><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-1">1</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-2">2</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-3">3</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-4">4</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-5">5</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-6">6</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-7">7</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-8">8</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-9">9</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-10">10</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-11">11</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-12">12</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-13">13</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-14">14</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-15">15</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-16">16</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-17">17</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-18">18</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-19">19</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-20">20</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-21">21</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-22">22</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-23">23</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-24">24</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-25">25</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-26">26</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-27">27</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-28">28</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-29">29</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-30">30</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-31">31</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-32">32</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-33">33</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-34">34</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-35">35</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-36">36</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-37">37</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-38">38</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-39">39</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-40">40</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-41">41</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-42">42</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-43">43</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d11241552200-44">44</div><div class="crayon-num" data-line="crayon-598a6a3599d11241552200-45">45</div></div>
</td>
<td class="crayon-code"><div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="crayon-598a6a3599d11241552200-1"><span class="crayon-c">/* USMID @(#)uts/include/sys/fs/ncdir.h 100.0 07/11/97 02:46:40 */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-2">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599d11241552200-3"><span class="crayon-c">/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COPYRIGHT CRAY RESEARCH, INC.</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-4"><span class="crayon-c"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UNPUBLISHED -- ALL RIGHTS RESERVED UNDER</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-5"><span class="crayon-c"> *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;THE COPYRIGHT LAWS OF THE UNITED STATES.</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-6"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-7">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-8"><span class="crayon-p">#ifndef __NCDIR_H_</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-9"><span class="crayon-p">#define __NCDIR_H_</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-10">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599d11241552200-11"><span class="crayon-c">/*</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-12"><span class="crayon-c"> *&nbsp;&nbsp;Directory structure for Cray file systems using Berkeley-style format:</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-13"><span class="crayon-c"> *</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-14"><span class="crayon-c"> * The directory structure for these file systems is modeled after</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-15"><span class="crayon-c"> * the Berkeley directory structure.&nbsp;&nbsp;However, unlike the Berkeley</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-16"><span class="crayon-c"> * implementation, the name in a directory entry is NOT null</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-17"><span class="crayon-c"> * terminated.</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-18"><span class="crayon-c"> */</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-19"><span class="crayon-p">#define CDMAXNAMELEN 255 /* Maximum length of file name */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-20"><span class="crayon-p">#define CDIRBLKSIZ BSIZE /* Directory fragment size; */</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-21"><span class="crayon-h"> </span><span class="crayon-c">/* WARNING: Must be a power of 2 */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-22">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599d11241552200-23"><span class="crayon-c">/*</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-24"><span class="crayon-c"> *&nbsp;&nbsp;CDIRSIZ() is a macro that given a pointer to an allocated directory</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-25"><span class="crayon-c"> *&nbsp;&nbsp;entry, returns the smallest possible size (in bytes) for the directory</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-26"><span class="crayon-c"> *&nbsp;&nbsp;entry.&nbsp;&nbsp;Any difference in the value returned by this macro and the actual</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-27"><span class="crayon-c"> *&nbsp;&nbsp;size of the directory entry record is free space within the directory</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-28"><span class="crayon-c"> *&nbsp;&nbsp;chunk.</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-29"><span class="crayon-c"> */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-30"><span class="crayon-p">#define CDIRSIZ(dp) \</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-31"><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-r">sizeof</span><span class="crayon-sy">(</span><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-v">cdirect</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-o">-</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">CDMAXNAMELEN</span><span class="crayon-h"> </span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-v">NBPW</span><span class="crayon-o">-</span><span class="crayon-cn">1</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-o">&amp;</span><span class="crayon-h"> </span><span class="crayon-o">~</span><span class="crayon-sy">(</span><span class="crayon-v">NBPW</span><span class="crayon-o">-</span><span class="crayon-cn">1</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-sy">\</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-32"><span class="crayon-h"> </span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">dp</span><span class="crayon-sy">)</span><span class="crayon-o">-&gt;</span><span class="crayon-v">cd_namelen</span><span class="crayon-h"> </span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-v">NBPW</span><span class="crayon-o">-</span><span class="crayon-cn">1</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-o">&amp;</span><span class="crayon-h"> </span><span class="crayon-o">~</span><span class="crayon-sy">(</span><span class="crayon-v">NBPW</span><span class="crayon-o">-</span><span class="crayon-cn">1</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-33">&nbsp;</div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-34"><span class="crayon-t">struct</span><span class="crayon-h"> </span><span class="crayon-e">cdirect</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-35"><span class="crayon-h"> </span><span class="crayon-t">unsigned</span><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-v">cd_ino</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Inode for name */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-36"><span class="crayon-h"> </span><span class="crayon-t">unsigned</span><span class="crayon-h"> </span><span class="crayon-t">long</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-v">cd_sino</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Reserved for future use */</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-37"><span class="crayon-h"> </span><span class="crayon-t">unsigned</span><span class="crayon-h"> </span><span class="crayon-t">short</span><span class="crayon-h"> </span><span class="crayon-v">cd_reserved</span><span class="crayon-o">:</span><span class="crayon-cn">10</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Reserved for future use */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-38"><span class="crayon-h"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-v">cd_signature</span><span class="crayon-o">:</span><span class="crayon-cn">22</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Name signature */</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-39"><span class="crayon-h"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-v">cd_reclen</span><span class="crayon-o">:</span><span class="crayon-cn">22</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-c">/* Record length (bytes) */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-40"><span class="crayon-h"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="crayon-v">cd_namelen</span><span class="crayon-o">:</span><span class="crayon-cn">10</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* Length of name (bytes); */</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-41"><span class="crayon-h"> </span><span class="crayon-c">/* MUST = 0 if cd_ino = 0! */</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-42"><span class="crayon-h"> </span><span class="crayon-t">unsigned</span><span class="crayon-h"> </span><span class="crayon-t">char</span><span class="crayon-h">&nbsp;&nbsp;</span><span class="crayon-v">cd_name</span><span class="crayon-sy">[</span><span class="crayon-v">CDMAXNAMELEN</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span><span class="crayon-h"> </span><span class="crayon-c">/* NON-null terminated name */</span></div><div class="crayon-line" id="crayon-598a6a3599d11241552200-43"><span class="crayon-sy">}</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d11241552200-44">&nbsp;</div><div class="crayon-line" id="crayon-598a6a3599d11241552200-45"><span class="crayon-p">#endif /* __NCDIR_H_ */</span></div></div></td>
</tr>
</table>
</div>
</div>
<!-- [Format Time: 0.0027 seconds] -->
<p>OK, that was a mouthful. There are many things to tease out here, so let&#8217;s start!</p>
<p>The structure of the file-system is based on the traditional UNIX approach, but there are a few key differences. The whole file-system thinks of the disk as a series of 4kByte blocks. These blocks conveniently map to sectors on the hard drives used in the J-90, but that&#8217;s not necessarily a requirement. A file-system on the machine could be spread around on multiple &#8216;partitions&#8217; on multiple drives and supported various striping configurations, though those details are not terribly important for a SW simulator. The mapping of sector-ranges to partitions and file-systems is part of the parameter file, though some of this information is duplicated in the file-system itself. (In other words there&#8217;s no partition table on the hard drives.)</p>
<p>Blocks are numbered consecutevly, starting at 0 through all the partitions that constitue a file-system, at least I think so: I&#8217;ve seen sections of code that seem to iterate through all the partitions and doing a subtraction of what appears to be the partition size to determine the physical sector corresponding to a logical block.</p>
<p>The most important information about the file-system is stored in the super-block. The primary copy of it is at block 1 with several copies sprinkled around the drive. This structure contains all the (more or less) static information about the file-system. The frequently changing info (like last mount time, locking, number of free inodes, etc.) are factored out into the dynamic block (nc1dblock). The dynamic block is also one block large and it&#8217;s location is recorded in the super-block.</p>
<p>These two together describe the file-system layout but not the content. For that, we&#8217;ll need a set of inodes and something, called the FREEMAP. Each inode describe one entity (the content of a file or a directory) on the file-system. It is the key structure from which the blocks containing the content can be accessed. An inode entry is 256 bytes long, so 16 of them fits in a block. A set of blocks are set aside when the file-system is created for inode storage. These regions are described in the super-block for each partition that constitutes the file-system.</p>
<p>Given an inode number, it&#8217;s block offset can be determined by dividing the number by 16. This block offset than can be used in an iteration through the inode allocation regions in the super-block to convert it to an absolute block number. Within the block, the modulo 16 of the inode number (multiplied by 256) provides the offset of the struct.</p>
<p>The root inode number is two in all UNIX system. Unicos apparently has the feature of changing that default (there&#8217;s a field for that in the super-block), but I decided to not mess with it.</p>
<p>Contrary to the original UNIX file-system design, there&#8217;s no free inode list. Instead, a bitmap is stored on the hard-drive, which records the state of each block on the file-system: 0 for free, 1 for occupied. This structure is called the FREEMAP, and it&#8217;s location and size is recorded in the super-block (s_mapoff and s_mapblks fields).</p>
<p>Theoretically this information is not strictly necessary: one can iterate through all inodes, record all the allocated blocks, and what&#8217;s not allocated, is &#8211; by definition &#8211; free. This is a length process though, so understandably the OS caches the result. The fsck utility among other things checks the and fixes any inconsistencies between the inodes and the FREEMAP.</p>
<h1>Inodes</h1>
<p>As we&#8217;ve discussed, UNIX &#8211; pretty much all flavors of it &#8211; represents the content of every file (or directory) with an inode. The inode structure contains the list of blocks corresponding to the file. This structure is rather hairy, but the main use-case is fairly easy to grasp: the allocations for the file are held in an array of 8 entries: cdi_addr. Each allocation is a contiguous extent of sectors, so each entry has a start block and a block-count part. I&#8217;m sure for highly fragmented file-systems, indirect inodes also exist (when the 8 entries in the inode are insufficient to describe the whole file) but I didn&#8217;t bother figuring out how that works: due to the extent-based allocation, it&#8217;s pretty difficult to set up a scenario when 8 entries are insufficient. It certainly won&#8217;t be a problem for a FS created from scratch on the host.</p>
<p>Inodes also contain the access permissions and time-stamps for creation, modification etc. These details are not terribly important or interesting for the moment. The only thing to note is that UNICOS on top of supporting the traditional UNIX-style permissions, has a whole new and different permission system. If it is enabled by default, I&#8217;m in trouble &#8211; I&#8217;ll have to figure out what the related fields mean. However, there&#8217;s no indication that&#8217;s default on.</p>
<h1>Directories</h1>
<p>Inodes only capable of describing the content of something. To make the FS useful, we need to give a name to these content &#8216;blobs&#8217; and organize them. This is what directories achieve: associate a file name with it&#8217;s content, that is, an inode.</p>
<p>So how are directories stored? Of course in an inode! While for normal files, the content of blocks the inode references is &#8216;just a bunch of bytes&#8217; as far as the OS is concerned, for directories, the format is defined: it is a set of cdirect entries. These entries are not much more than a mapping between a name and an inode (which then describes the content), with one important exception: there&#8217;s a field, called cd_signature. After some debugging I realized that this field is a hash of sorts of the file-name. But what kind? There are so many to chose from? The only way to figure that out was to look at the instruction traces for the kernel trying to access a directory entry on the hard drive. From that work, the following algorithm emerged:</p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->
<div id="crayon-598a6a3599d20144940792" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" style=" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;">
<div class="crayon-toolbar" data-settings=" mouseover overlay hide delay" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><span class="crayon-title"></span>
<div class="crayon-tools" style="font-size: 12px !important;height: 18px !important; line-height: 18px !important;"><div class="crayon-button crayon-nums-button" title="Toggle Line Numbers"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-plain-button" title="Toggle Plain Code"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-wrap-button" title="Toggle Line Wrap"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-expand-button" title="Expand Code"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-copy-button" title="Copy"><div class="crayon-button-icon"></div></div><div class="crayon-button crayon-popup-button" title="Open Code In New Window"><div class="crayon-button-icon"></div></div><span class="crayon-language">C++</span></div></div>
<div class="crayon-info" style="min-height: 16.8px !important; line-height: 16.8px !important;"></div>
<div class="crayon-plain-wrap"><textarea wrap="soft" class="crayon-plain print-no" data-settings="dblclick" readonly style="-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;">
uint32_t CalcHash(const char *aFileName) {
size_t Length = strlen(aFileName);
std::vector&lt;uint64_t&gt; Buffer((Length + 7) / 8);
std::fill(Buffer.begin(), Buffer.end(), 0);
memcpy(&amp;(Buffer[0]), aFileName, Length);
uint64_t XHash = 0;
for (auto &amp;Word : Buffer) {
XHash ^= SwapBytes(Word);
}
uint64_t XHash2 = XHash + (XHash &gt;&gt; 7) + (XHash &gt;&gt; 17) +
(XHash &gt;&gt; 27) + (XHash &gt;&gt; 37) + (XHash &gt;&gt; 47);
XHash2 = XHash2 &amp; 0x3fffff;
return uint32_t(XHash2);
}</textarea></div>
<div class="crayon-main" style="">
<table class="crayon-table">
<tr class="crayon-row">
<td class="crayon-nums " data-settings="show">
<div class="crayon-nums-content" style="font-size: 12px !important; line-height: 15px !important;"><div class="crayon-num" data-line="crayon-598a6a3599d20144940792-1">1</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d20144940792-2">2</div><div class="crayon-num" data-line="crayon-598a6a3599d20144940792-3">3</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d20144940792-4">4</div><div class="crayon-num" data-line="crayon-598a6a3599d20144940792-5">5</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d20144940792-6">6</div><div class="crayon-num" data-line="crayon-598a6a3599d20144940792-7">7</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d20144940792-8">8</div><div class="crayon-num" data-line="crayon-598a6a3599d20144940792-9">9</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d20144940792-10">10</div><div class="crayon-num" data-line="crayon-598a6a3599d20144940792-11">11</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d20144940792-12">12</div><div class="crayon-num" data-line="crayon-598a6a3599d20144940792-13">13</div><div class="crayon-num crayon-striped-num" data-line="crayon-598a6a3599d20144940792-14">14</div></div>
</td>
<td class="crayon-code"><div class="crayon-pre" style="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="crayon-598a6a3599d20144940792-1"><span class="crayon-e">uint32_t </span><span class="crayon-e">CalcHash</span><span class="crayon-sy">(</span><span class="crayon-m">const</span><span class="crayon-h"> </span><span class="crayon-t">char</span><span class="crayon-h"> </span><span class="crayon-o">*</span><span class="crayon-v">aFileName</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d20144940792-2"><span class="crayon-h"> </span><span class="crayon-e">size_t </span><span class="crayon-v">Length</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-e">strlen</span><span class="crayon-sy">(</span><span class="crayon-v">aFileName</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599d20144940792-3"><span class="crayon-h"> </span><span class="crayon-v">std</span><span class="crayon-o">::</span><span class="crayon-v">vector</span><span class="crayon-o">&lt;</span><span class="crayon-v">uint64_t</span><span class="crayon-o">&gt;</span><span class="crayon-h"> </span><span class="crayon-e">Buffer</span><span class="crayon-sy">(</span><span class="crayon-sy">(</span><span class="crayon-v">Length</span><span class="crayon-h"> </span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-cn">7</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-o">/</span><span class="crayon-h"> </span><span class="crayon-cn">8</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d20144940792-4"><span class="crayon-h"> </span><span class="crayon-v">std</span><span class="crayon-o">::</span><span class="crayon-e">fill</span><span class="crayon-sy">(</span><span class="crayon-v">Buffer</span><span class="crayon-sy">.</span><span class="crayon-e">begin</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">Buffer</span><span class="crayon-sy">.</span><span class="crayon-st">end</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-cn">0</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599d20144940792-5"><span class="crayon-h"> </span><span class="crayon-e">memcpy</span><span class="crayon-sy">(</span><span class="crayon-o">&amp;</span><span class="crayon-sy">(</span><span class="crayon-v">Buffer</span><span class="crayon-sy">[</span><span class="crayon-cn">0</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">aFileName</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">Length</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d20144940792-6"><span class="crayon-h"> </span><span class="crayon-e">uint64_t </span><span class="crayon-v">XHash</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-cn">0</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599d20144940792-7"><span class="crayon-h"> </span><span class="crayon-st">for</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-v">auto</span><span class="crayon-h"> </span><span class="crayon-v">&amp;Word </span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-v">Buffer</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d20144940792-8"><span class="crayon-h"> </span><span class="crayon-v">XHash</span><span class="crayon-h"> </span><span class="crayon-o">^=</span><span class="crayon-h"> </span><span class="crayon-e">SwapBytes</span><span class="crayon-sy">(</span><span class="crayon-t">Word</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599d20144940792-9"><span class="crayon-h"> </span><span class="crayon-sy">}</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d20144940792-10"><span class="crayon-h"> </span><span class="crayon-e">uint64_t </span><span class="crayon-v">XHash2</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">XHash</span><span class="crayon-h"> </span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-v">XHash</span><span class="crayon-h"> </span><span class="crayon-o">&gt;&gt;</span><span class="crayon-h"> </span><span class="crayon-cn">7</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-v">XHash</span><span class="crayon-h"> </span><span class="crayon-o">&gt;&gt;</span><span class="crayon-h"> </span><span class="crayon-cn">17</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-o">+</span><span class="crayon-h"> </span></div><div class="crayon-line" id="crayon-598a6a3599d20144940792-11"><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-v">XHash</span><span class="crayon-h"> </span><span class="crayon-o">&gt;&gt;</span><span class="crayon-h"> </span><span class="crayon-cn">27</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-v">XHash</span><span class="crayon-h"> </span><span class="crayon-o">&gt;&gt;</span><span class="crayon-h"> </span><span class="crayon-cn">37</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-o">+</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-v">XHash</span><span class="crayon-h"> </span><span class="crayon-o">&gt;&gt;</span><span class="crayon-h"> </span><span class="crayon-cn">47</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d20144940792-12"><span class="crayon-h"> </span><span class="crayon-v">XHash2</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">XHash2</span><span class="crayon-h"> </span><span class="crayon-o">&amp;</span><span class="crayon-h"> </span><span class="crayon-cn">0x3fffff</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-598a6a3599d20144940792-13"><span class="crayon-h"> </span><span class="crayon-st">return</span><span class="crayon-h"> </span><span class="crayon-e">uint32_t</span><span class="crayon-sy">(</span><span class="crayon-v">XHash2</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-598a6a3599d20144940792-14"><span class="crayon-sy">}</span></div></div></td>
</tr>
</table>
</div>
</div>
<!-- [Format Time: 0.0032 seconds] -->
<p>The code is a bit hacky, but does the job. The memcpy is needed to make sure that the file-name is zero-padded to 64-bit boundaries, and the SwapBytes call is there to rectify the endianness differences between the host (x86) and the target (Cray).</p>
<p>There are several other details of course that I haven&#8217;t figured out, but this is enough to implement a very basic file-system manipulation utility: one that can create a passable virtual hard drive, with a single partition on it, that contains a single file-system. The utility can also create files in the root directory of that file-system and copy their content from files on the host OS.</p>
<p>This utility created a functional &#8211; albeit one-way &#8211; communication channel between the host PC and the simulated target. It&#8217;s imperfect but good enough for the job. It could be extend to be more complete, potentially even to the point where the host can mount Cray FS (NC1FS) volumes, but that&#8217;s a lot of work for not much value. It would be way more intesting to bring networking up but that I&#8217;ll save for a later post.</p>
<h1>Back to the top</h1>
<p>So where were we? The original problem I wanted to solve was that the file-system gets full with the OS trying to create a memory dump on a FS that&#8217;s clearly not large enough to hold one. So, armed with all this knowledge about the FS strucutre, what can we do?</p>
<p>Interestingly the size of the FS is really only stored in a few places: the s_fsize member of the super-block, the fd_nblk field of the partition descriptors and the size of the FREEMAP (bmp_total field). Changing the first two fields is not a big deal, but changing the size of the FREEMAP is problematic: it can&#8217;t really easily grow beyond the size of the block(s) it occupies. Luckily a single block (4kByte) worth of bitmap, which is the smallest allocation unit, supports disks up to 128MBytes in size, a significant extension over the 48MBytes of the intial RAM FS. So really, all it takes is patching up two or three fields to resize the parition to 128MBytes, wihch provides enough room for creating the dump and still leaving some extra space. Problem solved!</p>
<h1>Are we done?</h1>
<p>Yes, yes we are. I&#8217;ll stop this rather boring wall of text here. The next one, I promise, will be much more interesting, when we&#8217;ll put all this knowledge to the test and attempt to install a full UNICOS OS on the simulator.</p>
</div><!-- .entry-content -->
<footer class="entry-meta">
</footer><!-- .entry-meta -->
</article><!-- #post-1839 -->
<div id="comments">
</div><!-- #comments -->
</div><!-- #content -->
</div><!-- #primary -->
</div><!-- #main -->
<footer id="colophon" role="contentinfo">
<div id="supplementary" class="one">
<div id="third" class="widget-area" role="complementary">
<aside id="text-3" class="widget widget_text"> <div class="textwidget">Copyright 2011 Andras Tantos</div>
</aside> </div><!-- #third .widget-area -->
</div><!-- #supplementary -->
<div id="site-generator">
<a href="https://wordpress.org/" title="Semantic Personal Publishing Platform">Proudly powered by WordPress</a>
</div>
</footer><!-- #colophon -->
</div><!-- #page -->
<script type='text/javascript' src='http://www.modularcircuits.com/blog/wp-includes/js/comment-reply.min.js?ver=4.8.1'></script>
<script type='text/javascript' src='http://www.modularcircuits.com/blog/wp-includes/js/wp-embed.min.js?ver=4.8.1'></script>
<script>
// Open menu on first tap on touch devices.
jQuery(document).ready(function () {
jQuery(".page_item").has("ul").children("a").attr("aria-haspopup", "true");
});
</script>
</body>
</html>