<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p style="margin-top:0;margin-bottom:0">Huh?&nbsp; Very little of the client is used on the server.&nbsp; The vast majority of the client is llite, vvp, then lov,&nbsp;osc, and&nbsp;mdc.&nbsp; These are not used on the servers at all, the modules won't even be loaded.</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">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 different from client to server.<br>
<br>
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>
<br>
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:</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">vfs<br>
client code</p>
<p style="margin-top:0;margin-bottom:0">ptlrpc</p>
<p style="margin-top:0;margin-bottom:0">networking</p>
<p style="margin-top:0;margin-bottom:0">------ PHYSICAL BOUNDARY --------<br>
networking</p>
<p style="margin-top:0;margin-bottom:0">ptlrpc</p>
<p style="margin-top:0;margin-bottom:0">server code</p>
<p style="margin-top:0;margin-bottom:0">ldiskfs</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">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; ldlm layers is shared.</p>
</div>
<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> lustre-devel &lt;lustre-devel-bounces@lists.lustre.org&gt; on behalf of James Simmons &lt;jsimmons@infradead.org&gt;<br>
<b>Sent:</b> Wednesday, June 20, 2018 8:48:07 PM<br>
<b>To:</b> NeilBrown<br>
<b>Cc:</b> Oleg Drokin; Andreas Dilger; 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"><br>
&gt; Here are a bunch more cleanups that will appear in my lustre-testing<br>
&gt; tree shortly.<br>
&gt; <br>
&gt; The interesting stuff is some enhancements to kbuild to let us<br>
&gt; build modules from multiple directories.<br>
&gt; I've used that to clean up the build of ptlrpc&#43;ldlm and to<br>
&gt; merge libcfs and lnet into the one module - I've left the lnds<br>
&gt; separate.<br>
<br>
That looks pretty good. It doesn't apply to the stable lustre tree but I<br>
did try it out on lustre-testing. The module building does seem to <br>
function well. Only thing not clear is if do a<br>
<br>
make SUBDIRS=drivers/staging/lustre/lustre/lmv modules<br>
<br>
do lmv.a and the other *.a files get relinked int lustre.ko ?<br>
&nbsp;<br>
&gt; I've haven't progressed further in lustre because I'm not sure which -<br>
&gt; if any - modules are also used by the server.<br>
&gt; I'd rather shared code was in a separate module to client-only.<br>
&gt;<br>
&gt; Which parts of lustre/lustre/* are also used by server?<br>
<br>
Basically all the client code is reused on the server except for llite.<br>
The reason is each server type MDS, MGS, or OSS is treated as a client<br>
to each other. So in affect the server code is a middle layer level on<br>
top of the client code.<br>
<br>
&gt; After that, it is all fairly simple cleanups.<br>
&gt; <br>
&gt; I plan to submit the kbuild stuff upstream next week.<br>
&gt; <br>
&gt; Thanks,<br>
&gt; NeilBrown<br>
&gt; <br>
&gt; ---<br>
&gt; <br>
&gt; NeilBrown (24):<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kbuild: detect directories in components of a module.<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kbuild: treat a directory listed in a composite object as foo/mod.a<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kbuild: support building of per-directory mod.a<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kbuild: disable KBUILD_MODNAME when building for mod.a<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kbuild: Add documentation for modobj-m<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: build ldlm in the ldlm directory.<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: merge libcfs module into lnet.<br>
<br>
This seems to work when I tried the lustre-testing tree. I did see <br>
regression to related to this work in that tree.<br>
<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: use truncate_inode_page in place of truncate_complete_page<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: don't use spare bits in iattr.ia_valid<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: remove lustre_patchless_compat.h<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: discard current_n*groups macros.<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: discard LTIME_S macro<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: discard NO_QUOTA and QUOTA_OK<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: discard ext2* bit operations<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: centralize TIMES_SET_FLAGS<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: remove redefinition of module_init().<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: remove lustre_compat.h<br>
<br>
The first two patches of the above seem to break things. The first one was <br>
pointed out so I avoid issues in my testing by changing the patch to just<br>
move truncate_inode_page() to lustre_mdc.h for now. The next patch does <br>
break things.<br>
<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre/lnet: move tracefile locking from linux-tracefile.c to tracefile.c<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: open code cfs_trace_max_debug_mb() into cfs_trace_set_debug_mb()<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: move tcd locking across to tracefile.c<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: move remainder of linux-tracefile.c to tracefile.c<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: fold cfs_tracefile_*_arch into their only callers.<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: renamed CFS_TCD_TYPE_MAX to CFS_TCD_TYPE_CNT<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lustre: discard TCD_MAX_TYPES<br>
<br>
I see breakage in this code as well.<br>
<br>
&gt;&nbsp; Documentation/kbuild/makefiles.txt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 65 &#43;&#43;&#43;&#43;&#43;<br>
&gt;&nbsp; drivers/staging/lustre/lnet/Makefile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 7 -<br>
&gt;&nbsp; drivers/staging/lustre/lnet/libcfs/Makefile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 7 -<br>
&gt;&nbsp; drivers/staging/lustre/lnet/libcfs/debug.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 6 <br>
&gt;&nbsp; .../staging/lustre/lnet/libcfs/linux-tracefile.c&nbsp;&nbsp; |&nbsp; 258 --------------------<br>
&gt;&nbsp; drivers/staging/lustre/lnet/libcfs/module.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 26 &#43;-<br>
&gt;&nbsp; drivers/staging/lustre/lnet/libcfs/tracefile.c&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 241 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;--<br>
&gt;&nbsp; drivers/staging/lustre/lnet/libcfs/tracefile.h&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 40 ---<br>
&gt;&nbsp; drivers/staging/lustre/lnet/lnet/Makefile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 11 -<br>
&gt;&nbsp; drivers/staging/lustre/lnet/lnet/module.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 9 &#43;<br>
&gt;&nbsp; drivers/staging/lustre/lustre/fid/lproc_fid.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/fld/lproc_fld.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/include/cl_object.h&nbsp; |&nbsp;&nbsp;&nbsp; 6 <br>
&gt;&nbsp; .../staging/lustre/lustre/include/lustre_compat.h&nbsp; |&nbsp;&nbsp; 82 ------<br>
&gt;&nbsp; drivers/staging/lustre/lustre/include/lustre_net.h |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; .../lustre/include/lustre_patchless_compat.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 68 -----<br>
&gt;&nbsp; drivers/staging/lustre/lustre/include/obd.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 7 &#43;<br>
&gt;&nbsp; .../staging/lustre/lustre/include/obd_support.h&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/ldlm/Makefile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 11 &#43;<br>
&gt;&nbsp; drivers/staging/lustre/lustre/llite/dir.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 3 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/llite/file.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 36 &#43;--<br>
&gt;&nbsp; drivers/staging/lustre/lustre/llite/lcommon_cl.c&nbsp;&nbsp; |&nbsp;&nbsp; 11 -<br>
&gt;&nbsp; .../staging/lustre/lustre/llite/llite_internal.h&nbsp;&nbsp; |&nbsp;&nbsp; 13 &#43;<br>
&gt;&nbsp; drivers/staging/lustre/lustre/llite/llite_lib.c&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 52 &#43;&#43;--<br>
&gt;&nbsp; drivers/staging/lustre/lustre/llite/namei.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 16 &#43;<br>
&gt;&nbsp; drivers/staging/lustre/lustre/llite/vvp_io.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 8 -<br>
&gt;&nbsp; drivers/staging/lustre/lustre/llite/vvp_object.c&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 6 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/lmv/lmv_intent.c&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 6 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/lmv/lmv_obd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 21 &#43;-<br>
&gt;&nbsp; drivers/staging/lustre/lustre/lov/lov_io.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 3 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/lov/lov_obd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 2 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/lov/lov_pack.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/lov/lov_page.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/mdc/mdc_lib.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 19 &#43;<br>
&gt;&nbsp; drivers/staging/lustre/lustre/mdc/mdc_reint.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 4 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/mdc/mdc_request.c&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 12 -<br>
&gt;&nbsp; drivers/staging/lustre/lustre/obdclass/class_obd.c |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/obdclass/llog.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 7 -<br>
&gt;&nbsp; .../lustre/lustre/obdclass/lprocfs_status.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; .../staging/lustre/lustre/obdclass/obd_config.c&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/obdclass/obd_mount.c |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/obdclass/obdo.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 10 -<br>
&gt;&nbsp; .../staging/lustre/lustre/obdecho/echo_client.c&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/osc/lproc_osc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/osc/osc_cache.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 4 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/osc/osc_io.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 23 &#43;-<br>
&gt;&nbsp; drivers/staging/lustre/lustre/osc/osc_quota.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 4 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/osc/osc_request.c&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/ptlrpc/Makefile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 12 -<br>
&gt;&nbsp; drivers/staging/lustre/lustre/ptlrpc/import.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; .../staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/ptlrpc/sec.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 15 &#43;<br>
&gt;&nbsp; drivers/staging/lustre/lustre/ptlrpc/sec_plain.c&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; drivers/staging/lustre/lustre/ptlrpc/service.c&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 <br>
&gt;&nbsp; scripts/Makefile.build&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 57 &#43;&#43;&#43;-<br>
&gt;&nbsp; scripts/Makefile.lib&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; 63 &#43;&#43;&#43;--<br>
&gt;&nbsp; 57 files changed, 584 insertions(&#43;), 685 deletions(-)<br>
&gt;&nbsp; delete mode 100644 drivers/staging/lustre/lnet/libcfs/linux-tracefile.c<br>
&gt;&nbsp; delete mode 100644 drivers/staging/lustre/lustre/include/lustre_compat.h<br>
&gt;&nbsp; delete mode 100644 drivers/staging/lustre/lustre/include/lustre_patchless_compat.h<br>
&gt;&nbsp; create mode 100644 drivers/staging/lustre/lustre/ldlm/Makefile<br>
&gt; <br>
&gt; --<br>
&gt; Signature<br>
&gt; <br>
&gt; <br>
_______________________________________________<br>
lustre-devel mailing list<br>
lustre-devel@lists.lustre.org<br>
<a href="http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org">http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org</a><br>
</div>
</span></font></div>
</body>
</html>