portals/knals/qswnal/autoMakefile
portals/knals/socknal/Makefile
portals/knals/socknal/autoMakefile
-portals/knals/lbnal/Makefile
-portals/knals/lbnal/autoMakefile
portals/libcfs/Makefile
portals/libcfs/autoMakefile
portals/portals/Makefile
ROUTER = 6,
OPENIBNAL = 7,
IIBNAL = 8,
- LBNAL = 9,
NAL_ENUM_END_MARKER
};
#define S_SM 0x00800000
#define S_ASOBD 0x01000000
#define S_CONFOBD 0x02000000
-#define S_LBNAL 0x04000000
/* If you change these values, please keep portals/utils/debug.c
* up to date! */
@BUILD_IIBNAL_TRUE@subdir-m += iibnal
@BUILD_QSWNAL_TRUE@subdir-m += qswnal
subdir-m += socknal
-subdir-m += lbnal
@INCLUDE_RULES@
include $(obj)/../Kernelenv
obj-y = socknal/
-obj-y = lbnal/
# more coming...
# This code is issued under the GNU General Public License.
# See the file COPYING in this distribution
-SUBDIRS = gmnal iibnal openibnal qswnal socknal lbnal
+SUBDIRS = gmnal iibnal openibnal qswnal socknal
+++ /dev/null
-.deps
-Makefile
-.*.cmd
-autoMakefile.in
-autoMakefile
-*.ko
-*.mod.c
-.*.flags
-.tmp_versions
-.depend
+++ /dev/null
-MODULES := klbnal
-klbnal-objs := lbnal.o lbnal_cb.o
-
-@INCLUDE_RULES@
+++ /dev/null
-# Copyright (C) 2001 Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-if MODULES
-modulenet_DATA = klbnal$(KMODEXT)
-endif
-
-MOSTLYCLEANFILES = *.o *.ko *.mod.c
-DIST_SOURCES = $(klbnal-objs:%.o=%.c) lbnal.h
+++ /dev/null
-/*
- * Copyright (C) 2002 Cluster File Systems, Inc.
- * Author: Eric Barton <eric@bartonsoftware.com>
- *
- * Copyright (C) 2002, Lawrence Livermore National Labs (LLNL)
- * W. Marcus Miller - Based on ksocknal
- *
- * This file is part of Portals, http://www.sf.net/projects/lustre/
- *
- * Portals is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * Portals is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Portals; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include "lbnal.h"
-
-nal_t klbnal_api;
-klbnal_data_t klbnal_data;
-ptl_handle_ni_t klbnal_ni;
-
-
-int
-klbnal_cmd (struct portals_cfg *pcfg, void *private)
-{
- LASSERT (pcfg != NULL);
-
- switch (pcfg->pcfg_command) {
- case NAL_CMD_REGISTER_MYNID:
- CDEBUG (D_IOCTL, "setting NID to "LPX64" (was "LPX64")\n",
- pcfg->pcfg_nid, klbnal_lib.libnal_ni.ni_pid.nid);
- klbnal_lib.libnal_ni.ni_pid.nid = pcfg->pcfg_nid;
- return (0);
-
- default:
- return (-EINVAL);
- }
-}
-
-static void
-klbnal_shutdown(nal_t *nal)
-{
- unsigned long flags;
-
- /* NB The first ref was this module! */
- if (nal->nal_refct != 0)
- return;
-
- CDEBUG (D_NET, "shutdown\n");
- LASSERT (nal == &klbnal_api);
-
- switch (klbnal_data.klb_init)
- {
- default:
- LASSERT (0);
-
- case KLB_INIT_ALL:
- libcfs_nal_cmd_unregister(LBNAL);
- /* fall through */
-
- case KLB_INIT_LIB:
- lib_fini (&klbnal_lib);
- break;
-
- case KLB_INIT_NOTHING:
- return;
- }
-
- memset(&klbnal_data, 0, sizeof (klbnal_data));
-
- CDEBUG (D_MALLOC, "done kmem %d\n", atomic_read(&portal_kmemory));
-
- printk (KERN_INFO "Lustre: LB NAL unloaded (final mem %d)\n",
- atomic_read(&portal_kmemory));
- PORTAL_MODULE_UNUSE;
-}
-
-static int
-klbnal_startup (nal_t *nal, ptl_pid_t requested_pid,
- ptl_ni_limits_t *requested_limits,
- ptl_ni_limits_t *actual_limits)
-{
- int rc;
- int i;
- ptl_process_id_t my_process_id;
- int pkmem = atomic_read(&portal_kmemory);
-
- LASSERT (nal == &klbnal_api);
-
- if (nal->nal_refct != 0) {
- if (actual_limits != NULL)
- *actual_limits = klbnal_lib.libnal_ni.ni_actual_limits;
- return (PTL_OK);
- }
-
- LASSERT (klbnal_data.klb_init == KLB_INIT_NOTHING);
-
- CDEBUG (D_MALLOC, "start kmem %d\n", atomic_read(&portal_kmemory));
-
- /* ensure all pointers NULL etc */
- memset (&klbnal_data, 0, sizeof (klbnal_data));
-
- my_process_id.nid = 0;
- my_process_id.pid = requested_pid;
-
- rc = lib_init(&klbnal_lib, nal, my_process_id,
- requested_limits, actual_limits);
- if (rc != PTL_OK) {
- CERROR ("lib_init failed %d\n", rc);
- klbnal_shutdown (nal);
- return (rc);
- }
-
- klbnal_data.klb_init = KLB_INIT_LIB;
-
- rc = libcfs_nal_cmd_register (LBNAL, &klbnal_cmd, NULL);
- if (rc != 0) {
- CERROR ("Can't initialise command interface (rc = %d)\n", rc);
- klbnal_shutdown (nal);
- return (PTL_FAIL);
- }
-
- klbnal_data.klb_init = KLB_INIT_ALL;
-
- printk(KERN_INFO "Lustre: LB NAL (initial mem %d)\n", pkmem);
- PORTAL_MODULE_USE;
-
- return (PTL_OK);
-}
-
-void __exit
-klbnal_finalise (void)
-{
- PtlNIFini(klbnal_ni);
-
- ptl_unregister_nal(LBNAL);
-}
-
-static int __init
-klbnal_initialise (void)
-{
- int rc;
-
- klbnal_api.nal_ni_init = klbnal_startup;
- klbnal_api.nal_ni_fini = klbnal_shutdown;
-
- rc = ptl_register_nal(LBNAL, &klbnal_api);
- if (rc != PTL_OK) {
- CERROR("Can't register LBNAL: %d\n", rc);
- return (-ENOMEM); /* or something... */
- }
-
- return (0);
-}
-
-MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");
-MODULE_DESCRIPTION("Loopback NAL v0.01");
-MODULE_LICENSE("GPL");
-
-module_init (klbnal_initialise);
-module_exit (klbnal_finalise);
+++ /dev/null
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
- * Copyright (C) 2001 Cluster File Systems, Inc. <braam@clusterfs.com>
- *
- * This file is part of Lustre, http://www.lustre.org.
- *
- * Lustre is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * Lustre is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Lustre; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * Basic library routines.
- *
- */
-
-#ifndef _LBNAL_H
-#define _LBNAL_H
-#ifndef EXPORT_SYMTAB
-# define EXPORT_SYMTAB
-#endif
-
-#include <linux/config.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/mm.h>
-#include <linux/string.h>
-#include <linux/stat.h>
-#include <linux/errno.h>
-#include <linux/uio.h>
-
-#define DEBUG_SUBSYSTEM S_LBNAL
-
-#include <linux/kp30.h>
-#include <portals/p30.h>
-#include <portals/lib-p30.h>
-#include <portals/nal.h>
-
-#define KLBD_IOV 153401
-#define KLBD_KIOV 153402
-
-typedef struct
-{
- unsigned int klbd_type;
- unsigned int klbd_niov;
- size_t klbd_offset;
- size_t klbd_nob;
- union {
- struct iovec *iov;
- ptl_kiov_t *kiov;
- } klbd_iov;
-
-} klb_desc_t;
-
-typedef struct
-{
- char klb_init; /* what's been initialised */
-} klbnal_data_t;
-
-/* kqn_init state */
-#define KLB_INIT_NOTHING 0 /* MUST BE ZERO so zeroed state is initialised OK */
-#define KLB_INIT_LIB 1
-#define KLB_INIT_ALL 2
-
-extern lib_nal_t klbnal_lib;
-extern nal_t klbnal_api;
-extern klbnal_data_t klbnal_data;
-
-#endif /* _LBNAL_H */
+++ /dev/null
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
- * Copyright (C) 2002 Cluster File Systems, Inc.
- * Author: Eric Barton <eric@bartonsoftware.com>
- *
- * Copyright (C) 2002, Lawrence Livermore National Labs (LLNL)
- * W. Marcus Miller - Based on ksocknal
- *
- * This file is part of Portals, http://www.sf.net/projects/sandiaportals/
- *
- * Portals is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * Portals is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Portals; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include "lbnal.h"
-
-/*
- * LIB functions follow
- *
- */
-static int
-klbnal_dist(lib_nal_t *nal, ptl_nid_t nid, unsigned long *dist)
-{
- *dist = 0; /* it's me */
- return (0);
-}
-
-static ptl_err_t
-klbnal_send (lib_nal_t *nal,
- void *private,
- lib_msg_t *libmsg,
- ptl_hdr_t *hdr,
- int type,
- ptl_nid_t nid,
- ptl_pid_t pid,
- unsigned int payload_niov,
- struct iovec *payload_iov,
- size_t payload_offset,
- size_t payload_nob)
-{
- klb_desc_t klbd = {
- .klbd_type = KLBD_IOV,
- .klbd_niov = payload_niov,
- .klbd_offset = payload_offset,
- .klbd_nob = payload_nob,
- .klbd_iov.iov = payload_iov};
- ptl_err_t rc;
-
- LASSERT(nid == klbnal_lib.libnal_ni.ni_pid.nid);
-
- rc = lib_parse(&klbnal_lib, hdr, &klbd);
- if (rc == PTL_OK)
- lib_finalize(&klbnal_lib, private, libmsg, PTL_OK);
-
- return rc;
-}
-
-static ptl_err_t
-klbnal_send_pages (lib_nal_t *nal,
- void *private,
- lib_msg_t *libmsg,
- ptl_hdr_t *hdr,
- int type,
- ptl_nid_t nid,
- ptl_pid_t pid,
- unsigned int payload_niov,
- ptl_kiov_t *payload_kiov,
- size_t payload_offset,
- size_t payload_nob)
-{
- klb_desc_t klbd = {
- .klbd_type = KLBD_KIOV,
- .klbd_niov = payload_niov,
- .klbd_offset = payload_offset,
- .klbd_nob = payload_nob,
- .klbd_iov.kiov = payload_kiov};
- ptl_err_t rc;
-
- LASSERT(nid == klbnal_lib.libnal_ni.ni_pid.nid);
-
- rc = lib_parse(&klbnal_lib, hdr, &klbd);
- if (rc == PTL_OK)
- lib_finalize(&klbnal_lib, private, libmsg, PTL_OK);
-
- return rc;
-}
-
-static ptl_err_t
-klbnal_recv(lib_nal_t *nal,
- void *private,
- lib_msg_t *libmsg,
- unsigned int niov,
- struct iovec *iov,
- size_t offset,
- size_t mlen,
- size_t rlen)
-{
- klb_desc_t *klbd = (klb_desc_t *)private;
-
- /* I only handle mapped->mapped matches */
- LASSERT(klbd->klbd_type == KLBD_IOV);
-
- if (mlen == 0)
- return PTL_OK;
-
- while (offset >= iov->iov_len) {
- offset -= iov->iov_len;
- iov++;
- niov--;
- LASSERT(niov > 0);
- }
-
- while (klbd->klbd_offset >= klbd->klbd_iov.iov->iov_len) {
- klbd->klbd_offset -= klbd->klbd_iov.iov->iov_len;
- klbd->klbd_iov.iov++;
- klbd->klbd_niov--;
- LASSERT(klbd->klbd_niov > 0);
- }
-
- do {
- int fraglen = MIN(iov->iov_len - offset,
- klbd->klbd_iov.iov->iov_len - klbd->klbd_offset);
-
- LASSERT(niov > 0);
- LASSERT(klbd->klbd_niov > 0);
-
- if (fraglen > mlen)
- fraglen = mlen;
-
- memcpy((void *)((unsigned long)iov->iov_base + offset),
- (void *)((unsigned long)klbd->klbd_iov.iov->iov_base +
- klbd->klbd_offset),
- fraglen);
-
- if (offset + fraglen < iov->iov_len) {
- offset += fraglen;
- } else {
- offset = 0;
- iov++;
- niov--;
- }
-
- if (klbd->klbd_offset + fraglen < klbd->klbd_iov.iov->iov_len ) {
- klbd->klbd_offset += fraglen;
- } else {
- klbd->klbd_offset = 0;
- klbd->klbd_iov.iov++;
- klbd->klbd_niov--;
- }
-
- mlen -= fraglen;
- } while (mlen > 0);
-
- lib_finalize(&klbnal_lib, private, libmsg, PTL_OK);
- return PTL_OK;
-}
-
-static ptl_err_t
-klbnal_recv_pages(lib_nal_t *nal,
- void *private,
- lib_msg_t *libmsg,
- unsigned int niov,
- ptl_kiov_t *kiov,
- size_t offset,
- size_t mlen,
- size_t rlen)
-{
- void *srcaddr = NULL;
- void *dstaddr = NULL;
- unsigned long srcfrag = 0;
- unsigned long dstfrag = 0;
- unsigned long fraglen;
- klb_desc_t *klbd = (klb_desc_t *)private;
-
- /* I only handle unmapped->unmapped matches */
- LASSERT(klbd->klbd_type == KLBD_KIOV);
-
- if (mlen == 0)
- return PTL_OK;
-
- while (offset >= kiov->kiov_len) {
- offset -= kiov->kiov_len;
- kiov++;
- niov--;
- LASSERT(niov > 0);
- }
-
- while (klbd->klbd_offset >= klbd->klbd_iov.kiov->kiov_len) {
- klbd->klbd_offset -= klbd->klbd_iov.kiov->kiov_len;
- klbd->klbd_iov.kiov++;
- klbd->klbd_niov--;
- LASSERT(klbd->klbd_niov > 0);
- }
-
- do {
- /* CAVEAT EMPTOR: I kmap 2 pages at once == slight risk of deadlock */
- LASSERT(niov > 0);
- if (dstaddr == NULL) {
- dstaddr = (void *)((unsigned long)kmap(kiov->kiov_page) +
- kiov->kiov_offset + offset);
- dstfrag = kiov->kiov_len - offset;
- }
-
- LASSERT(klbd->klbd_niov > 0);
- if (srcaddr == NULL) {
- srcaddr = (void *)((unsigned long)kmap(klbd->klbd_iov.kiov->kiov_page) +
- klbd->klbd_iov.kiov->kiov_offset + klbd->klbd_offset);
- srcfrag = klbd->klbd_iov.kiov->kiov_len - klbd->klbd_offset;
- }
-
- fraglen = MIN(srcfrag, dstfrag);
- if (fraglen > mlen)
- fraglen = mlen;
-
- memcpy(dstaddr, srcaddr, fraglen);
-
- if (fraglen < dstfrag) {
- dstfrag -= fraglen;
- dstaddr = (void *)((unsigned long)dstaddr + fraglen);
- } else {
- kunmap(kiov->kiov_page);
- dstaddr = NULL;
- offset = 0;
- kiov++;
- niov--;
- }
-
- if (fraglen < srcfrag) {
- srcfrag -= fraglen;
- srcaddr = (void *)((unsigned long)srcaddr + fraglen);
- } else {
- kunmap(klbd->klbd_iov.kiov->kiov_page);
- srcaddr = NULL;
- klbd->klbd_offset = 0;
- klbd->klbd_iov.kiov++;
- klbd->klbd_niov--;
- }
-
- mlen -= fraglen;
- } while (mlen > 0);
-
- if (dstaddr != NULL)
- kunmap(kiov->kiov_page);
-
- if (srcaddr != NULL)
- kunmap(klbd->klbd_iov.kiov->kiov_page);
-
- lib_finalize(&klbnal_lib, private, libmsg, PTL_OK);
- return PTL_OK;
-}
-
-lib_nal_t klbnal_lib =
-{
- libnal_data: &klbnal_data, /* NAL private data */
- libnal_send: klbnal_send,
- libnal_send_pages: klbnal_send_pages,
- libnal_recv: klbnal_recv,
- libnal_recv_pages: klbnal_recv_pages,
- libnal_dist: klbnal_dist
-};
{"gm", GMNAL},
{"openib", OPENIBNAL},
{"iib", IIBNAL},
- {"lb", LBNAL},
{NULL, -1}
};
{OPENIBNAL, "openibnal"},
{IIBNAL, "iibnal"},
{TCPNAL, "tcpnal"},
- {LBNAL, "lbnal"},
#else
{CRAY_KB_ERNAL, "cray_kb_ernal"},
#endif
"ptlrouter" : (1 << 20),
"cobd" : (1 << 21),
"ibnal" : (1 << 22),
- "lbnal" : (1 << 23),
}
local = elan_id
except IOError, e:
log(e)
- elif net_type == 'lb':
- fixme("automatic local address for loopback")
elif net_type == 'gm':
fixme("automatic local address for GM")
self.add_portals_module("knals/openibnal", 'kopenibnal')
if self.net_type == 'iib':
self.add_portals_module("knals/iibnal", 'kiibnal')
- if self.net_type == 'lb':
- self.add_portals_module("knals/lbnal", 'klbnal')
def nid_to_uuid(self, nid):
return "NID_%s_UUID" %(nid,)
if net_type in ('tcp',):
port = get_option_int(options, 'port')
- elif net_type in ('elan', 'gm', 'openib','iib','lb'):
+ elif net_type in ('elan', 'gm', 'openib','iib'):
port = 0
else:
print "Unknown net_type: ", net_type