All of lore.kernel.org
 help / color / mirror / Atom feed
From: Doug Oucharek <doucharek@cray.com>
To: lustre-devel@lists.lustre.org
Subject: [lustre-devel] [PATCH 00/24] lustre - more cleanups including module reduction.
Date: Thu, 28 Jun 2018 17:03:55 +0000	[thread overview]
Message-ID: <5993F8BE-E55C-4E75-BB1B-E7C25B79D73A@cray.com> (raw)
In-Reply-To: <E70889E4-794F-495D-B40C-97BA4F05EBB0@cray.com>

Yes, Al Viro had started the process of getting Lustre in the upstream staging area to use iov_iter and, I believe, biovec.  A very good change in my opinion as it gets rid of the duality.  Unfortunately, those changes have not made their way into the Whamcloud tree yet so there is a disconnect when working between the two trees.  James Simmons might know more, but I don?t believe Al?s changes are complete so there is still a need to support iovec and kvec.  Could we replace these two with biovecs?  James?

As Cory says, lets make the right architectural decisions and let companies (Whamcloud, Cray, etc) absorb the improvements.  We can adapt DVS as required.

As for LNet as a module: please keep it as a separate module.  Merging it into Lustre would create a dependency for DVS to have Lustre installed and possibly running.  This would also stand in the way of any potential future users of LNet.  Andreas pointed out one, Zest (search for LNET in this paper: https://www.psc.edu/images/zest/zest-pdsw08-paper.pdf), but there may be others developing.  LNet could become its own project at some point because of multiple users.

Doug
 
> On Jun 28, 2018, at 8:03 AM, Cory Spitz <spitzcor@cray.com> wrote:
> 
> I know that Doug follows this list closely, but I'm going to flag him here directly, because I know that he has an opinion about kiov / iovec (and a 3rd if I recall correctly).
> 
> Doug told me that (possibly) Al Viro had a proposal or submitted code to simply the kiov usage and that Doug was in favor of it.  Let's choose to make the right architectural call for Lustre/LNet and let Cray worry about keeping our out-of-tree code working.  As Patrick said, Cray pays the price of keeping DVS off to the side (we're wising up, which is why it is now GPL... but don't expect us to publish it on the Internet necessarily... baby-steps).
> 
> Doug, can you weigh-in on this case?
> 
> Thanks,
> -Cory
> 
> -- 
> 
> ?On 6/27/18, 8:59 PM, "lustre-devel on behalf of NeilBrown" <lustre-devel-bounces at lists.lustre.org on behalf of neilb@suse.com> wrote:
> 
>    On Wed, Jun 27 2018, Patrick Farrell wrote:
> 
>> Neil,
>> 
>> We do indeed have such functionality (it?s called DVS and it?s
>> basically a high speed file system projection framework, ala NFS but
>> faster), so the ability to build lnet separately is valuable to us.
>> While it is being open sourced under the GPL, I don?t think there?s
>> any intention to try to upstream it.  The current code isn?t even
>> usable off of Cray systems as it depends on info from user space (that
>> is provided, in the end, from Cray proprietary hardware) to keep its
>> connection/routing tables up to date.  That?s supposedly in the
>> pipeline to get fixed, but it?s still pretty far from generally
>> usable.
>> 
>> But we?d still really appreciate it if lnet stayed separate.  Don?t
>> know if that?s enough for you - I know sometimes *small* stuff is done
>> for out of tree users.  Hopefully this meets that standard.
>> 
> 
>    Ahh - DVS.  That answers a question I just asked in another email.
>    My google-skills don't seem to be up to locating the source code though
>    :-(
> 
>    While I wouldn't knowingly break an interface used by some out-of-tree
>    code without good reason, it is hard to avoid if you don't know what the
>    out-of-tree code does.  It can be very tempting to remove something that
>    isn't being used, but that can certainly hurt out-of-tree code
>    sometimes.
> 
>    A particular example I'm exploring at present is the dual data paths in
>    LNet.  Or maybe it is dual types of Memory Descriptors.
>    There is 'kiov' which uses kernel-virtual addresses and 'iovec' which
>    uses page+offset.
>    The kiov option isn't used in the client code and it seems likely that
>    the server-side code could be converted to use iovec without problems.
> 
>    I'd like to remove the kiov as I wouldn't be able to justify its
>    existence when submitting the client-only code upstream.  But I don't
>    want to remove the option of having an alternate MD type if it really is
>    significantly more efficient in some context.
>    If I know whether DVS used kiov or iovec - and in what way - that would
>    help me to know if I might break something, and to be able to assess the
>    cost.
> 
>    In my mind, the "standard" that you mention is always about
>    practicality.   Code needs to be maintainable - easy to understand and
>    hard to break.  If the LNet interface is clean and well documented in
>    the kernel, then I don't see why we would not at least attempt to
>    preserve it.
> 
>    Thanks,
>    NeilBrown
> 
> 

  reply	other threads:[~2018-06-28 17:03 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-15  7:11 [lustre-devel] [PATCH 00/24] lustre - more cleanups including module reduction NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 18/24] lustre/lnet: move tracefile locking from linux-tracefile.c to tracefile.c NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 17/24] lustre: remove lustre_compat.h NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 21/24] lustre: move remainder of linux-tracefile.c to tracefile.c NeilBrown
2018-06-21  1:37   ` James Simmons
2018-06-22  3:19     ` NeilBrown
2018-06-24 20:29       ` James Simmons
2018-06-24 23:25         ` NeilBrown
2018-06-25 21:52           ` James Simmons
2018-06-15  7:11 ` [lustre-devel] [PATCH 03/24] kbuild: support building of per-directory mod.a NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 16/24] lustre: remove redefinition of module_init() NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 06/24] lustre: build ldlm in the ldlm directory NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 05/24] kbuild: Add documentation for modobj-m NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 11/24] lustre: discard current_n*groups macros NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 04/24] kbuild: disable KBUILD_MODNAME when building for mod.a NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 24/24] lustre: discard TCD_MAX_TYPES NeilBrown
2018-06-21  1:38   ` James Simmons
2018-06-21  4:28     ` NeilBrown
2018-06-24 20:37       ` James Simmons
2018-06-24 23:26         ` NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 13/24] lustre: discard NO_QUOTA and QUOTA_OK NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 01/24] kbuild: detect directories in components of a module NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 22/24] lustre: fold cfs_tracefile_*_arch into their only callers NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 08/24] lustre: use truncate_inode_page in place of truncate_complete_page NeilBrown
2018-06-16  0:17   ` James Simmons
2018-06-16  0:52     ` NeilBrown
2018-06-16  0:59       ` Oleg Drokin
2018-06-18  2:03         ` NeilBrown
2018-06-25  0:02           ` [lustre-devel] [PATCH 1/3] lustre: use generic_error_remove_page() NeilBrown
2018-06-25  0:02             ` [lustre-devel] [PATCH 2/3] lustre: use delete_from_page_cache() for directory pages NeilBrown
2018-06-25  0:03               ` [lustre-devel] [PATCH 3/3] lustre: discard truncate_complete_page() NeilBrown
2018-06-26  0:19                 ` James Simmons
2018-06-25  0:38               ` [lustre-devel] [PATCH 2/3] lustre: use delete_from_page_cache() for directory pages Oleg Drokin
2018-06-26  0:18               ` James Simmons
2018-06-25  0:38             ` [lustre-devel] [PATCH 1/3] lustre: use generic_error_remove_page() Oleg Drokin
2018-06-25  1:57               ` NeilBrown
2018-06-26  0:26                 ` James Simmons
2018-06-26  0:14             ` James Simmons
2018-06-15  7:11 ` [lustre-devel] [PATCH 15/24] lustre: centralize TIMES_SET_FLAGS NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 07/24] lustre: merge libcfs module into lnet NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 09/24] lustre: don't use spare bits in iattr.ia_valid NeilBrown
2018-06-21  1:35   ` James Simmons
2018-06-21  4:19     ` NeilBrown
2018-06-22  2:23       ` NeilBrown
2018-06-24 20:33         ` James Simmons
2018-06-24 23:50           ` NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 20/24] lustre: move tcd locking across to tracefile.c NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 10/24] lustre: remove lustre_patchless_compat.h NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 19/24] lustre: open code cfs_trace_max_debug_mb() into cfs_trace_set_debug_mb() NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 02/24] kbuild: treat a directory listed in a composite object as foo/mod.a NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 14/24] lustre: discard ext2* bit operations NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 12/24] lustre: discard LTIME_S macro NeilBrown
2018-06-15  7:11 ` [lustre-devel] [PATCH 23/24] lustre: renamed CFS_TCD_TYPE_MAX to CFS_TCD_TYPE_CNT NeilBrown
2018-06-21  1:48 ` [lustre-devel] [PATCH 00/24] lustre - more cleanups including module reduction James Simmons
2018-06-21  2:29   ` Patrick Farrell
2018-06-21  2:57     ` James Simmons
2018-06-21  7:22       ` Andreas Dilger
2018-06-21 12:28         ` Patrick Farrell
2018-06-24 20:35           ` James Simmons
2018-06-24 23:40           ` NeilBrown
2018-06-26  1:13             ` James Simmons
2018-06-26 13:51               ` Patrick Farrell
2018-06-27  3:08                 ` NeilBrown
2018-06-27  4:00                   ` Cory Spitz
2018-06-28  1:26                     ` NeilBrown
2018-06-27 11:01                   ` Andreas Dilger
2018-06-27 12:06                     ` Patrick Farrell
2018-06-28  1:59                       ` NeilBrown
2018-06-28  2:35                         ` Patrick Farrell
2018-06-28 23:12                           ` Andreas Dilger
2018-07-05 23:47                             ` James Simmons
2018-07-06  0:01                               ` Doug Oucharek
2018-06-28 15:03                         ` Cory Spitz
2018-06-28 17:03                           ` Doug Oucharek [this message]
2018-07-04 17:54                             ` Alexey Lyashkov
2018-06-28  1:39                     ` NeilBrown
2018-06-21  3:00     ` NeilBrown
2018-06-21  3:42       ` Patrick Farrell
2018-06-24 20:39       ` James Simmons
2018-06-21  2:54   ` NeilBrown
2018-06-24 20:46     ` James Simmons
2018-06-24 23:58       ` NeilBrown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5993F8BE-E55C-4E75-BB1B-E7C25B79D73A@cray.com \
    --to=doucharek@cray.com \
    --cc=lustre-devel@lists.lustre.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.