2015-05-22

From: James Simmons <uja.ornl@yahoo.com>

Currently the lnet headers used for user land applications

contain various kernel definations. This is due to the

fact libcfs contains kernel wrappers for user land which

will be going away. This patch sorted the header data

so all kernel containing structures are moved out of

headers that user land will use.

Signed-off-by: James Simmons <uja.ornl@gmail.com>

Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-6245

Reviewed-on: http://review.whamcloud.com/13792

Reviewed-by: John L. Hammond <john.hammond@intel.com>

Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>

---

.../staging/lustre/include/linux/libcfs/libcfs.h | 4 -

.../lustre/include/linux/libcfs/libcfs_private.h | 51 --

.../lustre/include/linux/lnet/api-support.h | 44 --

drivers/staging/lustre/include/linux/lnet/api.h | 51 +-

.../staging/lustre/include/linux/lnet/lib-lnet.h | 249 +-------

.../staging/lustre/include/linux/lnet/lib-types.h | 649 +++++++++-----------

.../lustre/include/linux/lnet/linux/api-support.h | 42 --

.../lustre/include/linux/lnet/linux/lib-lnet.h | 71 ---

.../lustre/include/linux/lnet/linux/lib-types.h | 45 --

.../staging/lustre/include/linux/lnet/linux/lnet.h | 56 --

.../lustre/include/linux/lnet/lnet-sysctl.h | 49 --

drivers/staging/lustre/include/linux/lnet/lnet.h | 11 +-

.../staging/lustre/include/linux/lnet/lnetctl.h | 36 +-

drivers/staging/lustre/include/linux/lnet/lnetst.h | 665 ++++++++++++--------

drivers/staging/lustre/include/linux/lnet/nidstr.h | 73 +++

drivers/staging/lustre/include/linux/lnet/ptllnd.h | 93 ---

.../lustre/include/linux/lnet/ptllnd_wire.h | 119 ----

.../staging/lustre/include/linux/lnet/socklnd.h | 91 ++--

drivers/staging/lustre/include/linux/lnet/types.h | 266 +++++++--

.../staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c | 2 +-

.../staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h | 9 +-

.../staging/lustre/lnet/klnds/socklnd/socklnd.h | 1 -

.../lustre/lnet/klnds/socklnd/socklnd_lib-linux.c | 4 +-

drivers/staging/lustre/lnet/lnet/acceptor.c | 2 -

drivers/staging/lustre/lnet/lnet/api-ni.c | 100 +---

drivers/staging/lustre/lnet/lnet/lib-eq.c | 2 +-

drivers/staging/lustre/lnet/lnet/lib-md.c | 6 +-

drivers/staging/lustre/lnet/lnet/lib-me.c | 24 +-

drivers/staging/lustre/lnet/lnet/lib-msg.c | 22 +-

drivers/staging/lustre/lnet/lnet/module.c | 4 +-

drivers/staging/lustre/lnet/lnet/router.c | 145 -----

drivers/staging/lustre/lustre/include/lustre_net.h | 4 +-

32 files changed, 1149 insertions(+), 1841 deletions(-)

delete mode 100644 drivers/staging/lustre/include/linux/lnet/api-support.h

delete mode 100644 drivers/staging/lustre/include/linux/lnet/linux/api-support.h

delete mode 100644 drivers/staging/lustre/include/linux/lnet/linux/lib-lnet.h

delete mode 100644 drivers/staging/lustre/include/linux/lnet/linux/lib-types.h

delete mode 100644 drivers/staging/lustre/include/linux/lnet/linux/lnet.h

delete mode 100644 drivers/staging/lustre/include/linux/lnet/lnet-sysctl.h

create mode 100644 drivers/staging/lustre/include/linux/lnet/nidstr.h

delete mode 100644 drivers/staging/lustre/include/linux/lnet/ptllnd.h

delete mode 100644 drivers/staging/lustre/include/linux/lnet/ptllnd_wire.h

diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs.h b/drivers/staging/lustre/include/linux/libcfs/libcfs.h

index f54bab6..aae9487 100644

--- a/drivers/staging/lustre/include/linux/libcfs/libcfs.h

+++ b/drivers/staging/lustre/include/linux/libcfs/libcfs.h

@@ -46,10 +46,6 @@

#include "curproc.h"

-#ifndef offsetof

-# define offsetof(typ, memb) ((long)(long_ptr_t)((char *)&(((typ *)0)->memb)))

-#endif

-

#ifndef ARRAY_SIZE

#define ARRAY_SIZE(a) ((sizeof(a)) / (sizeof((a)[0])))

#endif

diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h b/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h

index fef8825..6174946 100644

--- a/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h

+++ b/drivers/staging/lustre/include/linux/libcfs/libcfs_private.h

@@ -410,36 +410,6 @@ int cfs_percpt_atomic_summary(atomic_t **refs);

*/

#define CLASSERT(cond) do {switch (42) {case (cond): case 0: break; } } while (0)

-/* support decl needed both by kernel and liblustre */

-int libcfs_isknown_lnd(int type);

-char *libcfs_lnd2modname(int type);

-char *libcfs_lnd2str(int type);

-int libcfs_str2lnd(const char *str);

-char *libcfs_net2str(__u32 net);

-char *libcfs_nid2str(lnet_nid_t nid);

-__u32 libcfs_str2net(const char *str);

-lnet_nid_t libcfs_str2nid(const char *str);

-int libcfs_str2anynid(lnet_nid_t *nid, const char *str);

-char *libcfs_id2str(lnet_process_id_t id);

-void cfs_free_nidlist(struct list_head *list);

-int cfs_parse_nidlist(char *str, int len, struct list_head *list);

-int cfs_match_nid(lnet_nid_t nid, struct list_head *list);

-

-/** \addtogroup lnet_addr

- * @{ */

-/* how an LNET NID encodes net:address */

-/** extract the address part of an lnet_nid_t */

-#define LNET_NIDADDR(nid) ((__u32)((nid) & 0xffffffff))

-/** extract the network part of an lnet_nid_t */

-#define LNET_NIDNET(nid) ((__u32)(((nid) >> 32)) & 0xffffffff)

-/** make an lnet_nid_t from a network part and an address part */

-#define LNET_MKNID(net, addr) ((((__u64)(net))<<32)|((__u64)(addr)))

-/* how net encodes type:number */

-#define LNET_NETNUM(net) ((net) & 0xffff)

-#define LNET_NETTYP(net) (((net) >> 16) & 0xffff)

-#define LNET_MKNET(typ, num) ((((__u32)(typ))<<16)|((__u32)(num)))

-/** @} lnet_addr */

-

/* max value for numeric network address */

#define MAX_NUMERIC_VALUE 0xffffffff

@@ -532,25 +502,4 @@ do { \

ptr += cfs_size_round(len + 1); \

} while (0)

-/**

- * Lustre Network Driver types.

- */

-enum {

- /* Only add to these values (i.e. don't ever change or redefine them):

- * network addresses depend on them... */

- QSWLND = 1,

- SOCKLND = 2,

- GMLND = 3, /* obsolete, keep it so that libcfs_nid2str works */

- PTLLND = 4,

- O2IBLND = 5,

- CIBLND = 6,

- OPENIBLND = 7,

- IIBLND = 8,

- LOLND = 9,

- RALND = 10,

- VIBLND = 11,

- MXLND = 12,

- GNILND = 13,

-};

-

#endif

diff --git a/drivers/staging/lustre/include/linux/lnet/api-support.h b/drivers/staging/lustre/include/linux/lnet/api-support.h

deleted file mode 100644

index 8f7fa28..0000000

--- a/drivers/staging/lustre/include/linux/lnet/api-support.h

+++ /dev/null

@@ -1,44 +0,0 @@

-/*

- * GPL HEADER START

- *

- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

- *

- * This program is free software; you can redistribute it and/or modify

- * it under the terms of the GNU General Public License version 2 only,

- * as published by the Free Software Foundation.

- *

- * This program 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 version 2 for more details (a copy is included

- * in the LICENSE file that accompanied this code).

- *

- * You should have received a copy of the GNU General Public License

- * version 2 along with this program; If not, see

- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf

- *

- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,

- * CA 95054 USA or visit www.sun.com if you need additional information or

- * have any questions.

- *

- * GPL HEADER END

- */

-/*

- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.

- * Use is subject to license terms.

- */

-/*

- * This file is part of Lustre, http://www.lustre.org/

- * Lustre is a trademark of Sun Microsystems, Inc.

- */

-

-#ifndef __LNET_API_SUPPORT_H__

-#define __LNET_API_SUPPORT_H__

-

-#include "linux/api-support.h"

-

-#include "../libcfs/libcfs.h"

-#include "types.h"

-#include "lnet.h"

-

-#endif

diff --git a/drivers/staging/lustre/include/linux/lnet/api.h b/drivers/staging/lustre/include/linux/lnet/api.h

index cd86517..76fb6fd 100644

--- a/drivers/staging/lustre/include/linux/lnet/api.h

+++ b/drivers/staging/lustre/include/linux/lnet/api.h

@@ -15,21 +15,19 @@

*

* You should have received a copy of the GNU General Public License

* version 2 along with this program; If not, see

- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf

- *

- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,

- * CA 95054 USA or visit www.sun.com if you need additional information or

- * have any questions.

+ * http://www.gnu.org/licenses/gpl-2.0.html

*

* GPL HEADER END

*/

/*

* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.

* Use is subject to license terms.

+ *

+ * Copyright (c) 2011, 2015, Intel Corporation.

*/

/*

* This file is part of Lustre, http://www.lustre.org/

- * Lustre is a trademark of Sun Microsystems, Inc.

+ * Lustre is a trademark of Seagate, Inc.

*/

#ifndef __LNET_API_H__

@@ -41,20 +39,15 @@

*

* LNet is an asynchronous message-passing API, which provides an unreliable

* connectionless service that can't guarantee any order. It supports OFA IB,

- * TCP/IP, and Cray Portals, and routes between heterogeneous networks.

- *

- * LNet can run both in OS kernel space and in userspace as a library.

+ * TCP/IP, and Cray Interconnects, and routes between heterogeneous networks.

* @{

*/

-#include "../lnet/types.h"

+#include "types.h"

/** \defgroup lnet_init_fini Initialization and cleanup

* The LNet must be properly initialized before any LNet calls can be made.

* @{ */

-int LNetInit(void);

-void LNetFini(void);

-

int LNetNIInit(lnet_pid_t requested_pid);

int LNetNIFini(void);

/** @} lnet_init_fini */

@@ -84,6 +77,7 @@ void LNetSnprintHandle(char *str, int str_len, lnet_handle_any_t handle);

/** @} lnet_addr */

+

/** \defgroup lnet_me Match entries

*

* A match entry (abbreviated as ME) describes a set of criteria to accept

@@ -98,16 +92,16 @@ void LNetSnprintHandle(char *str, int str_len, lnet_handle_any_t handle);

* @{ */

int LNetMEAttach(unsigned int portal,

lnet_process_id_t match_id_in,

- __u64 match_bits_in,

- __u64 ignore_bits_in,

+ __u64 match_bits_in,

+ __u64 ignore_bits_in,

lnet_unlink_t unlink_in,

lnet_ins_pos_t pos_in,

lnet_handle_me_t *handle_out);

int LNetMEInsert(lnet_handle_me_t current_in,

lnet_process_id_t match_id_in,

- __u64 match_bits_in,

- __u64 ignore_bits_in,

+ __u64 match_bits_in,

+ __u64 ignore_bits_in,

lnet_unlink_t unlink_in,

lnet_ins_pos_t position_in,

lnet_handle_me_t *handle_out);

@@ -128,11 +122,11 @@ int LNetMEUnlink(lnet_handle_me_t current_in);

* associated with a MD: LNetMDUnlink().

* @{ */

int LNetMDAttach(lnet_handle_me_t current_in,

- lnet_md_t md_in,

+ lnet_md_t md_in,

lnet_unlink_t unlink_in,

lnet_handle_md_t *handle_out);

-int LNetMDBind(lnet_md_t md_in,

+int LNetMDBind(lnet_md_t md_in,

lnet_unlink_t unlink_in,

lnet_handle_md_t *handle_out);

@@ -170,14 +164,15 @@ int LNetEQFree(lnet_handle_eq_t eventq_in);

int LNetEQGet(lnet_handle_eq_t eventq_in,

lnet_event_t *event_out);

+

int LNetEQWait(lnet_handle_eq_t eventq_in,

lnet_event_t *event_out);

int LNetEQPoll(lnet_handle_eq_t *eventqs_in,

- int neq_in,

- int timeout_ms,

+ int neq_in,

+ int timeout_ms,

lnet_event_t *event_out,

- int *which_eq_out);

+ int *which_eq_out);

/** @} lnet_eq */

/** \defgroup lnet_data Data movement operations

@@ -185,23 +180,24 @@ int LNetEQPoll(lnet_handle_eq_t *eventqs_in,

* The LNet API provides two data movement operations: LNetPut()

* and LNetGet().

* @{ */

-int LNetPut(lnet_nid_t self,

+int LNetPut(lnet_nid_t self,

lnet_handle_md_t md_in,

lnet_ack_req_t ack_req_in,

lnet_process_id_t target_in,

unsigned int portal_in,

- __u64 match_bits_in,

+ __u64 match_bits_in,

unsigned int offset_in,

- __u64 hdr_data_in);

+ __u64 hdr_data_in);

-int LNetGet(lnet_nid_t self,

+int LNetGet(lnet_nid_t self,

lnet_handle_md_t md_in,

lnet_process_id_t target_in,

unsigned int portal_in,

- __u64 match_bits_in,

+ __u64 match_bits_in,

unsigned int offset_in);

/** @} lnet_data */

+

/** \defgroup lnet_misc Miscellaneous operations.

* Miscellaneous operations.

* @{ */

@@ -209,7 +205,6 @@ int LNetGet(lnet_nid_t self,

int LNetSetLazyPortal(int portal);

int LNetClearLazyPortal(int portal);

int LNetCtl(unsigned int cmd, void *arg);

-int LNetSetAsync(lnet_process_id_t id, int nasync);

/** @} lnet_misc */

diff --git a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h

index c00a2ca..5eacae4 100644

--- a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h

+++ b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h

@@ -15,11 +15,7 @@

*

* You should have received a copy of the GNU General Public License

* version 2 along with this program; If not, see

- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf

- *

- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,

- * CA 95054 USA or visit www.sun.com if you need additional information or

- * have any questions.

+ * http://www.gnu.org/licenses/gpl-2.0.html

*

* GPL HEADER END

*/

@@ -27,56 +23,46 @@

* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.

* Use is subject to license terms.

*

- * Copyright (c) 2012, Intel Corporation.

+ * Copyright (c) 2011, 2014, Intel Corporation.

*/

/*

* This file is part of Lustre, http://www.lustre.org/

- * Lustre is a trademark of Sun Microsystems, Inc.

+ * Lustre is a trademark of Seagate, Inc.

*

* lnet/include/lnet/lib-lnet.h

- *

- * Top level include for library side routines

*/

#ifndef __LNET_LIB_LNET_H__

#define __LNET_LIB_LNET_H__

-#include "linux/lib-lnet.h"

#include "../libcfs/libcfs.h"

-#include "types.h"

+#include "api.h"

#include "lnet.h"

#include "lib-types.h"

-extern lnet_t the_lnet; /* THE network */

-

-#if defined(LNET_USE_LIB_FREELIST)

-/* 1 CPT, simplify implementation... */

-# define LNET_CPT_MAX_BITS 0

-

-#else /* KERNEL and no freelist */

+extern lnet_t the_lnet; /* THE network */

-# if (BITS_PER_LONG == 32)

+#if (BITS_PER_LONG == 32)

/* 2 CPTs, allowing more CPTs might make us under memory pressure */

-# define LNET_CPT_MAX_BITS 1

+# define LNET_CPT_MAX_BITS 1

-# else /* 64-bit system */

+#else /* 64-bit system */

/*

* 256 CPTs for thousands of CPUs, allowing more CPTs might make us

* under risk of consuming all lh_cookie.

*/

-# define LNET_CPT_MAX_BITS 8

-# endif /* BITS_PER_LONG == 32 */

-#endif

+# define LNET_CPT_MAX_BITS 8

+#endif /* BITS_PER_LONG == 32 */

/* max allowed CPT number */

-#define LNET_CPT_MAX (1 << LNET_CPT_MAX_BITS)

+#define LNET_CPT_MAX (1 << LNET_CPT_MAX_BITS)

-#define LNET_CPT_NUMBER (the_lnet.ln_cpt_number)

-#define LNET_CPT_BITS (the_lnet.ln_cpt_bits)

-#define LNET_CPT_MASK ((1ULL << LNET_CPT_BITS) - 1)

+#define LNET_CPT_NUMBER (the_lnet.ln_cpt_number)

+#define LNET_CPT_BITS (the_lnet.ln_cpt_bits)

+#define LNET_CPT_MASK ((1ULL << LNET_CPT_BITS) - 1)

/** exclusive lock */

-#define LNET_LOCK_EX CFS_PERCPT_LOCK_EX

+#define LNET_LOCK_EX CFS_PERCPT_LOCK_EX

static inline int lnet_is_wire_handle_none(lnet_handle_wire_t *wh)

{

@@ -177,191 +163,9 @@ lnet_net_lock_current(void)

#define MAX_PORTALS 64

-/* these are only used by code with LNET_USE_LIB_FREELIST, but we still

- * exported them to !LNET_USE_LIB_FREELIST for easy implementation */

-#define LNET_FL_MAX_MES 2048

-#define LNET_FL_MAX_MDS 2048

-#define LNET_FL_MAX_EQS 512

-#define LNET_FL_MAX_MSGS 2048 /* Outstanding messages */

-

-#ifdef LNET_USE_LIB_FREELIST

-

-int lnet_freelist_init(lnet_freelist_t *fl, int n, int size);

-void lnet_freelist_fini(lnet_freelist_t *fl);

-

-static inline void *

-lnet_freelist_alloc(lnet_freelist_t *fl)

-{

- /* ALWAYS called with liblock held */

- lnet_freeobj_t *o;

-

- if (list_empty(&fl->fl_list))

- return NULL;

-

- o = list_entry(fl->fl_list.next, lnet_freeobj_t, fo_list);

- list_del(&o->fo_list);

- return (void *)&o->fo_contents;

-}

-

-static inline void

-lnet_freelist_free(lnet_freelist_t *fl, void *obj)

-{

- /* ALWAYS called with liblock held */

- lnet_freeobj_t *o = list_entry(obj, lnet_freeobj_t, fo_contents);

-

- list_add(&o->fo_list, &fl->fl_list);

-}

-

static inline lnet_eq_t *

lnet_eq_alloc(void)

{

- /* NEVER called with resource lock held */

- struct lnet_res_container *rec = &the_lnet.ln_eq_container;

- lnet_eq_t *eq;

-

- LASSERT(LNET_CPT_NUMBER == 1);

-

- lnet_res_lock(0);

- eq = (lnet_eq_t *)lnet_freelist_alloc(&rec->rec_freelist);

- lnet_res_unlock(0);

-

- return eq;

-}

-

-static inline void

-lnet_eq_free_locked(lnet_eq_t *eq)

-{

- /* ALWAYS called with resource lock held */

- struct lnet_res_container *rec = &the_lnet.ln_eq_container;

-

- LASSERT(LNET_CPT_NUMBER == 1);

- lnet_freelist_free(&rec->rec_freelist, eq);

-}

-

-static inline void

-lnet_eq_free(lnet_eq_t *eq)

-{

- lnet_res_lock(0);

- lnet_eq_free_locked(eq);

- lnet_res_unlock(0);

-}

-

-static inline lnet_libmd_t *

-lnet_md_alloc(lnet_md_t *umd)

-{

- /* NEVER called with resource lock held */

- struct lnet_res_container *rec = the_lnet.ln_md_containers[0];

- lnet_libmd_t *md;

-

- LASSERT(LNET_CPT_NUMBER == 1);

-

- lnet_res_lock(0);

- md = (lnet_libmd_t *)lnet_freelist_alloc(&rec->rec_freelist);

- lnet_res_unlock(0);

-

- if (md != NULL)

- INIT_LIST_HEAD(&md->md_list);

-

- return md;

-}

-

-static inline void

-lnet_md_free_locked(lnet_libmd_t *md)

-{

- /* ALWAYS called with resource lock held */

- struct lnet_res_container *rec = the_lnet.ln_md_containers[0];

-

- LASSERT(LNET_CPT_NUMBER == 1);

- lnet_freelist_free(&rec->rec_freelist, md);

-}

-

-static inline void

-lnet_md_free(lnet_libmd_t *md)

-{

- lnet_res_lock(0);

- lnet_md_free_locked(md);

- lnet_res_unlock(0);

-}

-

-static inline lnet_me_t *

-lnet_me_alloc(void)

-{

- /* NEVER called with resource lock held */

- struct lnet_res_container *rec = the_lnet.ln_me_containers[0];

- lnet_me_t *me;

-

- LASSERT(LNET_CPT_NUMBER == 1);

-

- lnet_res_lock(0);

- me = (lnet_me_t *)lnet_freelist_alloc(&rec->rec_freelist);

- lnet_res_unlock(0);

-

- return me;

-}

-

-static inline void

-lnet_me_free_locked(lnet_me_t *me)

-{

- /* ALWAYS called with resource lock held */

- struct lnet_res_container *rec = the_lnet.ln_me_containers[0];

-

- LASSERT(LNET_CPT_NUMBER == 1);

- lnet_freelist_free(&rec->rec_freelist, me);

-}

-

-static inline void

-lnet_me_free(lnet_me_t *me)

-{

- lnet_res_lock(0);

- lnet_me_free_locked(me);

- lnet_res_unlock(0);

-}

-

-static inline lnet_msg_t *

-lnet_msg_alloc(void)

-{

- /* NEVER called with network lock held */

- struct lnet_msg_container *msc = the_lnet.ln_msg_containers[0];

- lnet_msg_t *msg;

-

- LASSERT(LNET_CPT_NUMBER == 1);

-

- lnet_net_lock(0);

- msg = (lnet_msg_t *)lnet_freelist_alloc(&msc->msc_freelist);

- lnet_net_unlock(0);

-

- if (msg != NULL) {

- /* NULL pointers, clear flags etc */

- memset(msg, 0, sizeof(*msg));

- }

- return msg;

-}

-

-static inline void

-lnet_msg_free_locked(lnet_msg_t *msg)

-{

- /* ALWAYS called with network lock held */

- struct lnet_msg_container *msc = the_lnet.ln_msg_containers[0];

-

- LASSERT(LNET_CPT_NUMBER == 1);

- LASSERT(!msg->msg_onactivelist);

- lnet_freelist_free(&msc->msc_freelist, msg);

-}

-

-static inline void

-lnet_msg_free(lnet_msg_t *msg)

-{

- lnet_net_lock(0);

- lnet_msg_free_locked(msg);

- lnet_net_unlock(0);

-}

-

-#else /* !LNET_USE_LIB_FREELIST */

-

-static inline lnet_eq_t *

-lnet_eq_alloc(void)

-{

- /* NEVER called with liblock held */

lnet_eq_t *eq;

LIBCFS_ALLOC(eq, sizeof(*eq));

@@ -371,14 +175,12 @@ lnet_eq_alloc(void)

static inline void

lnet_eq_free(lnet_eq_t *eq)

{

- /* ALWAYS called with resource lock held */

LIBCFS_FREE(eq, sizeof(*eq));

}

static inline lnet_libmd_t *

lnet_md_alloc(lnet_md_t *umd)

{

- /* NEVER called with liblock held */

lnet_libmd_t *md;

unsigned int size;

unsigned int niov;

@@ -407,7 +209,6 @@ lnet_md_alloc(lnet_md_t *umd)

static inline void

lnet_md_free(lnet_libmd_t *md)

{

- /* ALWAYS called with resource lock held */

unsigned int size;

if ((md->md_options & LNET_MD_KIOV) != 0)

@@ -421,7 +222,6 @@ lnet_md_free(lnet_libmd_t *md)

static inline lnet_me_t *

lnet_me_alloc(void)

{

- /* NEVER called with liblock held */

lnet_me_t *me;

LIBCFS_ALLOC(me, sizeof(*me));

@@ -431,14 +231,12 @@ lnet_me_alloc(void)

static inline void

lnet_me_free(lnet_me_t *me)

{

- /* ALWAYS called with resource lock held */

LIBCFS_FREE(me, sizeof(*me));

}

static inline lnet_msg_t *

lnet_msg_alloc(void)

{

- /* NEVER called with liblock held */

lnet_msg_t *msg;

LIBCFS_ALLOC(msg, sizeof(*msg));

@@ -450,18 +248,10 @@ lnet_msg_alloc(void)

static inline void

lnet_msg_free(lnet_msg_t *msg)

{

- /* ALWAYS called with network lock held */

LASSERT(!msg->msg_onactivelist);

LIBCFS_FREE(msg, sizeof(*msg));

}

-#define lnet_eq_free_locked(eq) lnet_eq_free(eq)

-#define lnet_md_free_locked(md) lnet_md_free(md)

-#define lnet_me_free_locked(me) lnet_me_free(me)

-#define lnet_msg_free_locked(msg) lnet_msg_free(msg)

-

-#endif /* LNET_USE_LIB_FREELIST */

-

lnet_libhandle_t *lnet_res_lh_lookup(struct lnet_res_container *rec,

__u64 cookie);

void lnet_res_lh_initialize(struct lnet_res_container *rec,

@@ -644,6 +434,9 @@ lnet_ni_t *lnet_nid2ni_locked(lnet_nid_t nid, int cpt);

lnet_ni_t *lnet_net2ni_locked(__u32 net, int cpt);

lnet_ni_t *lnet_net2ni(__u32 net);

+int lnet_init(void);

+void lnet_fini(void);

+

int lnet_notify(lnet_ni_t *ni, lnet_nid_t peer, int alive, unsigned long when);

void lnet_notify_locked(lnet_peer_t *lp, int notifylnd, int alive,

unsigned long when);

@@ -737,7 +530,9 @@ void lnet_recv(lnet_ni_t *ni, void *private, lnet_msg_t *msg, int delayed,

unsigned int offset, unsigned int mlen, unsigned int rlen);

lnet_msg_t *lnet_create_reply_msg(lnet_ni_t *ni, lnet_msg_t *get_msg);

void lnet_set_reply_msg_len(lnet_ni_t *ni, lnet_msg_t *msg, unsigned int len);

+

void lnet_finalize(lnet_ni_t *ni, lnet_msg_t *msg, int rc);

+

void lnet_drop_delayed_msg_list(struct list_head *head, char *reason);

void lnet_recv_delayed_msg_list(struct list_head *head);

@@ -887,12 +682,12 @@ void lnet_peer_tables_destroy(void);

int lnet_peer_tables_create(void);

void lnet_debug_peer(lnet_nid_t nid);

-static inline void lnet_peer_set_alive(lnet_peer_t *lp)

+static inline void

+lnet_peer_set_alive(lnet_peer_t *lp)

{

lp->lp_last_alive = lp->lp_last_query = get_seconds();

if (!lp->lp_alive)

lnet_notify_locked(lp, 0, 1, lp->lp_last_alive);

}

-

#endif

diff --git a/drivers/staging/lustre/include/linux/lnet/lib-types.h b/drivers/staging/lustre/include/linux/lnet/lib-types.h

index 5053766..87acf14 100644

--- a/drivers/staging/lustre/include/linux/lnet/lib-types.h

+++ b/drivers/staging/lustre/include/linux/lnet/lib-types.h

@@ -15,11 +15,7 @@

*

* You should have received a copy of the GNU General Public License

* version 2 along with this program; If not, see

- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf

- *

- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,

- * CA 95054 USA or visit www.sun.com if you need additional information or

- * have any questions.

+ * http://www.gnu.org/licenses/gpl-2.0.html

*

* GPL HEADER END

*/

@@ -27,155 +23,42 @@

* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.

* Use is subject to license terms.

*

- * Copyright (c) 2012, Intel Corporation.

+ * Copyright (c) 2012, 2014, Intel Corporation.

*/

/*

* This file is part of Lustre, http://www.lustre.org/

- * Lustre is a trademark of Sun Microsystems, Inc.

+ * Lustre is a trademark of Seagate, Inc.

*

* lnet/include/lnet/lib-types.h

- *

- * Types used by the library side routines that do not need to be

- * exposed to the user application

*/

#ifndef __LNET_LIB_TYPES_H__

#define __LNET_LIB_TYPES_H__

-#include "linux/lib-types.h"

-

-#include "../libcfs/libcfs.h"

-#include <linux/list.h>

-#include "types.h"

-

-#define WIRE_ATTR __attribute__((packed))

-

-/* Packed version of lnet_process_id_t to transfer via network */

-typedef struct {

- lnet_nid_t nid;

- lnet_pid_t pid; /* node id / process id */

-} WIRE_ATTR lnet_process_id_packed_t;

-

-/* The wire handle's interface cookie only matches one network interface in

- * one epoch (i.e. new cookie when the interface restarts or the node

- * reboots). The object cookie only matches one object on that interface

- * during that object's lifetime (i.e. no cookie re-use). */

-typedef struct {

- __u64 wh_interface_cookie;

- __u64 wh_object_cookie;

-} WIRE_ATTR lnet_handle_wire_t;

-

-typedef enum {

- LNET_MSG_ACK = 0,

- LNET_MSG_PUT,

- LNET_MSG_GET,

- LNET_MSG_REPLY,

- LNET_MSG_HELLO,

-} lnet_msg_type_t;

-

-/* The variant fields of the portals message header are aligned on an 8

- * byte boundary in the message header. Note that all types used in these

- * wire structs MUST be fixed size and the smaller types are placed at the

- * end. */

-typedef struct lnet_ack {

- lnet_handle_wire_t dst_wmd;

- __u64 match_bits;

- __u32 mlength;

-} WIRE_ATTR lnet_ack_t;

-

-typedef struct lnet_put {

- lnet_handle_wire_t ack_wmd;

- __u64 match_bits;

- __u64 hdr_data;

- __u32 ptl_index;

- __u32 offset;

-} WIRE_ATTR lnet_put_t;

-

-typedef struct lnet_get {

- lnet_handle_wire_t return_wmd;

- __u64 match_bits;

- __u32 ptl_index;

- __u32 src_offset;

- __u32 sink_length;

-} WIRE_ATTR lnet_get_t;

-

-typedef struct lnet_reply {

- lnet_handle_wire_t dst_wmd;

-} WIRE_ATTR lnet_reply_t;

-

-typedef struct lnet_hello {

- __u64 incarnation;

- __u32 type;

-} WIRE_ATTR lnet_hello_t;

+#include <linux/kthread.h>

+#include <linux/uio.h>

+#include <linux/types.h>

+#include <net/sock.h>

-typedef struct {

- lnet_nid_t dest_nid;

- lnet_nid_t src_nid;

- lnet_pid_t dest_pid;

- lnet_pid_t src_pid;

- __u32 type; /* lnet_msg_type_t */

- __u32 payload_length; /* payload data to follow */

- /*<------__u64 aligned------->*/

- union {

- lnet_ack_t ack;

- lnet_put_t put;

- lnet_get_t get;

- lnet_reply_t reply;

- lnet_hello_t hello;

- } msg;

-} WIRE_ATTR lnet_hdr_t;

-

-/* A HELLO message contains a magic number and protocol version

- * code in the header's dest_nid, the peer's NID in the src_nid, and

- * LNET_MSG_HELLO in the type field. All other common fields are zero

- * (including payload_size; i.e. no payload).

- * This is for use by byte-stream LNDs (e.g. TCP/IP) to check the peer is

- * running the same protocol and to find out its NID. These LNDs should

- * exchange HELLO messages when a connection is first established. Individual

- * LNDs can put whatever else they fancy in lnet_hdr_t::msg.

- */

-typedef struct {

- __u32 magic; /* LNET_PROTO_TCP_MAGIC */

- __u16 version_major; /* increment on incompatible change */

- __u16 version_minor; /* increment on compatible change */

-} WIRE_ATTR lnet_magicversion_t;

-

-/* PROTO MAGIC for LNDs */

-#define LNET_PROTO_IB_MAGIC 0x0be91b91

-#define LNET_PROTO_RA_MAGIC 0x0be91b92

-#define LNET_PROTO_QSW_MAGIC 0x0be91b93

-#define LNET_PROTO_GNI_MAGIC 0xb00fbabe /* ask Kim */

-#define LNET_PROTO_TCP_MAGIC 0xeebc0ded

-#define LNET_PROTO_PTL_MAGIC 0x50746C4E /* 'PtlN' unique magic */

-#define LNET_PROTO_MX_MAGIC 0x4d583130 /* 'MX10'! */

-#define LNET_PROTO_ACCEPTOR_MAGIC 0xacce7100

-#define LNET_PROTO_PING_MAGIC 0x70696E67 /* 'ping' */

-

-/* Placeholder for a future "unified" protocol across all LNDs */

-/* Current LNDs that receive a request with this magic will respond with a

- * "stub" reply using their current protocol */

-#define LNET_PROTO_MAGIC 0x45726963 /* ! */

-

-#define LNET_PROTO_TCP_VERSION_MAJOR 1

-#define LNET_PROTO_TCP_VERSION_MINOR 0

-

-/* Acceptor connection request */

-typedef struct {

- __u32 acr_magic; /* PTL_ACCEPTOR_PROTO_MAGIC */

- __u32 acr_version; /* protocol version */

- __u64 acr_nid; /* target NID */

-} WIRE_ATTR lnet_acceptor_connreq_t;

+#include "lnetctl.h"

-#define LNET_PROTO_ACCEPTOR_VERSION 1

+/* Max payload size */

+# define LNET_MAX_PAYLOAD CONFIG_LNET_MAX_PAYLOAD

+# if (LNET_MAX_PAYLOAD < LNET_MTU)

+# error "LNET_MAX_PAYLOAD too small - error in configure --with-max-payload-mb"

+# elif (LNET_MAX_PAYLOAD > (PAGE_SIZE * LNET_MAX_IOV))

+# error "LNET_MAX_PAYLOAD too large - error in configure --with-max-payload-mb"

+# endif

/* forward refs */

struct lnet_libmd;

typedef struct lnet_msg {

- struct list_head msg_activelist;

- struct list_head msg_list; /* Q for credits/MD */

+ struct list_head msg_activelist;

+ /* Q for credits/MD */

+ struct list_head msg_list;

- lnet_process_id_t msg_target;

+ lnet_process_id_t msg_target;

/* where is it from, it's only for building event */

lnet_nid_t msg_from;

__u32 msg_type;

@@ -195,110 +78,115 @@ typedef struct lnet_msg {

/* ready for pending on RX delay list */

unsigned int msg_rx_ready_delay:1;

- unsigned int msg_vmflush:1; /* VM trying to free memory */

- unsigned int msg_target_is_router:1; /* sending to a router */

- unsigned int msg_routing:1; /* being forwarded */

- unsigned int msg_ack:1; /* ack on finalize (PUT) */

- unsigned int msg_sending:1; /* outgoing message */

- unsigned int msg_receiving:1; /* being received */

- unsigned int msg_txcredit:1; /* taken an NI send credit */

- unsigned int msg_peertxcredit:1; /* taken a peer send credit */

- unsigned int msg_rtrcredit:1; /* taken a global router credit */

- unsigned int msg_peerrtrcredit:1; /* taken a peer router credit */

- unsigned int msg_onactivelist:1; /* on the activelist */

-

- struct lnet_peer *msg_txpeer; /* peer I'm sending to */

- struct lnet_peer *msg_rxpeer; /* peer I received from */

-

- void *msg_private;

- struct lnet_libmd *msg_md;

-

- unsigned int msg_len;

- unsigned int msg_wanted;

- unsigned int msg_offset;

- unsigned int msg_niov;

- struct kvec *msg_iov;

- lnet_kiov_t *msg_kiov;

-

- lnet_event_t msg_ev;

- lnet_hdr_t msg_hdr;

+ /* VM trying to free memory */

+ unsigned int msg_vmflush:1;

+ /* sending to a router */

+ unsigned int msg_target_is_router:1;

+ /* being forwarded */

+ unsigned int msg_routing:1;

+ /* ack on finalize (PUT) */

+ unsigned int msg_ack:1;

+ /* outgoing message */

+ unsigned int msg_sending:1;

+ /* being received */

+ unsigned int msg_receiving:1;

+ /* taken an NI send credit */

+ unsigned int msg_txcredit:1;

+ /* taken a peer send credit */

+ unsigned int msg_peertxcredit:1;

+ /* taken a global router credit */

+ unsigned int msg_rtrcredit:1;

+ /* taken a peer router credit */

+ unsigned int msg_peerrtrcredit:1;

+ /* on the activelist */

+ unsigned int msg_onactivelist:1;

+

+ /* peer I'm sending to */

+ struct lnet_peer *msg_txpeer;

+ /* peer I received from */

+ struct lnet_peer *msg_rxpeer;

+

+ void *msg_private;

+ struct lnet_libmd *msg_md;

+

+ unsigned int msg_len;

+ unsigned int msg_wanted;

+ unsigned int msg_offset;

+ unsigned int msg_niov;

+ struct kvec *msg_iov;

+ lnet_kiov_t *msg_kiov;

+

+ lnet_event_t msg_ev;

+ lnet_hdr_t msg_hdr;

} lnet_msg_t;

typedef struct lnet_libhandle {

- struct list_head lh_hash_chain;

- __u64 lh_cookie;

+ struct list_head lh_hash_chain;

+ __u64 lh_cookie;

} lnet_libhandle_t;

#define lh_entry(ptr, type, member) \

((type *)((char *)(ptr)-(char *)(&((type *)0)->member)))

typedef struct lnet_eq {

- struct list_head eq_list;

+ struct list_head eq_list;

lnet_libhandle_t eq_lh;

lnet_seq_t eq_enq_seq;

lnet_seq_t eq_deq_seq;

unsigned int eq_size;

lnet_eq_handler_t eq_callback;

lnet_event_t *eq_events;

- int **eq_refs; /* percpt refcount for EQ */

+ /* percpt refcount for EQ */

+ int **eq_refs;

} lnet_eq_t;

typedef struct lnet_me {

- struct list_head me_list;

- lnet_libhandle_t me_lh;

- lnet_process_id_t me_match_id;

- unsigned int me_portal;

- unsigned int me_pos; /* hash offset in mt_hash */

- __u64 me_match_bits;

- __u64 me_ignore_bits;

- lnet_unlink_t me_unlink;

- struct lnet_libmd *me_md;

+ struct list_head me_list;

+ lnet_libhandle_t me_lh;

+ lnet_process_id_t me_match_id;

+ unsigned int me_portal;

+ /* hash offset in mt_hash */

+ unsigned int me_pos;

+ __u64 me_match_bits;

+ __u64 me_ignore_bits;

+ lnet_unlink_t me_unlink;

+ struct lnet_libmd *me_md;

} lnet_me_t;

typedef struct lnet_libmd {

- struct list_head md_list;

- lnet_libhandle_t md_lh;

- lnet_me_t *md_me;

- char *md_start;

- unsigned int md_offset;

- unsigned int md_length;

- unsigned int md_max_size;

- int md_threshold;

- int md_refcount;

- unsigned int md_options;

- unsigned int md_flags;

- void *md_user_ptr;

- lnet_eq_t *md_eq;

- unsigned int md_niov; /* # frags */

+ struct list_head md_list;

+ lnet_libhandle_t md_lh;

+ lnet_me_t *md_me;

+ char *md_start;

+ unsigned int md_offset;

+ unsigned int md_length;

+ unsigned int md_max_size;

+ int md_threshold;

+ int md_refcount;

+ unsigned int md_options;

+ unsigned int md_flags;

+ void *md_user_ptr;

+ lnet_eq_t *md_eq;

+ /* # frags */

+ unsigned int md_niov;

union {

- struct kvec iov[LNET_MAX_IOV];

- lnet_kiov_t kiov[LNET_MAX_IOV];

+ struct kvec iov[LNET_MAX_IOV];

+ lnet_kiov_t kiov[LNET_MAX_IOV];

} md_iov;

} lnet_libmd_t;

-#define LNET_MD_FLAG_ZOMBIE (1 << 0)

-#define LNET_MD_FLAG_AUTO_UNLINK (1 << 1)

-#define LNET_MD_FLAG_ABORTED (1 << 2)

+#define LNET_MD_FLAG_ZOMBIE (1 << 0)

+#define LNET_MD_FLAG_AUTO_UNLINK (1 << 1)

+#define LNET_MD_FLAG_ABORTED (1 << 2)

-#ifdef LNET_USE_LIB_FREELIST

+/* info about peers we are trying to fail */

typedef struct {

- void *fl_objs; /* single contiguous array of objects */

- int fl_nobjs; /* the number of them */

- int fl_objsize; /* the size (including overhead) of each of them */

- struct list_head fl_list; /* where they are enqueued */

-} lnet_freelist_t;

-

-typedef struct {

- struct list_head fo_list; /* enqueue on fl_list */

- void *fo_contents; /* aligned contents */

-} lnet_freeobj_t;

-#endif

-

-typedef struct {

- /* info about peers we are trying to fail */

- struct list_head tp_list; /* ln_test_peers */

- lnet_nid_t tp_nid; /* matching nid */

- unsigned int tp_threshold; /* # failures to simulate */

+ /* ln_test_peers */

+ struct list_head tp_list;

+ /* matching nid */

+ lnet_nid_t tp_nid;

+ /* # failures to simulate */

+ unsigned int tp_threshold;

} lnet_test_peer_t;

#define LNET_COOKIE_TYPE_MD 1

@@ -307,15 +195,17 @@ typedef struct {

#define LNET_COOKIE_TYPE_BITS 2

#define LNET_COOKIE_MASK ((1ULL << LNET_COOKIE_TYPE_BITS) - 1ULL)

-struct lnet_ni; /* forward ref */

+struct lnet_ni; /* forward ref */

+/* fields managed by portals */

typedef struct lnet_lnd {

- /* fields managed by portals */

- struct list_head lnd_list; /* stash in the LND table */

- int lnd_refcount; /* # active instances */

+ /* stash in the LND table */

+ struct list_head lnd_list;

+ /* # active instances */

+ int lnd_refcount;

/* fields initialised by the LND */

- unsigned int lnd_type;

+ __u32 lnd_type;

int (*lnd_startup)(struct lnet_ni *ni);

void (*lnd_shutdown)(struct lnet_ni *ni);

@@ -366,47 +256,57 @@ typedef struct lnet_lnd {

/* accept a new connection */

int (*lnd_accept)(struct lnet_ni *ni, struct socket *sock);

-

} lnd_t;

-#define LNET_NI_STATUS_UP 0x15aac0de

-#define LNET_NI_STATUS_DOWN 0xdeadface

-#define LNET_NI_STATUS_INVALID 0x00000000

typedef struct {

- lnet_nid_t ns_nid;

- __u32 ns_status;

- __u32 ns_unused;

+ lnet_nid_t ns_nid;

+ __u32 ns_status;

+ __u32 ns_unused;

} WIRE_ATTR lnet_ni_status_t;

struct lnet_tx_queue {

- int tq_credits; /* # tx credits free */

- int tq_credits_min; /* lowest it's been */

- int tq_credits_max; /* total # tx credits */

- struct list_head tq_delayed; /* delayed TXs */

+ /* # tx credits free */

+ int tq_credits;

+ /* lowest it's been */

+ int tq_credits_min;

+ /* total # tx credits */

+ int tq_credits_max;

+ /* delayed TXs */

+ struct list_head tq_delayed;

};

-#define LNET_MAX_INTERFACES 16

-

typedef struct lnet_ni {

spinlock_t ni_lock;

- struct list_head ni_list; /* chain on ln_nis */

- struct list_head ni_cptlist; /* chain on ln_nis_cpt */

- int ni_maxtxcredits; /* # tx credits */

+ /* chain on ln_nis */

+ struct list_head ni_list;

+ /* chain on ln_nis_cpt */

+ struct list_head ni_cptlist;

+ /* # tx credits */

+ int ni_maxtxcredits;

/* # per-peer send credits */

int ni_peertxcredits;

/* # per-peer router buffer credits */

int ni_peerrtrcredits;

/* seconds to consider peer dead */

int ni_peertimeout;

- int ni_ncpts; /* number of CPTs */

- __u32 *ni_cpts; /* bond NI on some CPTs */

- lnet_nid_t ni_nid; /* interface's NID */

- void *ni_data; /* instance-specific data */

- lnd_t *ni_lnd; /* procedural interface */

- struct lnet_tx_queue **ni_tx_queues; /* percpt TX queues */

- int **ni_refs; /* percpt reference count */

- long ni_last_alive; /* when I was last alive */

- lnet_ni_status_t *ni_status; /* my health status */

+ /* number of CPTs */

+ int ni_ncpts;

+ /* bond NI on some CPTs */

+ __u32 *ni_cpts;

+ /* interface's NID */

+ lnet_nid_t ni_nid;

+ /* instance-specific data */

+ void *ni_data;

+ /* procedural interface */

+ lnd_t *ni_lnd;

+ /* percpt TX queues */

+ struct lnet_tx_queue **ni_tx_queues;

+ /* percpt reference count */

+ int **ni_refs;

+ /* when I was last alive */

+ long ni_last_alive;

+ /* my health status */

+ lnet_ni_status_t *ni_status;

/* equivalent interfaces to use */

char *ni_interfaces[LNET_MAX_INTERFACES];

} lnet_ni_t;

@@ -435,43 +335,72 @@ typedef struct {

#define LNET_PINGINFO_SIZE offsetof(lnet_ping_info_t, pi_ni[LNET_MAX_RTR_NIS])

typedef struct {

/* chain on the_lnet.ln_zombie_rcd or ln_deathrow_rcd */

- struct list_head rcd_list;

- lnet_handle_md_t rcd_mdh; /* ping buffer MD */

- struct lnet_peer *rcd_gateway; /* reference to gateway */

- lnet_ping_info_t *rcd_pinginfo; /* ping buffer */

+ struct list_head rcd_list;

+ /* ping buffer MD */

+ lnet_handle_md_t rcd_mdh;

+ /* reference to gateway */

+ struct lnet_peer *rcd_gateway;

+ /* ping buffer */

+ lnet_ping_info_t *rcd_pinginfo;

} lnet_rc_data_t;

typedef struct lnet_peer {

- struct list_head lp_hashlist; /* chain on peer hash */

- struct list_head lp_txq; /* messages blocking for tx credits */

- struct list_head lp_rtrq; /* messages blocking for router credits */

- struct list_head lp_rtr_list; /* chain on router list */

- int lp_txcredits; /* # tx credits available */

- int lp_mintxcredits; /* low water mark */

- int lp_rtrcredits; /* # router credits */

- int lp_minrtrcredits; /* low water mark */

- unsigned int lp_alive:1; /* alive/dead? */

- unsigned int lp_notify:1; /* notification outstanding? */

- unsigned int lp_notifylnd:1; /* outstanding notification for LND? */

- unsigned int lp_notifying:1; /* some thread is handling notification */

- unsigned int lp_ping_notsent; /* SEND event outstanding from ping */

- int lp_alive_count; /* # times router went dead<->alive */

- long lp_txqnob; /* bytes queued for sending */

- unsigned long lp_timestamp; /* time of last aliveness news */

- unsigned long lp_ping_timestamp; /* time of last ping attempt */

- unsigned long lp_ping_deadline; /* != 0 if ping reply expected */

- unsigned long lp_last_alive; /* when I was last alive */

- unsigned long lp_last_query; /* when lp_ni was queried last time */

- lnet_ni_t *lp_ni; /* interface peer is on */

- lnet_nid_t lp_nid; /* peer's NID */

- int lp_refcount; /* # refs */

- int lp_cpt; /* CPT this peer attached on */

+ /* chain on peer hash */

+ struct list_head lp_hashlist;

+ /* messages blocking for tx credits */

+ struct list_head lp_txq;

+ /* messages blocking for router credits */

+ struct list_head lp_rtrq;

+ /* chain on router list */

+ struct list_head lp_rtr_list;

+ /* # tx credits available */

+ int lp_txcredits;

+ /* low water mark */

+ int lp_mintxcredits;

+ /* # router credits */

+ int lp_rtrcredits;

+ /* low water mark */

+ int lp_minrtrcredits;

+ /* alive/dead? */

+ unsigned int lp_alive:1;

+ /* notification outstanding? */

+ unsigned int lp_notify:1;

+ /* outstanding notification for LND? */

+ unsigned int lp_notifylnd:1;

+ /* some thread is handling notification */

+ unsigned int lp_notifying:1;

+ /* SEND event outstanding from ping */

+ unsigned int lp_ping_notsent;

+ /* # times router went dead<->alive */

+ int lp_alive_count;

+ /* bytes queued for sending */

+ long lp_txqnob;

+ /* time of last aliveness news */

+ unsigned long lp_timestamp;

+ /* time of last ping attempt */

+ unsigned long lp_ping_timestamp;

+ /* != 0 if ping reply expected */

+ unsigned long lp_ping_deadline;

+ /* when I was last alive */

+ unsigned long lp_last_alive;

+ /* when lp_ni was queried last time */

+ unsigned long lp_last_query;

+ /* interface peer is on */

+ lnet_ni_t *lp_ni;

+ /* peer's NID */

+ lnet_nid_t lp_nid;

+ /* # refs */

+ int lp_refcount;

+ /* CPT this peer attached on */

+ int lp_cpt;

/* # refs from lnet_route_t::lr_gateway */

int lp_rtr_refcount;

/* returned RC ping features */

unsigned int lp_ping_feats;

- struct list_head lp_routes; /* routers on this peer */

- lnet_rc_data_t *lp_rcd; /* router checker state */

+ /* routers on this peer */

+ struct list_head lp_routes;

+ /* router checker state */

+ lnet_rc_data_t *lp_rcd;

} lnet_peer_t;

/* peer hash size */

@@ -480,10 +409,14 @@ typedef struct lnet_peer {

/* peer hash table */

struct lnet_peer_table {

- int pt_version; /* /proc validity stamp */

- int pt_number; /* # peers extant */

- struct list_head pt_deathrow; /* zombie peers */

- struct list_head *pt_hash; /* NID->peer hash */

+ /* /proc validity stamp */

+ int pt_version;

+ /* # peers extant */

+ int pt_number;

+ /* zombie peers */

+ struct list_head pt_deathrow;

+ /* NID->peer hash */

+ struct list_head *pt_hash;

};

/* peer aliveness is enabled only on routers for peers in a network where the

@@ -492,14 +425,22 @@ struct lnet_peer_table {

(lp)->lp_ni->ni_peertimeout > 0)

typedef struct {

- struct list_head lr_list; /* chain on net */

- struct list_head lr_gwlist; /* chain on gateway */

- lnet_peer_t *lr_gateway; /* router node */

- __u32 lr_net; /* remote network number */

- int lr_seq; /* sequence for round-robin */

- unsigned int lr_downis; /* number of down NIs */

- unsigned int lr_hops; /* how far I am */

- unsigned int lr_priority; /* route priority */

+ /* chain on net */

+ struct list_head lr_list;

+ /* chain on gateway */

+ struct list_head lr_gwlist;

+ /* router node */

+ lnet_peer_t *lr_gateway;

+ /* remote network number */

+ __u32 lr_net;

+ /* sequence for round-robin */

+ int lr_seq;

+ /* number of down NIs */

+ unsigned int lr_downis;

+ /* how far I am */

+ unsigned int lr_hops;

+ /* route priority */

+ unsigned int lr_priority;

} lnet_route_t;

#define LNET_REMOTE_NETS_HASH_DEFAULT (1U << 7)

@@ -507,43 +448,41 @@ typedef struct {

#define LNET_REMOTE_NETS_HASH_SIZE (1 << the_lnet.ln_remote_nets_hbits)

typedef struct {

- struct list_head lrn_list; /* chain on ln_remote_nets_hash */

- struct list_head lrn_routes; /* routes to me */

- __u32 lrn_net; /* my net number */

+ /* chain on ln_remote_nets_hash */

+ struct list_head lrn_list;

+ /* routes to me */

+ struct list_head lrn_routes;

+ /* my net number */

+ __u32 lrn_net;

} lnet_remotenet_t;

typedef struct {

- struct list_head rbp_bufs; /* my free buffer pool */

- struct list_head rbp_msgs; /* messages blocking for a buffer */

- int rbp_npages; /* # pages in each buffer */

- int rbp_nbuffers; /* # buffers */

- int rbp_credits; /* # free buffers / blocked messages */

- int rbp_mincredits; /* low water mark */

+ /* my free buffer pool */

+ struct list_head rbp_bufs;

+ /* messages blocking for a buffer */

+ struct list_head rbp_msgs;

+ /* # pages in each buffer */

+ int rbp_npages;

+ /* # buffers */

+ int rbp_nbuffers;

+ /* # free buffers / blocked messages */

+ int rbp_credits;

+ /* low water mark */

+ int rbp_mincredits;

} lnet_rtrbufpool_t;

typedef struct {

- struct list_head rb_list; /* chain on rbp_bufs */

- lnet_rtrbufpool_t *rb_pool; /* owning pool */

- lnet_kiov_t rb_kiov[0]; /* the buffer space */

+ /* chain on rbp_bufs */

+ struct list_head rb_list;

+ /* owning pool */

+ lnet_rtrbufpool_t *rb_pool;

+ /* the buffer space */

+ lnet_kiov_t rb_kiov[0];

} lnet_rtrbuf_t;

-typedef struct {

- __u32 msgs_alloc;

- __u32 msgs_max;

- __u32 errors;

- __u32 send_count;

- __u32 recv_count;

- __u32 route_count;

- __u32 drop_count;

- __u64 send_length;

- __u64 recv_length;

- __u64 route_length;

- __u64 drop_length;

-} WIRE_ATTR lnet_counters_t;

-

-#define LNET_PEER_HASHSIZE 503 /* prime! */

-

-#define LNET_NRBPOOLS 3 /* # different router buffer pools */

+#define LNET_PEER_HASHSIZE 503 /* prime! */

+

+#define LNET_NRBPOOLS 3 /* # different router buffer pools */

enum {

/* Didn't match anything */

@@ -559,9 +498,9 @@ enum {

};

/* Options for lnet_portal_t::ptl_options */

-#define LNET_PTL_LAZY (1 << 0)

-#define LNET_PTL_MATCH_UNIQUE (1 << 1) /* unique match, for RDMA */

-#define LNET_PTL_MATCH_WILDCARD (1 << 2) /* wildcard match, request portal */

+#define LNET_PTL_LAZY (1 << 0)

+#define LNET_PTL_MATCH_UNIQUE (1 << 1) /* unique match, for RDMA */

+#define LNET_PTL_MATCH_WILDCARD (1 << 2) /* wildcard match, request portal */

/* parameter for matching operations (GET, PUT) */

struct lnet_match_info {

@@ -591,13 +530,15 @@ struct lnet_match_info {

struct lnet_match_table {

/* reserved for upcoming patches, CPU partition ID */

unsigned int mt_cpt;

- unsigned int mt_portal; /* portal index */

+ /* portal index */

+ unsigned int mt_portal;

/* match table is set as "enabled" if there's non-exhausted MD

* attached on mt_mhash, it's only valid for wildcard portal */

unsigned int mt_enabled;

/* bitmap to flag whether MEs on mt_hash are exhausted or not */

__u64 mt_exhausted[LNET_MT_EXHAUSTED_BMAP];

- struct list_head *mt_mhash; /* matching hash */

+ /* matching hash */

+ struct list_head *mt_mhash;

};

/* these are only useful for wildcard portal */

@@ -612,21 +553,22 @@ struct lnet_match_table {

typedef struct lnet_portal {

spinlock_t ptl_lock;

- unsigned int ptl_index; /* portal ID, reserved */

+ /* portal ID, reserved */

+ unsigned int ptl_index;

/* flags on this portal: lazy, unique... */

unsigned int ptl_options;

/* list of messages which are stealing buffer */

- struct list_head ptl_msg_stealing;

+ struct list_head ptl_msg_stealing;

/* messages blocking for MD */

- struct list_head ptl_msg_delayed;

+ struct list_head ptl_msg_delayed;

/* Match table for each CPT */

struct lnet_match_table **ptl_mtables;

/* spread rotor of incoming "PUT" */

unsigned int ptl_rotor;

/* # active entries for this portal */

- int ptl_mt_nmaps;

+ int ptl_mt_nmaps;

/* array of active entries' cpu-partition-id */

- int ptl_mt_maps[0];

+ int ptl_mt_maps[0];

} lnet_portal_t;

#define LNET_LH_HASH_BITS 12

@@ -635,28 +577,28 @@ typedef struct lnet_portal {

/* resource container (ME, MD, EQ) */

struct lnet_res_container {

- unsigned int rec_type; /* container type */

- __u64 rec_lh_cookie; /* cookie generator */

- struct list_head rec_active; /* active resource list */

- struct list_head *rec_lh_hash; /* handle hash */

-#ifdef LNET_USE_LIB_FREELIST

- lnet_freelist_t rec_freelist; /* freelist for resources */

-#endif

+ /* container type */

+ unsigned int rec_type;

+ /* cookie generator */

+ __u64 rec_lh_cookie;

+ /* active resource list */

+ struct list_head rec_active;

+ /* handle hash */

+ struct list_head *rec_lh_hash;

};

/* message container */

struct lnet_msg_container {

- int msc_init; /* initialized or not */

+ /* initialized or not */

+ int msc_init;

/* max # threads finalizing */

int msc_nfinalizers;

/* msgs waiting to complete finalizing */

- struct list_head msc_finalizing;

- struct list_head msc_active; /* active message list */

+ struct list_head msc_finalizing;

+ /* active message list */

+ struct list_head msc_active;

/* threads doing finalization */

void **msc_finalizers;

-#ifdef LNET_USE_LIB_FREELIST

- lnet_freelist_t msc_freelist; /* freelist for messages */

-#endif

};

/* Router Checker states */

@@ -684,7 +626,7 @@ typedef struct {

/* Event Queue container */

struct lnet_res_container ln_eq_container;

- wait_queue_head_t ln_eq_waitq;

+ wait_queue_head_t ln_eq_waitq;

spinlock_t ln_eq_wait_lock;

unsigned int ln_remote_nets_hbits;

@@ -695,23 +637,25 @@ typedef struct {

lnet_counters_t **ln_counters;

struct lnet_peer_table **ln_peer_tables;

/* failure simulation */

- struct list_head ln_test_peers;

+ struct list_head ln_test_peers;

- struct list_head ln_nis; /* LND instances */

+ /* LND instances */

+ struct list_head ln_nis;

/* NIs bond on specific CPT(s) */

- struct list_head ln_nis_cpt;

+ struct list_head ln_nis_cpt;

/* dying LND instances */

- struct list_head ln_nis_zombie;

- lnet_ni_t *ln_loni; /* the loopback NI */

+ struct list_head ln_nis_zombie;

+ /* the loopback NI */

+ lnet_ni_t *ln_loni;

/* NI to wait for events in */

lnet_ni_t *ln_eq_waitni;

/* remote networks with routes to them */

- struct list_head *ln_remote_nets_hash;

+ struct list_head *ln_remote_nets_hash;

/* validity stamp */

__u64 ln_remote_nets_version;

/* list of all known routers */

- struct list_head ln_routers;

+ struct list_head ln_routers;

/* validity stamp */

__u64 ln_routers_version;

/* percpt router buffer pools */

@@ -726,15 +670,16 @@ typedef struct {

/* router checker's event queue */

lnet_handle_eq_t ln_rc_eqh;

/* rcd still pending on net */

- struct list_head ln_rcd_deathrow;

+ struct list_head ln_rcd_deathrow;

/* rcd ready for free */

- struct list_head ln_rcd_zombie;

+ struct list_head ln_rcd_zombie;

/* serialise startup/shutdown */

struct semaphore ln_rc_signal;

struct mutex ln_api_mutex;

struct mutex ln_lnd_mutex;

- int ln_init; /* LNetInit() called? */

+ /* LNetInit() called? */

+ int ln_init;

/* Have I called LNetNIInit myself? */

int ln_niinit_self;

/* LNetNIInit/LNetNIFini counter */

@@ -742,12 +687,14 @@ typedef struct {

/* shutdown in progress */

int ln_shutdown;

- int ln_routing; /* am I a router? */

- lnet_pid_t ln_pid; /* requested pid */

+ /* am I a router? */

+ int ln_routing;

+ /* requested pid */

+ lnet_pid_t ln_pid;

/* uniquely identifies this ni in this epoch */

__u64 ln_interface_cookie;

/* registered LNDs */

- struct list_head ln_lnds;

+ struct list_head ln_lnds;

/* space for network names */

char *ln_network_tokens;

diff --git a/drivers/staging/lustre/include/linux/lnet/linux/api-support.h b/drivers/staging/lustre/include/linux/lnet/linux/api-support.h

deleted file mode 100644

index e237ad6..0000000

--- a/drivers/staging/lustre/include/linux/lnet/linux/api-support.h

+++ /dev/null

@@ -1,42 +0,0 @@

-/*

- * GPL HEADER START

- *

- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

- *

- * This program is free software; you can redistribute it and/or modify

- * it under the terms of the GNU General Public License version 2 only,

- * as published by the Free Software Foundation.

- *

- * This program 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 version 2 for more details (a copy is included

- * in the LICENSE file that accompanied this code).

- *

- * You should have received a copy of the GNU General Public License

- * version 2 along with this program; If not, see

- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf

- *

- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,

- * CA 95054 USA or visit www.sun.com if you need additional information or

- * have any questions.

- *

- * GPL HEADER END

- */

-/*

- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.

- * Use is subject to license terms.

- */

-/*

- * This file is part of Lustre, http://www.lustre.org/

- * Lustre is a trademark of Sun Microsystems, Inc.

- */

-

-#ifndef __LINUX_API_SUPPORT_H__

-#define __LINUX_API_SUPPORT_H__

-

-#ifndef __LNET_API_SUPPORT_H__

-#error Do not #include this file directly. #include <lnet /api-support.h> instead

-#endif

-

-#endif

diff --git a/drivers/staging/lustre/include/linux/lnet/linux/lib-lnet.h b/drivers/staging/lustre/include/linux/lnet/linux/lib-lnet.h

deleted file mode 100644

index 0f8f04d..0000000

--- a/drivers/staging/lustre/include/linux/lnet/linux/lib-lnet.h

+++ /dev/null

@@ -1,71 +0,0 @@

-/*

- * GPL HEADER START

- *

- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

- *

- * This program is free software; you can redistribute it and/or modify

- * it under the terms of the GNU General Public License version 2 only,

- * as published by the Free Software Foundation.

- *

- * This program 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 version 2 for more details (a copy is included

- * in the LICENSE file that accompanied this code).

- *

- * You should have received a copy of the GNU General Public License

- * version 2 along with this program; If not, see

- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf

- *

- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,

- * CA 95054 USA or visit www.sun.com if you need additional information or

- * have any questions.

- *

- * GPL HEADER END

- */

-/*

- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.

- * Use is subject to license terms.

- */

-/*

- * This file is part of Lustre, http://www.lustre.org/

- * Lustre is a trademark of Sun Microsystems, Inc.

- */

-

-#ifndef __LNET_LINUX_LIB_LNET_H__

-#define __LNET_LINUX_LIB_LNET_H__

-

-#ifndef __LNET_LIB_LNET_H__

-#error Do not #include this file directly. #include <linux/lnet/lib-lnet.h> instead

-#endif

-

-# include <asm/page.h>

-# include <linux/string.h>

-# include <asm/io.h>

-#include "../../libcfs/libcfs.h"

-

-static inline __u64

-lnet_page2phys(struct page *p)

-{

- /* compiler optimizer will elide unused branches */

-

- switch (sizeof(typeof(page_to_phys(p)))) {

- case 4:

- /* page_to_phys returns a 32 bit physical address. This must

- * be a 32 bit machine with <= 4G memory and we must ensure we

- * don't sign extend when converting to 64 bits. */

- return (unsigned long)page_to_phys(p);

-

- case 8:

- /* page_to_phys returns a 64 bit physical address :) */

- return page_to_phys(p);

-

- default:

- LBUG();

- return 0;

- }

-}

-

-#define LNET_ROUTER

-

-#endif /* __LNET_LINUX_LIB_LNET_H__ */

diff --git a/drivers/staging/lustre/include/linux/lnet/linux/lib-types.h b/drivers/staging/lustre/include/linux/lnet/linux/lib-types.h

deleted file mode 100644

index 669e8c0..0000000

--- a/drivers/staging/lustre/include/linux/lnet/linux/lib-types.h

+++ /dev/null

@@ -1,45 +0,0 @@

-/*

- * GPL HEADER START

- *

- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

- *

- * This pro

Show more