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