<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body>
Neil,<br>
<br>
Apologies if you&#8217;ve answered this elsewhere, but what&#8217;s the genesis of your current (extremely welcome) interest in Lustre?&nbsp; Some commitment by SUSE?<br>
<br>
Regards,<br>
- Patrick<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> lustre-devel &lt;lustre-devel-bounces@lists.lustre.org&gt; on behalf of NeilBrown &lt;neilb@suse.com&gt;<br>
<b>Sent:</b> Sunday, February 11, 2018 5:54:51 PM<br>
<b>To:</b> James Simmons; Lustre Development List<br>
<b>Cc:</b> Oleg Drokin<br>
<b>Subject:</b> Re: [lustre-devel] Lustre upstream client TODO list</font>
<div>&nbsp;</div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">On Sun, Feb 11 2018, James Simmons wrote:<br>
<br>
&gt; So I sent a patch upstream that laid out what most needs to be done for<br>
&gt; the linux lustre client to leave staging. I placed the new text here for<br>
&gt; ease of read so you don't have to go searching for it. Feed back is<br>
&gt; welcomed. Hoepfully posting it will make it clear what needs to be done.<br>
<br>
<br>
Thanks so much for putting this together and pushing it out.&nbsp; I really<br>
appreciated it and hope to show that appreciation with patches :-)<br>
<br>
NeilBrown<br>
<br>
&gt;<br>
&gt; Currently all the work directed toward the lustre upstream client is tracked<br>
&gt; at the following link:<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9679">https://jira.hpdd.intel.com/browse/LU-9679</a><br>
&gt;<br>
&gt; Under this ticket you will see the following work items that need to be<br>
&gt; addressed:<br>
&gt;<br>
&gt; ******************************************************************************<br>
&gt; * libcfs cleanup<br>
&gt; *<br>
&gt; * <a href="https://jira.hpdd.intel.com/browse/LU-9859">https://jira.hpdd.intel.com/browse/LU-9859</a><br>
&gt; *<br>
&gt; * Track all the cleanups and simplification of the libcfs module. Remove<br>
&gt; * functions the kernel provides. Possible intergrate some of the functionality<br>
&gt; * into the kernel proper.<br>
&gt; *<br>
&gt; ******************************************************************************<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-100086">https://jira.hpdd.intel.com/browse/LU-100086</a><br>
&gt;<br>
&gt; LNET_MINOR conflicts with USERIO_MINOR<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-8130">https://jira.hpdd.intel.com/browse/LU-8130</a><br>
&gt;<br>
&gt; Fix and simplify libcfs hash handling<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-8703">https://jira.hpdd.intel.com/browse/LU-8703</a><br>
&gt;<br>
&gt; The current way we handle SMP is wrong. Platforms like ARM and KNL can have<br>
&gt; core and NUMA setups with things like NUMA nodes with no cores. We need to<br>
&gt; handle such cases. This work also greatly simplified the lustre SMP code.<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9019">https://jira.hpdd.intel.com/browse/LU-9019</a><br>
&gt;<br>
&gt; Replace libcfs time API with standard kernel APIs. Also migrate away from<br>
&gt; jiffies. We found jiffies can vary on nodes which can lead to corner cases<br>
&gt; that can break the file system due to nodes having inconsistent behavior.<br>
&gt; So move to time64_t and ktime_t as much as possible.<br>
&gt;<br>
&gt; ******************************************************************************<br>
&gt; * Proper IB support for ko2iblnd<br>
&gt; ******************************************************************************<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9179">https://jira.hpdd.intel.com/browse/LU-9179</a><br>
&gt;<br>
&gt; Poor performance for the ko2iblnd driver. This is related to many of the<br>
&gt; patches below that are missing from the linux client.<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9886">https://jira.hpdd.intel.com/browse/LU-9886</a><br>
&gt;<br>
&gt; Crash in upstream kiblnd_handle_early_rxs()<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-10394">https://jira.hpdd.intel.com/browse/LU-10394</a> / LU-10526 / LU-10089<br>
&gt;<br>
&gt; Default to default to using MEM_REG<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-10459">https://jira.hpdd.intel.com/browse/LU-10459</a><br>
&gt;<br>
&gt; throttle tx based on queue depth<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9943">https://jira.hpdd.intel.com/browse/LU-9943</a><br>
&gt;<br>
&gt; correct WR fast reg accounting<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-10291">https://jira.hpdd.intel.com/browse/LU-10291</a><br>
&gt;<br>
&gt; remove concurrent_sends tunable<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-10213">https://jira.hpdd.intel.com/browse/LU-10213</a><br>
&gt;<br>
&gt; calculate qp max_send_wrs properly<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9810">https://jira.hpdd.intel.com/browse/LU-9810</a><br>
&gt;<br>
&gt; use less CQ entries for each connection<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-10129">https://jira.hpdd.intel.com/browse/LU-10129</a> / LU-9180<br>
&gt;<br>
&gt; rework map_on_demand behavior<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-10129">https://jira.hpdd.intel.com/browse/LU-10129</a><br>
&gt;<br>
&gt; query device capabilities<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-10015">https://jira.hpdd.intel.com/browse/LU-10015</a><br>
&gt;<br>
&gt; fix race at kiblnd_connect_peer<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9983">https://jira.hpdd.intel.com/browse/LU-9983</a><br>
&gt;<br>
&gt; allow for discontiguous fragments<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9500">https://jira.hpdd.intel.com/browse/LU-9500</a><br>
&gt;<br>
&gt; Don't Page Align remote_addr with FastReg<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9448">https://jira.hpdd.intel.com/browse/LU-9448</a><br>
&gt;<br>
&gt; handle empty CPTs<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9507">https://jira.hpdd.intel.com/browse/LU-9507</a><br>
&gt;<br>
&gt; Don't Assert On Reconnect with MultiQP<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9472">https://jira.hpdd.intel.com/browse/LU-9472</a><br>
&gt;<br>
&gt; Fix FastReg map/unmap for MLX5<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9425">https://jira.hpdd.intel.com/browse/LU-9425</a><br>
&gt;<br>
&gt; Turn on 2 sges by default<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-8943">https://jira.hpdd.intel.com/browse/LU-8943</a><br>
&gt;<br>
&gt; Enable Multiple OPA Endpoints between Nodes<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-5718">https://jira.hpdd.intel.com/browse/LU-5718</a><br>
&gt;<br>
&gt; multiple sges for work request<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9094">https://jira.hpdd.intel.com/browse/LU-9094</a><br>
&gt;<br>
&gt; kill timedout txs from ibp_tx_queue<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9094">https://jira.hpdd.intel.com/browse/LU-9094</a><br>
&gt;<br>
&gt; reconnect peer for REJ_INVALID_SERVICE_ID<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-8752">https://jira.hpdd.intel.com/browse/LU-8752</a><br>
&gt;<br>
&gt; Stop MLX5 triggering a dump_cqe<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-8874">https://jira.hpdd.intel.com/browse/LU-8874</a><br>
&gt;<br>
&gt; Move ko2iblnd to latest RDMA changes<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-8875">https://jira.hpdd.intel.com/browse/LU-8875</a> / LU-8874<br>
&gt;<br>
&gt; Change to new RDMA done callback mechanism<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9164">https://jira.hpdd.intel.com/browse/LU-9164</a> / LU-8874<br>
&gt;<br>
&gt; Incorporate RDMA map/unamp API's into ko2iblnd<br>
&gt;<br>
&gt; ******************************************************************************<br>
&gt; * sysfs/debugfs fixes<br>
&gt; *<br>
&gt; * <a href="https://jira.hpdd.intel.com/browse/LU-8066">https://jira.hpdd.intel.com/browse/LU-8066</a><br>
&gt; *<br>
&gt; * The original migration to sysfs was done in haste without properly working<br>
&gt; * utilities to test the changes. This covers the work to restore the proper<br>
&gt; * behavior. Huge project to make this right.<br>
&gt; *<br>
&gt; ******************************************************************************<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9431">https://jira.hpdd.intel.com/browse/LU-9431</a><br>
&gt;<br>
&gt; The function class_process_proc_param was used for our mass updates of proc<br>
&gt; tunables. It didn't work with sysfs and it was just ugly so it was removed.<br>
&gt; In the process the ability to mass update thousands of clients was lost. This<br>
&gt; work restores this in a sane way.<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9091">https://jira.hpdd.intel.com/browse/LU-9091</a><br>
&gt;<br>
&gt; One the major request of users is the ability to pass in parameters into a<br>
&gt; sysfs file in various different units. For example we can set max_pages_per_rpc<br>
&gt; but this can vary on platforms due to different platform sizes. So you can<br>
&gt; set this like max_pages_per_rpc=16MiB. The original code to handle this written<br>
&gt; before the string helpers were created so the code doesn't follow that format<br>
&gt; but it would be easy to move to. Currently the string helpers does the reverse<br>
&gt; of what we need, changing bytes to string. We need to change a string to bytes.<br>
&gt;<br>
&gt; ******************************************************************************<br>
&gt; * Proper user land to kernel space interface for Lustre<br>
&gt; *<br>
&gt; * <a href="https://jira.hpdd.intel.com/browse/LU-9680">https://jira.hpdd.intel.com/browse/LU-9680</a><br>
&gt; *<br>
&gt; ******************************************************************************<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-8915">https://jira.hpdd.intel.com/browse/LU-8915</a><br>
&gt;<br>
&gt; Don't use linux list structure as user land arguments for lnet selftest.<br>
&gt; This code is pretty poor quality and really needs to be reworked.<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-8834">https://jira.hpdd.intel.com/browse/LU-8834</a><br>
&gt;<br>
&gt; The lustre ioctl LL_IOC_FUTIMES_3 is very generic. Need to either work with<br>
&gt; other file systems with similar functionality and make a common syscall<br>
&gt; interface or rework our server code to automagically do it for us.<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-6202">https://jira.hpdd.intel.com/browse/LU-6202</a><br>
&gt;<br>
&gt; Cleanup up ioctl handling. We have many obsolete ioctls. Also the way we do<br>
&gt; ioctls can be changed over to netlink. This also has the benefit of working<br>
&gt; better with HPC systems that do IO forwarding. Such systems don't like ioctls<br>
&gt; very well.<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9667">https://jira.hpdd.intel.com/browse/LU-9667</a><br>
&gt;<br>
&gt; More cleanups by making our utilities use sysfs instead of ioctls for LNet.<br>
&gt; Also it has been requested to move the remaining ioctls to the netlink API.<br>
&gt;<br>
&gt; ******************************************************************************<br>
&gt; * Misc<br>
&gt; ******************************************************************************<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9855">https://jira.hpdd.intel.com/browse/LU-9855</a><br>
&gt;<br>
&gt; Clean up obdclass preprocessor code. One of the major eye sores is the various<br>
&gt; pointer redirections and macros used by the obdclass. This makes the code very<br>
&gt; difficult to understand. It was requested by the Al Viro to clean this up before<br>
&gt; we leave staging.<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9633">https://jira.hpdd.intel.com/browse/LU-9633</a><br>
&gt;<br>
&gt; Migrate to sphinx kernel-doc style comments. Add documents in Documentation.<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-6142">https://jira.hpdd.intel.com/browse/LU-6142</a><br>
&gt;<br>
&gt; Possible remaining coding style fix. Remove deadcode. Enforce kernel code<br>
&gt; style. Other minor misc cleanups...<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-8837">https://jira.hpdd.intel.com/browse/LU-8837</a><br>
&gt;<br>
&gt; Separate client/server functionality. Functions only used by server can be<br>
&gt; removed from client. Most of this has been done but we need a inspect of the<br>
&gt; code to make sure.<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-8964">https://jira.hpdd.intel.com/browse/LU-8964</a><br>
&gt;<br>
&gt; Lustre client readahead/writeback control needs to better suit kernel providings.<br>
&gt; Currently its being explored. We could end up replacing the CLIO read ahead<br>
&gt; abstract with the kernel proper version.<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9862">https://jira.hpdd.intel.com/browse/LU-9862</a><br>
&gt;<br>
&gt; Patch that landed for LU-7890 leads to static checker errors<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-9868">https://jira.hpdd.intel.com/browse/LU-9868</a><br>
&gt;<br>
&gt; dcache/namei fixes for lustre<br>
&gt; ------------------------------------------------------------------------------<br>
&gt;<br>
&gt; <a href="https://jira.hpdd.intel.com/browse/LU-10467">https://jira.hpdd.intel.com/browse/LU-10467</a><br>
&gt;<br>
&gt; use standard linux wait_events macros work by Neil Brown<br>
&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
</div>
</span></font></div>
</body>
</html>