http://wiki.old.lustre.org/index.php?title=Architecture_-_Libcfs&feed=atom&action=history
Architecture - Libcfs - Revision history
2024-03-28T14:29:26Z
Revision history for this page on the wiki
MediaWiki 1.35.5
http://wiki.old.lustre.org/index.php?title=Architecture_-_Libcfs&diff=10587&oldid=prev
Docadmin at 21:14, 22 January 2010
2010-01-22T21:14:35Z
<p></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 21:14, 22 January 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>'''''Note:''''' The content on this page reflects the state of design of a Lustre feature at a particular point in time and may contain outdated information. </div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>'''''Note:<ins class="diffchange diffchange-inline">''</ins>''' ''The content on this page reflects the state of design of a Lustre feature at a particular point in time and may contain outdated information.<ins class="diffchange diffchange-inline">'' </ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Summary ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Summary ==</div></td></tr>
</table>
Docadmin
http://wiki.old.lustre.org/index.php?title=Architecture_-_Libcfs&diff=10512&oldid=prev
Docadmin: Protected "Architecture - Libcfs" ([edit=sysop] (indefinite) [move=sysop] (indefinite))
2010-01-22T17:40:30Z
<p>Protected "<a href="/index.php?title=Architecture_-_Libcfs" title="Architecture - Libcfs">Architecture - Libcfs</a>" ([edit=sysop] (indefinite) [move=sysop] (indefinite))</p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<tr class="diff-title" lang="en">
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 17:40, 22 January 2010</td>
</tr><tr><td colspan="2" class="diff-notice" lang="en"><div class="mw-diff-empty">(No difference)</div>
</td></tr></table>
Docadmin
http://wiki.old.lustre.org/index.php?title=Architecture_-_Libcfs&diff=10134&oldid=prev
Docadmin at 00:00, 19 January 2010
2010-01-19T00:00:17Z
<p></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 00:00, 19 January 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">----</del></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">'''''Note:''''' The content on this page reflects the state of design of a Lustre feature at a particular point in time and may contain outdated information. </ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">'''''Note:''''' The content on this page reflects the state of design of a Lustre feature at a particular point in time and may contain outdated information. </del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Summary ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Summary ==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
</table>
Docadmin
http://wiki.old.lustre.org/index.php?title=Architecture_-_Libcfs&diff=10133&oldid=prev
Docadmin: /* Summary */
2010-01-19T00:00:04Z
<p><span dir="auto"><span class="autocomment">Summary</span></span></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 00:00, 19 January 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>----</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>----</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">'''''Note:''''' The content on this page reflects the state of design of a Lustre feature at a particular point in time and may contain outdated information. </ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Summary ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Summary ==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
</table>
Docadmin
http://wiki.old.lustre.org/index.php?title=Architecture_-_Libcfs&diff=9915&oldid=prev
Docadmin: /* References */
2010-01-14T23:09:08Z
<p><span dir="auto"><span class="autocomment">References</span></span></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 23:09, 14 January 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l125" >Line 125:</td>
<td colspan="2" class="diff-lineno">Line 125:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>APIs almost exclusively. The most specific LNDs (e.g. viblnd) may</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>APIs almost exclusively. The most specific LNDs (e.g. viblnd) may</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>hardly use Libcfs at all (e.g. only debug and allocation).</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>hardly use Libcfs at all (e.g. only debug and allocation).</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">== References ==</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">[[Category:Architecture|Libcfs]]</del></div></td><td colspan="2"> </td></tr>
</table>
Docadmin
http://wiki.old.lustre.org/index.php?title=Architecture_-_Libcfs&diff=9851&oldid=prev
Docadmin: moved Libcfs to Architecture - Libcfs
2010-01-14T21:39:58Z
<p>moved <a href="/index.php?title=Libcfs&action=edit&redlink=1" class="new" title="Libcfs (page does not exist)">Libcfs</a> to <a href="/index.php?title=Architecture_-_Libcfs" title="Architecture - Libcfs">Architecture - Libcfs</a></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<tr class="diff-title" lang="en">
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 21:39, 14 January 2010</td>
</tr><tr><td colspan="2" class="diff-notice" lang="en"><div class="mw-diff-empty">(No difference)</div>
</td></tr></table>
Docadmin
http://wiki.old.lustre.org/index.php?title=Architecture_-_Libcfs&diff=9766&oldid=prev
Docadmin: 1 revision
2010-01-14T21:01:08Z
<p>1 revision</p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<tr class="diff-title" lang="en">
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 21:01, 14 January 2010</td>
</tr><tr><td colspan="2" class="diff-notice" lang="en"><div class="mw-diff-empty">(No difference)</div>
</td></tr></table>
Docadmin
http://wiki.old.lustre.org/index.php?title=Architecture_-_Libcfs&diff=9765&oldid=prev
Eeb: /* Summary */
2007-11-12T23:17:58Z
<p><span dir="auto"><span class="autocomment">Summary</span></span></p>
<p><b>New page</b></p><div>----<br />
<br />
== Summary ==<br />
<br />
Libcfs provides an API comprising fundamental primitives and<br />
subsystems - e.g. process management and debugging support - used<br />
throughout Lnet, Lustre and associated utilities. This API defines a<br />
portable runtime environment implemented consistently on all supported<br />
build targets.<br />
<br />
== Requirements ==<br />
<br />
=== Runtime Environment ===<br />
<br />
Libcfs provides both process and utility environments. The process<br />
environment provides runtime support for instances of Lnet and Lustre<br />
(client and server) running both in kernel and user space. The<br />
utility environment provides runtime support for userspace application<br />
programs used to configure, control and test Lnet and Lustre.<br />
<br />
The specific build target is exposed to libcfs users via macro<br />
definitions which allow conditional compilation and build-time<br />
assertions. There are separate macro definitions at each level -<br />
e.g. utility v. process at the top level, kernel v. userspace within<br />
process etc. The main targets are listed below...<br />
<br />
==== Process Environment ====<br />
<br />
'''Kernel'''<br />
<br />
Linux is the only fully supported target at this time. Code exists<br />
for Darwin and Windows which may be resurrected as required. A<br />
Solaris target will be required for native Solaris lustre clients.<br />
<br />
Both hard and soft interrupt contexts are supported within LNDs (NB<br />
these may only call back into Lnet in thread context). Sift interrupt<br />
context is supported for timer callbacks. All other code must run in<br />
thread context.<br />
<br />
'''Userspace'''<br />
<br />
Userspace targets are broadly posix runtimes. Single threaded<br />
runtimes (e.g. catamount) elide all locking primitives. Multi-threaded<br />
runtimes use posix threads. Signal safety is not defined.<br />
<br />
==== Utility Environment ====<br />
<br />
APIs available in the utility environment are a subset of those<br />
available in the process environment for the multi-threaded userspace<br />
target.<br />
<br />
=== C dialect ===<br />
<br />
Libcfs (and Lnet and Lustre) requires C99 syntax for structure member<br />
initialization (e.g. {.member = val}).<br />
<br />
=== APIs ===<br />
<br />
Libcfs defines abstract types and APIs to operate on them. These can be<br />
grouped broadly as follows...<br />
<br />
* Scalar types with explicit precision (e.g. __u64)<br />
** Byte swapping<br />
** 64 bit arithmetic<br />
* Time<br />
** Wallclock time<br />
** Ticks<br />
** Timers<br />
* Debugging<br />
** CDEBUG etc<br />
** stack dumping etc<br />
* Lists<br />
* NID and process ID abstractions<br />
* Process Management<br />
** Process creation and termination<br />
** Process attributes<br />
** Locking<br />
** Wait queues and/or condition variables<br />
* Memory management<br />
** Allocate/Free <br />
** Leak detection<br />
** Mapping<br />
* etc (list incomplete)...<br />
<br />
=== Header Files ===<br />
<br />
All libcfs declarations for all build targets and runtimes must be<br />
included via a single public header file e.g...<br />
<br />
#include <libcfs.h><br />
<br />
Target-specific header files as determined by preprocessor directives<br />
are then included from this single public header. <br />
<br />
The graph of header file dependencies within Libcfs must be a simple<br />
tree.<br />
<br />
Compile-time assertions must be provided to ensure no libcfs header<br />
files apart from the single public header are included directly.<br />
<br />
The build system must define the macro "__LIBCFS_UTIL__" when building<br />
utilities so that the correct environment is provided.<br />
<br />
== Conversion Process ==<br />
<br />
It is the intention that all parts of Lnet and Lustre which are<br />
sufficiently generic should use Libcfs APIs, however this has to be a<br />
gradual process so that conversion does not block ongoing Lustre<br />
development - i.e. it must be possible for individual subsystems to be<br />
converted independently.<br />
<br />
The biggest obstacle is Liblustre. It currently duplicates much<br />
functionality that should be provided by Libcfs however gradual<br />
conversion within Liblustre is impossible - name clashes break the<br />
userspace build once libcfs headers are included.<br />
<br />
Common Lnet code will benefit from conversion to the Libcfs process<br />
management and synchronisation APIs since that will provide support<br />
for the multi-threaded userspace process environment. This in turn<br />
will provide better concurrency and therefore better CPU utilisation<br />
on SMPs. <br />
<br />
The extent to which LNDs exploit Libcfs APIs depends utterly on the<br />
LND. The most generic LNDs (e.g. userspace socklnd) should use Libcfs<br />
APIs almost exclusively. The most specific LNDs (e.g. viblnd) may<br />
hardly use Libcfs at all (e.g. only debug and allocation).<br />
<br />
== References ==<br />
[[Category:Architecture|Libcfs]]</div>
Eeb