All of lore.kernel.org
 help / color / mirror / Atom feed
From: NeilBrown <neilb@suse.com>
To: lustre-devel@lists.lustre.org
Subject: [lustre-devel] [PATCH 00/24] lustre - more cleanups including module reduction.
Date: Thu, 28 Jun 2018 11:39:38 +1000	[thread overview]
Message-ID: <87wouj665h.fsf@notabene.neil.brown.name> (raw)
In-Reply-To: <44633E99-07CB-4C40-967C-0B4FE206F29A@whamcloud.com>

On Wed, Jun 27 2018, Andreas Dilger wrote:

> On Jun 27, 2018, at 05:08, NeilBrown <neilb@suse.com> wrote:
>> 
>> On Tue, Jun 26 2018, Patrick Farrell wrote:
>> 
>>> Ah, sorry, lost your mail in the shuffle, Neil.
>>> 
>>> The name, mostly.  ptlrpc is one subdirectory and one subsystem, so I don?t want to use it for a module that explicitly includes all of several.  I?m not sure of a better name immediately - is this module intended to be shared between client and server?
>>> 
>> 
>> Thanks for clarifying.
>> Note that I'm still feeling my way around here so "intended" can at most
>> be a soft intention, open to change.  But yes, I expect this module
>> would ultimately be shared with the server.
>> 
>> I think things should only be in different modules if it might sometimes
>> make sense to use one without the other.
>> 
>> So everything that is always used for a lustre client mount, and is only
>> used for a lustre client mount, should be in a module called "lustre".
>> And everything always and only used for a lustre server should be in a
>> module called (something like) "lustre-server".
>> 
>> It appears to me that ptlrpc, ldlm, and obdclass are always and only
>> used together, but can be used for client or server.  So I think they
>> should be together in a module.
>> 
>> I'm tempted to add lnet to that list.  There has been mention that Cray
>> has some other functionality that uses lnet - if that doesn't use
>> ptlrpc, then maybe that is a case for keeping lnet separate.  However I
>> would rather see it as a potential case to separate lnet from the others
>> at a later date if that functionality from cray ever goes into mainline.
>> 
>> The klnds modules can presumably be used independently(?) so they can
>> sensibly remain as separate modules, though I'm beginning to wonder if
>> lnet can actually function without socklnd, so I wonder if that should
>> be permanently part of the lnet module (with NFS, the xprt_sock code is
>> a permanent part of "sunrpc", while the xprt_rdma (aka rpcrdma) code
>> can be a separate module).
>
> Definitely LNet can run without ksocklnd, and it does so on clients that
> only have IB connections.  Lots of HPC systems have client nodes that do
> not have Ethernet interfaces, since it is a cabling/networking nightmare
> to add a few thousand additional Ethernet cables/ports in addition to the
> IB cables/ports, and it is always possible to run IPoIB for TCP traffic.

Thanks for the clarification.
This came up because I'd been looking at lnet/lib-socket.c and wondering
why that code wasn't in socklnd.  If found that it was also used by
lnet/acceptor which seems to always run a thread that listens on a TCP
port (I think - I skim lots of code while trying to figure out the
big-picture structure).
If there is always a socket acceptor, I thought you might always need a
socket back-end (lnd).

Should the 'acceptor' thing really be part of socklnd?

>
>> In the interests of a concrete strawman, what objections would I get if
>> I suggested that ptlrpc, ldlm, obdclass, lnet, and socklnd were all included in
>> the one module named "lnet" ??
>
> This would break all of the module parameters for ptlrpc.  There are only
> a few obdclass module parameters that are rarely used, so I'm less worried
> about those ones.
>
> Given that lnet is a separate thing, I'd prefer to keep "ptlrpc" and "lnet"
> as separate modules, then "lustre" for the remainder of the client
> code.

This does seem to be the idea that will be most widely accepted.
The module parameters seem to be the main practical issue with merging
modules.  I wouldn't want that to force us to keep things separate that
should be together, but nor do I want to introduce unnecessary
breakage.

>
> The "ptlrpc" module should also include the "fld", "fid", "quota", "mgc"
> modules, since these are shared with the server as well.
>
> Server modules:
> [adilger at mookie ~]$ lsmod | grep ^obdclass
> obdclass             1731964  83 mdd,lod,mdt,osp,ofd,lfsck,ost,mgs,mgc,osd_ldiskfs,fid,fld,lquota,ptlrpc
>
> Client modules:
> [adilger at twoshoes ~]$ lsmod | grep ^obdclass
> obdclass             1568040  86 osc,mgc,lustre,lov,mdc,fid,lmv,fld,ptlrpc

Thanks for this - a useful perspective.
I don't see quota (or lquota) on the client side though ??

>
>
> James, if we are going to move in the direction of having a separate
> "lustre-server" module, it would make sense to land a patch to master
> now that adds both a module alias, as well as a filesystem type alias
> for lustre-server, so that we can start moving systems over to using
> "lustre-server" as the filesystem type in /etc/fstab or HA mounting
> scripts, and it will auto-load the module at the same time.  This might
> also allow the Lustre mount code to be simplified, since I think it has
> some messy code to have the same code, but distinguish between client
> and server mounts.

This sounds like an excellent idea!
I have a patch in my lustre-testing tree (probably will post next week)
which moves the client-side mounting from obdclass to llite.  It is a
nice simplification.

Thanks,
NeilBrown

>
> Cheers, Andreas
> ---
> Andreas Dilger
> Principal Lustre Architect
> Whamcloud
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.lustre.org/pipermail/lustre-devel-lustre.org/attachments/20180628/5d3ab435/attachment.sig>

  parent reply	other threads:[~2018-06-28  1:39 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 02/24] kbuild: treat a directory listed in a composite object as foo/mod.a 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 23/24] lustre: renamed CFS_TCD_TYPE_MAX to CFS_TCD_TYPE_CNT 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 15/24] lustre: centralize TIMES_SET_FLAGS 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 05/24] kbuild: Add documentation for modobj-m 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 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 12/24] lustre: discard LTIME_S macro 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 03/24] kbuild: support building of per-directory mod.a 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 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 06/24] lustre: build ldlm in the ldlm directory 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 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 16/24] lustre: remove redefinition of module_init() 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 01/24] kbuild: detect directories in components of a module 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 07/24] lustre: merge libcfs module into lnet 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
2018-07-04 17:54                             ` Alexey Lyashkov
2018-06-28  1:39                     ` NeilBrown [this message]
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=87wouj665h.fsf@notabene.neil.brown.name \
    --to=neilb@suse.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.