<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body>
Ah, thanks Andreas.&nbsp; Perhaps not coincidentally, Lustre 2.4 is the first release I worked on.<br>
<br>
Neil, I am really unenamored of the idea of the shared ptlrpc ldlm module being named ptlrpc...<br>
<br>
Also, Lustre currently has a bunch of module parameters which are used for configuration.&nbsp; Thoughts on that?<br>
<br>
<br>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Andreas Dilger &lt;adilger@dilger.ca&gt;<br>
<b>Sent:</b> Thursday, June 21, 2018 2:22:45 AM<br>
<b>To:</b> James Simmons<br>
<b>Cc:</b> Patrick Farrell; Lustre Development List<br>
<b>Subject:</b> Re: [lustre-devel] [PATCH 00/24] lustre - more cleanups including module reduction.</font>
<div>&nbsp;</div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">On Jun 20, 2018, at 8:57 PM, James Simmons &lt;jsimmons@infradead.org&gt; wrote:<br>
&gt; <br>
&gt;&gt; <br>
&gt;&gt; Huh?&nbsp; Very little of the client is used on the server.&nbsp; The vast majority of the client is llite, vvp, then lov, osc, and mdc.&nbsp; These are<br>
&gt;&gt; not used on the servers at all, the modules won't even be loaded.<br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; Servers are definitely *not* clients of one another in the sense of &quot;Lustre clients&quot;.&nbsp; They interact with each other, but in a manner very<br>
&gt;&gt; different from client to server.<br>
&gt;&gt; <br>
&gt;&gt; The ldlm and ptlrpc layers are *partly* shared, and of course, the networking from lnet down is.&nbsp; But that's not &quot;the client&quot;.<br>
&gt;&gt; <br>
&gt;&gt; The statement that the server layer is a middle layer on top of the client code doesn't make any sense to me.&nbsp; It's like this:<br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; vfs<br>
&gt;&gt; client code<br>
&gt;&gt; ptlrpc<br>
&gt;&gt; networking<br>
&gt;&gt; ------ PHYSICAL BOUNDARY --------<br>
&gt;&gt; networking<br>
&gt;&gt; ptlrpc<br>
&gt;&gt; server code<br>
&gt;&gt; ldiskfs<br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; with LDLM also being explicitly shared, though client &amp; server code is not all shared.&nbsp; Very little to nothing outside of the networking &amp;<br>
&gt;&gt; ldlm layers is shared.<br>
&gt; <br>
&gt; When I first started this (pre 2.3 days) that is how it was explained to<br>
&gt; me. I just took it at face value but when it comes to the separation as I<br>
&gt; don't have a clue. Patrick since you have a better grasp of the<br>
&gt; architecture can you provide details to Neil. Perhaps to documentation on<br>
&gt; this separation if it exist.<br>
<br>
James,<br>
you are (or were) correct, but the code has evolved over the years.&nbsp; The lov/osc and<br>
modules were formerly used on the MDS in order to connect to the OSS, and lmv/mdc were<br>
used with the old CMD code to connect to other MDS nodes.&nbsp; However, that ended up with<br>
a lot of code that was in those modules that was only used on the client or server.&nbsp; In<br>
the CMD code it also meant that a lot of complexity existed with making &quot;fake&quot; RPCs to<br>
other MDS nodes that tried to keep the same RPC opcode but were interpreted differently<br>
at the MDS when they were being sent from another MDS.<br>
<br>
In the 2.4 release (which included both DNE and the OSD rewrite for ZFS) the lov/osc<br>
server code was copied/split into lod/osp, and this is used for remote connections to<br>
both the OSSs and other MDS nodes.&nbsp; The MDS is still a client of the OSS for precreate<br>
and recovery operations (and soon also statfs), but the code is no longer shared with<br>
the regular clients.<br>
<br>
Cheers, Andreas<br>
<br>
<br>
<br>
<br>
<br>
</div>
</span></font></div>
</body>
</html>