staging: lustre: lnet: migrate headers to lnet uapi directory
authorJames Simmons <jsimmons@infradead.org>
Sun, 20 Aug 2017 02:26:30 +0000 (22:26 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 23 Aug 2017 01:36:50 +0000 (18:36 -0700)
Migrate the headers used by user land and kernel space to the
libcfs/lnet uapi directory.

Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-6245
Reviewed-on: https://review.whamcloud.com/28089
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Olaf Weber <olaf.weber@hpe.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
Signed-off-by: James Simmons <jsimmons@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
34 files changed:
drivers/staging/lustre/include/linux/libcfs/libcfs.h
drivers/staging/lustre/include/linux/libcfs/libcfs_ioctl.h [deleted file]
drivers/staging/lustre/include/linux/lnet/api.h
drivers/staging/lustre/include/linux/lnet/lib-dlc.h [deleted file]
drivers/staging/lustre/include/linux/lnet/lib-lnet.h
drivers/staging/lustre/include/linux/lnet/lib-types.h
drivers/staging/lustre/include/linux/lnet/lnetctl.h [deleted file]
drivers/staging/lustre/include/linux/lnet/lnetst.h [deleted file]
drivers/staging/lustre/include/linux/lnet/nidstr.h [deleted file]
drivers/staging/lustre/include/linux/lnet/socklnd.h
drivers/staging/lustre/include/linux/lnet/types.h [deleted file]
drivers/staging/lustre/include/uapi/linux/lnet/libcfs_ioctl.h [new file with mode: 0644]
drivers/staging/lustre/include/uapi/linux/lnet/lnet-dlc.h [new file with mode: 0644]
drivers/staging/lustre/include/uapi/linux/lnet/lnet-types.h [new file with mode: 0644]
drivers/staging/lustre/include/uapi/linux/lnet/lnetctl.h [new file with mode: 0644]
drivers/staging/lustre/include/uapi/linux/lnet/lnetst.h [new file with mode: 0644]
drivers/staging/lustre/include/uapi/linux/lnet/nidstr.h [new file with mode: 0644]
drivers/staging/lustre/lnet/libcfs/module.c
drivers/staging/lustre/lnet/lnet/api-ni.c
drivers/staging/lustre/lnet/lnet/module.c
drivers/staging/lustre/lnet/lnet/net_fault.c
drivers/staging/lustre/lnet/lnet/nidstrings.c
drivers/staging/lustre/lnet/lnet/peer.c
drivers/staging/lustre/lnet/selftest/conctl.c
drivers/staging/lustre/lnet/selftest/conrpc.h
drivers/staging/lustre/lnet/selftest/console.h
drivers/staging/lustre/lnet/selftest/rpc.h
drivers/staging/lustre/lnet/selftest/selftest.h
drivers/staging/lustre/lustre/include/lustre/lustre_idl.h
drivers/staging/lustre/lustre/include/lustre_disk.h
drivers/staging/lustre/lustre/include/lustre_net.h
drivers/staging/lustre/lustre/obdclass/class_obd.c
drivers/staging/lustre/lustre/obdclass/linux/linux-module.c
drivers/staging/lustre/lustre/ptlrpc/service.c

index cc2c0e97bb7e8c339ff0a63399b59376a1ced5e8..71bb55e502d1e1ffca4a780d776e36719a9b36a2 100644 (file)
@@ -77,7 +77,7 @@ void cfs_get_random_bytes(void *buf, int size);
 #include "libcfs_debug.h"
 #include "libcfs_cpu.h"
 #include "libcfs_private.h"
-#include "libcfs_ioctl.h"
+#include "../../uapi/linux/lnet/libcfs_ioctl.h"
 #include "libcfs_prim.h"
 #include "libcfs_time.h"
 #include "libcfs_string.h"
diff --git a/drivers/staging/lustre/include/linux/libcfs/libcfs_ioctl.h b/drivers/staging/lustre/include/linux/libcfs/libcfs_ioctl.h
deleted file mode 100644 (file)
index cce6b58..0000000
+++ /dev/null
@@ -1,141 +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.gnu.org/licenses/gpl-2.0.html
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 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.
- *
- * libcfs/include/libcfs/libcfs_ioctl.h
- *
- * Low-level ioctl data structures. Kernel ioctl functions declared here,
- * and user space functions are in libcfs/util/ioctl.h.
- *
- */
-
-#ifndef __LIBCFS_IOCTL_H__
-#define __LIBCFS_IOCTL_H__
-
-#include <linux/types.h>
-#include <linux/ioctl.h>
-
-#define LIBCFS_IOCTL_VERSION   0x0001000a
-#define LIBCFS_IOCTL_VERSION2  0x0001000b
-
-struct libcfs_ioctl_hdr {
-       __u32 ioc_len;
-       __u32 ioc_version;
-};
-
-/** max size to copy from userspace */
-#define LIBCFS_IOC_DATA_MAX    (128 * 1024)
-
-struct libcfs_ioctl_data {
-       struct libcfs_ioctl_hdr ioc_hdr;
-
-       __u64 ioc_nid;
-       __u64 ioc_u64[1];
-
-       __u32 ioc_flags;
-       __u32 ioc_count;
-       __u32 ioc_net;
-       __u32 ioc_u32[7];
-
-       __u32 ioc_inllen1;
-       char *ioc_inlbuf1;
-       __u32 ioc_inllen2;
-       char *ioc_inlbuf2;
-
-       __u32 ioc_plen1; /* buffers in userspace */
-       void __user *ioc_pbuf1;
-       __u32 ioc_plen2; /* buffers in userspace */
-       void __user *ioc_pbuf2;
-
-       char ioc_bulk[0];
-};
-
-struct libcfs_debug_ioctl_data {
-       struct libcfs_ioctl_hdr hdr;
-       unsigned int subs;
-       unsigned int debug;
-};
-
-/* 'f' ioctls are defined in lustre_ioctl.h and lustre_user.h except for: */
-#define LIBCFS_IOC_DEBUG_MASK             _IOWR('f', 250, long)
-#define IOCTL_LIBCFS_TYPE                 long
-
-#define IOC_LIBCFS_TYPE                           ('e')
-#define IOC_LIBCFS_MIN_NR                 30
-/* libcfs ioctls */
-/* IOC_LIBCFS_PANIC obsolete in 2.8.0, was _IOWR('e', 30, IOCTL_LIBCFS_TYPE) */
-#define IOC_LIBCFS_CLEAR_DEBUG            _IOWR('e', 31, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_MARK_DEBUG             _IOWR('e', 32, IOCTL_LIBCFS_TYPE)
-/* IOC_LIBCFS_MEMHOG obsolete in 2.8.0, was _IOWR('e', 36, IOCTL_LIBCFS_TYPE) */
-/* lnet ioctls */
-#define IOC_LIBCFS_GET_NI                 _IOWR('e', 50, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_FAIL_NID               _IOWR('e', 51, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_NOTIFY_ROUTER          _IOWR('e', 55, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_UNCONFIGURE            _IOWR('e', 56, IOCTL_LIBCFS_TYPE)
-/*      IOC_LIBCFS_PORTALS_COMPATIBILITY  _IOWR('e', 57, IOCTL_LIBCFS_TYPE) */
-#define IOC_LIBCFS_LNET_DIST              _IOWR('e', 58, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_CONFIGURE              _IOWR('e', 59, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_TESTPROTOCOMPAT        _IOWR('e', 60, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_PING                           _IOWR('e', 61, IOCTL_LIBCFS_TYPE)
-/*     IOC_LIBCFS_DEBUG_PEER              _IOWR('e', 62, IOCTL_LIBCFS_TYPE) */
-#define IOC_LIBCFS_LNETST                 _IOWR('e', 63, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_LNET_FAULT             _IOWR('e', 64, IOCTL_LIBCFS_TYPE)
-/* lnd ioctls */
-#define IOC_LIBCFS_REGISTER_MYNID         _IOWR('e', 70, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_CLOSE_CONNECTION       _IOWR('e', 71, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_PUSH_CONNECTION        _IOWR('e', 72, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_GET_CONN               _IOWR('e', 73, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_DEL_PEER               _IOWR('e', 74, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_ADD_PEER               _IOWR('e', 75, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_GET_PEER               _IOWR('e', 76, IOCTL_LIBCFS_TYPE)
-/* ioctl 77 is free for use */
-#define IOC_LIBCFS_ADD_INTERFACE          _IOWR('e', 78, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_DEL_INTERFACE          _IOWR('e', 79, IOCTL_LIBCFS_TYPE)
-#define IOC_LIBCFS_GET_INTERFACE          _IOWR('e', 80, IOCTL_LIBCFS_TYPE)
-
-/*
- * DLC Specific IOCTL numbers.
- * In order to maintain backward compatibility with any possible external
- * tools which might be accessing the IOCTL numbers, a new group of IOCTL
- * number have been allocated.
- */
-#define IOCTL_CONFIG_SIZE              struct lnet_ioctl_config_data
-#define IOC_LIBCFS_ADD_ROUTE           _IOWR(IOC_LIBCFS_TYPE, 81, IOCTL_CONFIG_SIZE)
-#define IOC_LIBCFS_DEL_ROUTE           _IOWR(IOC_LIBCFS_TYPE, 82, IOCTL_CONFIG_SIZE)
-#define IOC_LIBCFS_GET_ROUTE           _IOWR(IOC_LIBCFS_TYPE, 83, IOCTL_CONFIG_SIZE)
-#define IOC_LIBCFS_ADD_NET             _IOWR(IOC_LIBCFS_TYPE, 84, IOCTL_CONFIG_SIZE)
-#define IOC_LIBCFS_DEL_NET             _IOWR(IOC_LIBCFS_TYPE, 85, IOCTL_CONFIG_SIZE)
-#define IOC_LIBCFS_GET_NET             _IOWR(IOC_LIBCFS_TYPE, 86, IOCTL_CONFIG_SIZE)
-#define IOC_LIBCFS_CONFIG_RTR          _IOWR(IOC_LIBCFS_TYPE, 87, IOCTL_CONFIG_SIZE)
-#define IOC_LIBCFS_ADD_BUF             _IOWR(IOC_LIBCFS_TYPE, 88, IOCTL_CONFIG_SIZE)
-#define IOC_LIBCFS_GET_BUF             _IOWR(IOC_LIBCFS_TYPE, 89, IOCTL_CONFIG_SIZE)
-#define IOC_LIBCFS_GET_PEER_INFO       _IOWR(IOC_LIBCFS_TYPE, 90, IOCTL_CONFIG_SIZE)
-#define IOC_LIBCFS_GET_LNET_STATS      _IOWR(IOC_LIBCFS_TYPE, 91, IOCTL_CONFIG_SIZE)
-#define IOC_LIBCFS_MAX_NR              91
-
-#endif /* __LIBCFS_IOCTL_H__ */
index f4b6de2ec0ffb5ce43315cdf8e539de06510a215..01ae62e44c1241e89ceae30cdc6cdda80b2ab6bc 100644 (file)
@@ -44,7 +44,7 @@
  * @{
  */
 
-#include "../lnet/types.h"
+#include "../../uapi/linux/lnet/lnet-types.h"
 
 /** \defgroup lnet_init_fini Initialization and cleanup
  * The LNet must be properly initialized before any LNet calls can be made.
diff --git a/drivers/staging/lustre/include/linux/lnet/lib-dlc.h b/drivers/staging/lustre/include/linux/lnet/lib-dlc.h
deleted file mode 100644 (file)
index dfff170..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * LGPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library.
- *
- * LGPL HEADER END
- *
- */
-/*
- * Copyright (c) 2014, Intel Corporation.
- */
-/*
- * Author: Amir Shehata <amir.shehata@intel.com>
- */
-
-#ifndef LNET_DLC_H
-#define LNET_DLC_H
-
-#include "../libcfs/libcfs_ioctl.h"
-#include "types.h"
-
-#define MAX_NUM_SHOW_ENTRIES   32
-#define LNET_MAX_STR_LEN       128
-#define LNET_MAX_SHOW_NUM_CPT  128
-#define LNET_UNDEFINED_HOPS    ((__u32)(-1))
-
-struct lnet_ioctl_config_lnd_cmn_tunables {
-       __u32 lct_version;
-       __u32 lct_peer_timeout;
-       __u32 lct_peer_tx_credits;
-       __u32 lct_peer_rtr_credits;
-       __u32 lct_max_tx_credits;
-};
-
-struct lnet_ioctl_config_o2iblnd_tunables {
-       __u32 lnd_version;
-       __u32 lnd_peercredits_hiw;
-       __u32 lnd_map_on_demand;
-       __u32 lnd_concurrent_sends;
-       __u32 lnd_fmr_pool_size;
-       __u32 lnd_fmr_flush_trigger;
-       __u32 lnd_fmr_cache;
-       __u32 pad;
-};
-
-struct lnet_ioctl_config_lnd_tunables {
-       struct lnet_ioctl_config_lnd_cmn_tunables lt_cmn;
-       union {
-               struct lnet_ioctl_config_o2iblnd_tunables lt_o2ib;
-       } lt_tun_u;
-};
-
-struct lnet_ioctl_net_config {
-       char ni_interfaces[LNET_MAX_INTERFACES][LNET_MAX_STR_LEN];
-       __u32 ni_status;
-       __u32 ni_cpts[LNET_MAX_SHOW_NUM_CPT];
-       char cfg_bulk[0];
-};
-
-#define LNET_TINY_BUF_IDX      0
-#define LNET_SMALL_BUF_IDX     1
-#define LNET_LARGE_BUF_IDX     2
-
-/* # different router buffer pools */
-#define LNET_NRBPOOLS          (LNET_LARGE_BUF_IDX + 1)
-
-struct lnet_ioctl_pool_cfg {
-       struct {
-               __u32 pl_npages;
-               __u32 pl_nbuffers;
-               __u32 pl_credits;
-               __u32 pl_mincredits;
-       } pl_pools[LNET_NRBPOOLS];
-       __u32 pl_routing;
-};
-
-struct lnet_ioctl_config_data {
-       struct libcfs_ioctl_hdr cfg_hdr;
-
-       __u32 cfg_net;
-       __u32 cfg_count;
-       __u64 cfg_nid;
-       __u32 cfg_ncpts;
-
-       union {
-               struct {
-                       __u32 rtr_hop;
-                       __u32 rtr_priority;
-                       __u32 rtr_flags;
-               } cfg_route;
-               struct {
-                       char net_intf[LNET_MAX_STR_LEN];
-                       __s32 net_peer_timeout;
-                       __s32 net_peer_tx_credits;
-                       __s32 net_peer_rtr_credits;
-                       __s32 net_max_tx_credits;
-                       __u32 net_cksum_algo;
-                       __u32 net_interface_count;
-               } cfg_net;
-               struct {
-                       __u32 buf_enable;
-                       __s32 buf_tiny;
-                       __s32 buf_small;
-                       __s32 buf_large;
-               } cfg_buffers;
-       } cfg_config_u;
-
-       char cfg_bulk[0];
-};
-
-struct lnet_ioctl_peer {
-       struct libcfs_ioctl_hdr pr_hdr;
-       __u32 pr_count;
-       __u32 pr_pad;
-       __u64 pr_nid;
-
-       union {
-               struct {
-                       char cr_aliveness[LNET_MAX_STR_LEN];
-                       __u32 cr_refcount;
-                       __u32 cr_ni_peer_tx_credits;
-                       __u32 cr_peer_tx_credits;
-                       __u32 cr_peer_rtr_credits;
-                       __u32 cr_peer_min_rtr_credits;
-                       __u32 cr_peer_tx_qnob;
-                       __u32 cr_ncpt;
-               } pr_peer_credits;
-       } pr_lnd_u;
-};
-
-struct lnet_ioctl_lnet_stats {
-       struct libcfs_ioctl_hdr st_hdr;
-       struct lnet_counters st_cntrs;
-};
-
-#endif /* LNET_DLC_H */
index 9b923ec36f52ed76217f5bccb4032d15eb17d6d6..bc55d57a559bc18b1d24bb1c3c08f51394adbc1f 100644 (file)
 #include "../libcfs/libcfs.h"
 #include "api.h"
 #include "lib-types.h"
-#include "lib-dlc.h"
-#include "types.h"
-#include "lnetctl.h"
-#include "nidstr.h"
+#include "../../uapi/linux/lnet/lnet-dlc.h"
+#include "../../uapi/linux/lnet/lnet-types.h"
+#include "../../uapi/linux/lnet/lnetctl.h"
+#include "../../uapi/linux/lnet/nidstr.h"
 
 extern struct lnet the_lnet;   /* THE network */
 
index ddb808ed5d0b1367057259f85d71751267eb2907..94d3a53a98ee12366b8b33c4b19fe318907c7272 100644 (file)
@@ -40,8 +40,8 @@
 #include <linux/types.h>
 #include <linux/completion.h>
 
-#include "types.h"
-#include "lnetctl.h"
+#include "../../uapi/linux/lnet/lnet-types.h"
+#include "../../uapi/linux/lnet/lnetctl.h"
 
 /* Max payload size */
 #define LNET_MAX_PAYLOAD      CONFIG_LNET_MAX_PAYLOAD
diff --git a/drivers/staging/lustre/include/linux/lnet/lnetctl.h b/drivers/staging/lustre/include/linux/lnet/lnetctl.h
deleted file mode 100644 (file)
index 3957507..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- *   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.
- *
- * header for lnet ioctl
- */
-#ifndef _LNETCTL_H_
-#define _LNETCTL_H_
-
-#include "types.h"
-
-/** \addtogroup lnet_fault_simulation
- * @{
- */
-
-enum {
-       LNET_CTL_DROP_ADD,
-       LNET_CTL_DROP_DEL,
-       LNET_CTL_DROP_RESET,
-       LNET_CTL_DROP_LIST,
-       LNET_CTL_DELAY_ADD,
-       LNET_CTL_DELAY_DEL,
-       LNET_CTL_DELAY_RESET,
-       LNET_CTL_DELAY_LIST,
-};
-
-#define LNET_ACK_BIT           BIT(0)
-#define LNET_PUT_BIT           BIT(1)
-#define LNET_GET_BIT           BIT(2)
-#define LNET_REPLY_BIT         BIT(3)
-
-/** ioctl parameter for LNet fault simulation */
-struct lnet_fault_attr {
-       /**
-        * source NID of drop rule
-        * LNET_NID_ANY is wildcard for all sources
-        * 255.255.255.255@net is wildcard for all addresses from @net
-        */
-       lnet_nid_t                      fa_src;
-       /** destination NID of drop rule, see \a dr_src for details */
-       lnet_nid_t                      fa_dst;
-       /**
-        * Portal mask to drop, -1 means all portals, for example:
-        * fa_ptl_mask = (1 << _LDLM_CB_REQUEST_PORTAL ) |
-        *               (1 << LDLM_CANCEL_REQUEST_PORTAL)
-        *
-        * If it is non-zero then only PUT and GET will be filtered, otherwise
-        * there is no portal filter, all matched messages will be checked.
-        */
-       __u64                           fa_ptl_mask;
-       /**
-        * message types to drop, for example:
-        * dra_type = LNET_DROP_ACK_BIT | LNET_DROP_PUT_BIT
-        *
-        * If it is non-zero then only specified message types are filtered,
-        * otherwise all message types will be checked.
-        */
-       __u32                           fa_msg_mask;
-       union {
-               /** message drop simulation */
-               struct {
-                       /** drop rate of this rule */
-                       __u32                   da_rate;
-                       /**
-                        * time interval of message drop, it is exclusive
-                        * with da_rate
-                        */
-                       __u32                   da_interval;
-               } drop;
-               /** message latency simulation */
-               struct {
-                       __u32                   la_rate;
-                       /**
-                        * time interval of message delay, it is exclusive
-                        * with la_rate
-                        */
-                       __u32                   la_interval;
-                       /** latency to delay */
-                       __u32                   la_latency;
-               } delay;
-               __u64                   space[8];
-       } u;
-};
-
-/** fault simluation stats */
-struct lnet_fault_stat {
-       /** total # matched messages */
-       __u64                           fs_count;
-       /** # dropped LNET_MSG_PUT by this rule */
-       __u64                           fs_put;
-       /** # dropped LNET_MSG_ACK by this rule */
-       __u64                           fs_ack;
-       /** # dropped LNET_MSG_GET by this rule */
-       __u64                           fs_get;
-       /** # dropped LNET_MSG_REPLY by this rule */
-       __u64                           fs_reply;
-       union {
-               struct {
-                       /** total # dropped messages */
-                       __u64                   ds_dropped;
-               } drop;
-               struct {
-                       /** total # delayed messages */
-                       __u64                   ls_delayed;
-               } delay;
-               __u64                   space[8];
-       } u;
-};
-
-/** @} lnet_fault_simulation */
-
-#define LNET_DEV_ID 0
-#define LNET_DEV_PATH "/dev/lnet"
-#define LNET_DEV_MAJOR 10
-#define LNET_DEV_MINOR 240
-#define OBD_DEV_ID 1
-#define OBD_DEV_NAME "obd"
-#define OBD_DEV_PATH "/dev/" OBD_DEV_NAME
-#define OBD_DEV_MAJOR 10
-#define OBD_DEV_MINOR 241
-#define SMFS_DEV_ID  2
-#define SMFS_DEV_PATH "/dev/snapdev"
-#define SMFS_DEV_MAJOR 10
-#define SMFS_DEV_MINOR 242
-
-int ptl_initialize(int argc, char **argv);
-int jt_ptl_network(int argc, char **argv);
-int jt_ptl_list_nids(int argc, char **argv);
-int jt_ptl_which_nid(int argc, char **argv);
-int jt_ptl_print_interfaces(int argc, char **argv);
-int jt_ptl_add_interface(int argc, char **argv);
-int jt_ptl_del_interface(int argc, char **argv);
-int jt_ptl_print_peers(int argc, char **argv);
-int jt_ptl_add_peer(int argc, char **argv);
-int jt_ptl_del_peer(int argc, char **argv);
-int jt_ptl_print_connections(int argc, char **argv);
-int jt_ptl_disconnect(int argc, char **argv);
-int jt_ptl_push_connection(int argc, char **argv);
-int jt_ptl_print_active_txs(int argc, char **argv);
-int jt_ptl_ping(int argc, char **argv);
-int jt_ptl_mynid(int argc, char **argv);
-int jt_ptl_add_uuid(int argc, char **argv);
-int jt_ptl_add_uuid_old(int argc, char **argv); /* backwards compatibility  */
-int jt_ptl_close_uuid(int argc, char **argv);
-int jt_ptl_del_uuid(int argc, char **argv);
-int jt_ptl_add_route(int argc, char **argv);
-int jt_ptl_del_route(int argc, char **argv);
-int jt_ptl_notify_router(int argc, char **argv);
-int jt_ptl_print_routes(int argc, char **argv);
-int jt_ptl_fail_nid(int argc, char **argv);
-int jt_ptl_lwt(int argc, char **argv);
-int jt_ptl_testprotocompat(int argc, char **argv);
-int jt_ptl_memhog(int argc, char **argv);
-
-int dbg_initialize(int argc, char **argv);
-int jt_dbg_filter(int argc, char **argv);
-int jt_dbg_show(int argc, char **argv);
-int jt_dbg_list(int argc, char **argv);
-int jt_dbg_debug_kernel(int argc, char **argv);
-int jt_dbg_debug_daemon(int argc, char **argv);
-int jt_dbg_debug_file(int argc, char **argv);
-int jt_dbg_clear_debug_buf(int argc, char **argv);
-int jt_dbg_mark_debug_buf(int argc, char **argv);
-int jt_dbg_modules(int argc, char **argv);
-int jt_dbg_panic(int argc, char **argv);
-
-#endif
diff --git a/drivers/staging/lustre/include/linux/lnet/lnetst.h b/drivers/staging/lustre/include/linux/lnet/lnetst.h
deleted file mode 100644 (file)
index a4f9ff0..0000000
+++ /dev/null
@@ -1,556 +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.gnu.org/licenses/gpl-2.0.html
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2007, 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 Seagate, Inc.
- *
- * lnet/include/lnet/lnetst.h
- *
- * Author: Liang Zhen <liang.zhen@intel.com>
- */
-
-#ifndef __LNET_ST_H__
-#define __LNET_ST_H__
-
-#include <linux/types.h>
-
-#define LST_FEAT_NONE          (0)
-#define LST_FEAT_BULK_LEN      (1 << 0)        /* enable variable page size */
-
-#define LST_FEATS_EMPTY                (LST_FEAT_NONE)
-#define LST_FEATS_MASK         (LST_FEAT_NONE | LST_FEAT_BULK_LEN)
-
-#define LST_NAME_SIZE          32      /* max name buffer length */
-
-#define LSTIO_DEBUG            0xC00   /* debug */
-#define LSTIO_SESSION_NEW      0xC01   /* create session */
-#define LSTIO_SESSION_END      0xC02   /* end session */
-#define LSTIO_SESSION_INFO     0xC03   /* query session */
-#define LSTIO_GROUP_ADD                0xC10   /* add group */
-#define LSTIO_GROUP_LIST       0xC11   /* list all groups in session */
-#define LSTIO_GROUP_INFO       0xC12   /* query default information of
-                                        * specified group
-                                        */
-#define LSTIO_GROUP_DEL                0xC13   /* delete group */
-#define LSTIO_NODES_ADD                0xC14   /* add nodes to specified group */
-#define LSTIO_GROUP_UPDATE      0xC15  /* update group */
-#define LSTIO_BATCH_ADD                0xC20   /* add batch */
-#define LSTIO_BATCH_START      0xC21   /* start batch */
-#define LSTIO_BATCH_STOP       0xC22   /* stop batch */
-#define LSTIO_BATCH_DEL                0xC23   /* delete batch */
-#define LSTIO_BATCH_LIST       0xC24   /* show all batches in the session */
-#define LSTIO_BATCH_INFO       0xC25   /* show defail of specified batch */
-#define LSTIO_TEST_ADD         0xC26   /* add test (to batch) */
-#define LSTIO_BATCH_QUERY      0xC27   /* query batch status */
-#define LSTIO_STAT_QUERY       0xC30   /* get stats */
-
-struct lst_sid {
-       lnet_nid_t      ses_nid;        /* nid of console node */
-       __u64           ses_stamp;      /* time stamp */
-};                                     /*** session id */
-
-extern struct lst_sid LST_INVALID_SID;
-
-struct lst_bid {
-       __u64   bat_id;         /* unique id in session */
-};                             /*** batch id (group of tests) */
-
-/* Status of test node */
-#define LST_NODE_ACTIVE                0x1     /* node in this session */
-#define LST_NODE_BUSY          0x2     /* node is taken by other session */
-#define LST_NODE_DOWN          0x4     /* node is down */
-#define LST_NODE_UNKNOWN       0x8     /* node not in session */
-
-struct lstcon_node_ent {
-       struct lnet_process_id  nde_id;         /* id of node */
-       int                     nde_state;      /* state of node */
-};                             /*** node entry, for list_group command */
-
-struct lstcon_ndlist_ent {
-       int     nle_nnode;      /* # of nodes */
-       int     nle_nactive;    /* # of active nodes */
-       int     nle_nbusy;      /* # of busy nodes */
-       int     nle_ndown;      /* # of down nodes */
-       int     nle_nunknown;   /* # of unknown nodes */
-};                             /*** node_list entry, for list_batch command */
-
-struct lstcon_test_ent {
-       int     tse_type;       /* test type */
-       int     tse_loop;       /* loop count */
-       int     tse_concur;     /* concurrency of test */
-};                             /* test summary entry, for
-                                * list_batch command
-                                */
-
-struct lstcon_batch_ent {
-       int     bae_state;      /* batch status */
-       int     bae_timeout;    /* batch timeout */
-       int     bae_ntest;      /* # of tests in the batch */
-};                             /* batch summary entry, for
-                                * list_batch command
-                                */
-
-struct lstcon_test_batch_ent {
-       struct lstcon_ndlist_ent   tbe_cli_nle; /* client (group) node_list
-                                                * entry
-                                                */
-       struct lstcon_ndlist_ent   tbe_srv_nle; /* server (group) node_list
-                                                * entry
-                                                */
-       union {
-               struct lstcon_test_ent  tbe_test; /* test entry */
-               struct lstcon_batch_ent tbe_batch;/* batch entry */
-       } u;
-};                             /* test/batch verbose information entry,
-                                * for list_batch command
-                                */
-
-struct lstcon_rpc_ent {
-       struct list_head        rpe_link;       /* link chain */
-       struct lnet_process_id  rpe_peer;       /* peer's id */
-       struct timeval          rpe_stamp;      /* time stamp of RPC */
-       int                     rpe_state;      /* peer's state */
-       int                     rpe_rpc_errno;  /* RPC errno */
-
-       struct lst_sid          rpe_sid;        /* peer's session id */
-       int                     rpe_fwk_errno;  /* framework errno */
-       int                     rpe_priv[4];    /* private data */
-       char                    rpe_payload[0]; /* private reply payload */
-};
-
-struct lstcon_trans_stat {
-       int     trs_rpc_stat[4];        /* RPCs stat (0: total 1: failed
-                                        * 2: finished
-                                        * 4: reserved
-                                        */
-       int     trs_rpc_errno;          /* RPC errno */
-       int     trs_fwk_stat[8];        /* framework stat */
-       int     trs_fwk_errno;          /* errno of the first remote error */
-       void    *trs_fwk_private;       /* private framework stat */
-};
-
-static inline int
-lstcon_rpc_stat_total(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_rpc_stat[0] : stat->trs_rpc_stat[0];
-}
-
-static inline int
-lstcon_rpc_stat_success(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_rpc_stat[1] : stat->trs_rpc_stat[1];
-}
-
-static inline int
-lstcon_rpc_stat_failure(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_rpc_stat[2] : stat->trs_rpc_stat[2];
-}
-
-static inline int
-lstcon_sesop_stat_success(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_fwk_stat[0] : stat->trs_fwk_stat[0];
-}
-
-static inline int
-lstcon_sesop_stat_failure(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_fwk_stat[1] : stat->trs_fwk_stat[1];
-}
-
-static inline int
-lstcon_sesqry_stat_active(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_fwk_stat[0] : stat->trs_fwk_stat[0];
-}
-
-static inline int
-lstcon_sesqry_stat_busy(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_fwk_stat[1] : stat->trs_fwk_stat[1];
-}
-
-static inline int
-lstcon_sesqry_stat_unknown(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_fwk_stat[2] : stat->trs_fwk_stat[2];
-}
-
-static inline int
-lstcon_tsbop_stat_success(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_fwk_stat[0] : stat->trs_fwk_stat[0];
-}
-
-static inline int
-lstcon_tsbop_stat_failure(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_fwk_stat[1] : stat->trs_fwk_stat[1];
-}
-
-static inline int
-lstcon_tsbqry_stat_idle(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_fwk_stat[0] : stat->trs_fwk_stat[0];
-}
-
-static inline int
-lstcon_tsbqry_stat_run(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_fwk_stat[1] : stat->trs_fwk_stat[1];
-}
-
-static inline int
-lstcon_tsbqry_stat_failure(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_fwk_stat[2] : stat->trs_fwk_stat[2];
-}
-
-static inline int
-lstcon_statqry_stat_success(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_fwk_stat[0] : stat->trs_fwk_stat[0];
-}
-
-static inline int
-lstcon_statqry_stat_failure(struct lstcon_trans_stat *stat, int inc)
-{
-       return inc ? ++stat->trs_fwk_stat[1] : stat->trs_fwk_stat[1];
-}
-
-/* create a session */
-struct lstio_session_new_args {
-       int              lstio_ses_key;         /* IN: local key */
-       int              lstio_ses_timeout;     /* IN: session timeout */
-       int              lstio_ses_force;       /* IN: force create ? */
-       /** IN: session features */
-       unsigned int     lstio_ses_feats;
-       struct lst_sid __user *lstio_ses_idp;   /* OUT: session id */
-       int              lstio_ses_nmlen;       /* IN: name length */
-       char __user      *lstio_ses_namep;      /* IN: session name */
-};
-
-/* query current session */
-struct lstio_session_info_args {
-       struct lst_sid __user   *lstio_ses_idp;         /* OUT: session id */
-       int __user              *lstio_ses_keyp;        /* OUT: local key */
-       /** OUT: session features */
-       unsigned int __user     *lstio_ses_featp;
-       struct lstcon_ndlist_ent __user *lstio_ses_ndinfo;/* OUT: */
-       int                      lstio_ses_nmlen;       /* IN: name length */
-       char __user             *lstio_ses_namep;       /* OUT: session name */
-};
-
-/* delete a session */
-struct lstio_session_end_args {
-       int                     lstio_ses_key;  /* IN: session key */
-};
-
-#define LST_OPC_SESSION                1
-#define LST_OPC_GROUP          2
-#define LST_OPC_NODES          3
-#define LST_OPC_BATCHCLI       4
-#define LST_OPC_BATCHSRV       5
-
-struct lstio_debug_args {
-       int                      lstio_dbg_key;         /* IN: session key */
-       int                      lstio_dbg_type;        /* IN: debug
-                                                        * session|batch|
-                                                        * group|nodes list
-                                                        */
-       int                      lstio_dbg_flags;       /* IN: reserved debug
-                                                        * flags
-                                                        */
-       int                      lstio_dbg_timeout;     /* IN: timeout of
-                                                        * debug
-                                                        */
-       int                      lstio_dbg_nmlen;       /* IN: len of name */
-       char __user             *lstio_dbg_namep;       /* IN: name of
-                                                        * group|batch
-                                                        */
-       int                      lstio_dbg_count;       /* IN: # of test nodes
-                                                        * to debug
-                                                        */
-       struct lnet_process_id __user *lstio_dbg_idsp;  /* IN: id of test
-                                                        * nodes
-                                                        */
-       struct list_head __user *lstio_dbg_resultp;     /* OUT: list head of
-                                                        * result buffer
-                                                        */
-};
-
-struct lstio_group_add_args {
-       int              lstio_grp_key;         /* IN: session key */
-       int              lstio_grp_nmlen;       /* IN: name length */
-       char __user     *lstio_grp_namep;       /* IN: group name */
-};
-
-struct lstio_group_del_args {
-       int              lstio_grp_key;         /* IN: session key */
-       int              lstio_grp_nmlen;       /* IN: name length */
-       char __user     *lstio_grp_namep;       /* IN: group name */
-};
-
-#define LST_GROUP_CLEAN                1       /* remove inactive nodes in the group */
-#define LST_GROUP_REFRESH      2       /* refresh inactive nodes
-                                        * in the group
-                                        */
-#define LST_GROUP_RMND         3       /* delete nodes from the group */
-
-struct lstio_group_update_args {
-       int                      lstio_grp_key;         /* IN: session key */
-       int                      lstio_grp_opc;         /* IN: OPC */
-       int                      lstio_grp_args;        /* IN: arguments */
-       int                      lstio_grp_nmlen;       /* IN: name length */
-       char __user             *lstio_grp_namep;       /* IN: group name */
-       int                      lstio_grp_count;       /* IN: # of nodes id */
-       struct lnet_process_id __user *lstio_grp_idsp;  /* IN: array of nodes */
-       struct list_head __user *lstio_grp_resultp;     /* OUT: list head of
-                                                        * result buffer
-                                                        */
-};
-
-struct lstio_group_nodes_args {
-       int                      lstio_grp_key;         /* IN: session key */
-       int                      lstio_grp_nmlen;       /* IN: name length */
-       char __user             *lstio_grp_namep;       /* IN: group name */
-       int                      lstio_grp_count;       /* IN: # of nodes */
-       /** OUT: session features */
-       unsigned int __user     *lstio_grp_featp;
-       struct lnet_process_id __user *lstio_grp_idsp;  /* IN: nodes */
-       struct list_head __user *lstio_grp_resultp;     /* OUT: list head of
-                                                        * result buffer
-                                                        */
-};
-
-struct lstio_group_list_args {
-       int      lstio_grp_key;         /* IN: session key */
-       int      lstio_grp_idx;         /* IN: group idx */
-       int      lstio_grp_nmlen;       /* IN: name len */
-       char __user *lstio_grp_namep;   /* OUT: name */
-};
-
-struct lstio_group_info_args {
-       int                      lstio_grp_key;         /* IN: session key */
-       int                      lstio_grp_nmlen;       /* IN: name len */
-       char __user             *lstio_grp_namep;       /* IN: name */
-       struct lstcon_ndlist_ent __user *lstio_grp_entp;/* OUT: description
-                                                        * of group
-                                                        */
-       int __user              *lstio_grp_idxp;        /* IN/OUT: node index */
-       int __user              *lstio_grp_ndentp;      /* IN/OUT: # of nodent */
-       struct lstcon_node_ent __user *lstio_grp_dentsp;/* OUT: nodent array */
-};
-
-#define LST_DEFAULT_BATCH      "batch"                 /* default batch name */
-
-struct lstio_batch_add_args {
-       int      lstio_bat_key;         /* IN: session key */
-       int      lstio_bat_nmlen;       /* IN: name length */
-       char __user *lstio_bat_namep;   /* IN: batch name */
-};
-
-struct lstio_batch_del_args {
-       int      lstio_bat_key;         /* IN: session key */
-       int      lstio_bat_nmlen;       /* IN: name length */
-       char __user *lstio_bat_namep;   /* IN: batch name */
-};
-
-struct lstio_batch_run_args {
-       int                      lstio_bat_key;         /* IN: session key */
-       int                      lstio_bat_timeout;     /* IN: timeout for
-                                                        * the batch
-                                                        */
-       int                      lstio_bat_nmlen;       /* IN: name length */
-       char __user             *lstio_bat_namep;       /* IN: batch name */
-       struct list_head __user *lstio_bat_resultp;     /* OUT: list head of
-                                                        * result buffer
-                                                        */
-};
-
-struct lstio_batch_stop_args {
-       int                      lstio_bat_key;         /* IN: session key */
-       int                      lstio_bat_force;       /* IN: abort unfinished
-                                                        * test RPC
-                                                        */
-       int                      lstio_bat_nmlen;       /* IN: name length */
-       char __user             *lstio_bat_namep;       /* IN: batch name */
-       struct list_head __user *lstio_bat_resultp;     /* OUT: list head of
-                                                        * result buffer
-                                                        */
-};
-
-struct lstio_batch_query_args {
-       int                      lstio_bat_key;         /* IN: session key */
-       int                      lstio_bat_testidx;     /* IN: test index */
-       int                      lstio_bat_client;      /* IN: we testing
-                                                        * client?
-                                                        */
-       int                      lstio_bat_timeout;     /* IN: timeout for
-                                                        * waiting
-                                                        */
-       int                      lstio_bat_nmlen;       /* IN: name length */
-       char __user             *lstio_bat_namep;       /* IN: batch name */
-       struct list_head __user *lstio_bat_resultp;     /* OUT: list head of
-                                                        * result buffer
-                                                        */
-};
-
-struct lstio_batch_list_args {
-       int      lstio_bat_key;         /* IN: session key */
-       int      lstio_bat_idx;         /* IN: index */
-       int      lstio_bat_nmlen;       /* IN: name length */
-       char __user *lstio_bat_namep;   /* IN: batch name */
-};
-
-struct lstio_batch_info_args {
-       int                      lstio_bat_key;         /* IN: session key */
-       int                      lstio_bat_nmlen;       /* IN: name length */
-       char __user             *lstio_bat_namep;       /* IN: name */
-       int                      lstio_bat_server;      /* IN: query server
-                                                        * or not
-                                                        */
-       int                      lstio_bat_testidx;     /* IN: test index */
-       struct lstcon_test_batch_ent __user *lstio_bat_entp;/* OUT: batch ent */
-
-       int __user              *lstio_bat_idxp;        /* IN/OUT: index of node */
-       int __user              *lstio_bat_ndentp;      /* IN/OUT: # of nodent */
-       struct lstcon_node_ent __user *lstio_bat_dentsp;/* array of nodent */
-};
-
-/* add stat in session */
-struct lstio_stat_args {
-       int                      lstio_sta_key;         /* IN: session key */
-       int                      lstio_sta_timeout;     /* IN: timeout for
-                                                        * stat request
-                                                        */
-       int                      lstio_sta_nmlen;       /* IN: group name
-                                                        * length
-                                                        */
-       char __user             *lstio_sta_namep;       /* IN: group name */
-       int                      lstio_sta_count;       /* IN: # of pid */
-       struct lnet_process_id __user *lstio_sta_idsp;  /* IN: pid */
-       struct list_head __user *lstio_sta_resultp;     /* OUT: list head of
-                                                        * result buffer
-                                                        */
-};
-
-enum lst_test_type {
-       LST_TEST_BULK   = 1,
-       LST_TEST_PING   = 2
-};
-
-/* create a test in a batch */
-#define LST_MAX_CONCUR 1024    /* Max concurrency of test */
-
-struct lstio_test_args {
-       int               lstio_tes_key;        /* IN: session key */
-       int               lstio_tes_bat_nmlen;  /* IN: batch name len */
-       char __user      *lstio_tes_bat_name;   /* IN: batch name */
-       int               lstio_tes_type;       /* IN: test type */
-       int               lstio_tes_oneside;    /* IN: one sided test */
-       int               lstio_tes_loop;       /* IN: loop count */
-       int               lstio_tes_concur;     /* IN: concurrency */
-
-       int               lstio_tes_dist;       /* IN: node distribution in
-                                                * destination groups
-                                                */
-       int               lstio_tes_span;       /* IN: node span in
-                                                * destination groups
-                                                */
-       int               lstio_tes_sgrp_nmlen; /* IN: source group
-                                                * name length
-                                                */
-       char __user      *lstio_tes_sgrp_name;  /* IN: group name */
-       int               lstio_tes_dgrp_nmlen; /* IN: destination group
-                                                * name length
-                                                */
-       char __user      *lstio_tes_dgrp_name;  /* IN: group name */
-
-       int               lstio_tes_param_len;  /* IN: param buffer len */
-       void __user      *lstio_tes_param;      /* IN: parameter for specified
-                                                * test: lstio_bulk_param_t,
-                                                * lstio_ping_param_t,
-                                                * ... more
-                                                */
-       int __user       *lstio_tes_retp;       /* OUT: private returned
-                                                * value
-                                                */
-       struct list_head __user *lstio_tes_resultp;/* OUT: list head of
-                                                   * result buffer
-                                                   */
-};
-
-enum lst_brw_type {
-       LST_BRW_READ    = 1,
-       LST_BRW_WRITE   = 2
-};
-
-enum lst_brw_flags {
-       LST_BRW_CHECK_NONE      = 1,
-       LST_BRW_CHECK_SIMPLE    = 2,
-       LST_BRW_CHECK_FULL      = 3
-};
-
-struct lst_test_bulk_param {
-       int     blk_opc;        /* bulk operation code */
-       int     blk_size;       /* size (bytes) */
-       int     blk_time;       /* time of running the test*/
-       int     blk_flags;      /* reserved flags */
-       int     blk_cli_off;    /* bulk offset on client */
-       int     blk_srv_off;    /* reserved: bulk offset on server */
-};
-
-struct lst_test_ping_param {
-       int     png_size;       /* size of ping message */
-       int     png_time;       /* time */
-       int     png_loop;       /* loop */
-       int     png_flags;      /* reserved flags */
-};
-
-struct srpc_counters {
-       __u32 errors;
-       __u32 rpcs_sent;
-       __u32 rpcs_rcvd;
-       __u32 rpcs_dropped;
-       __u32 rpcs_expired;
-       __u64 bulk_get;
-       __u64 bulk_put;
-} WIRE_ATTR;
-
-struct sfw_counters {
-       /** milliseconds since current session started */
-       __u32 running_ms;
-       __u32 active_batches;
-       __u32 zombie_sessions;
-       __u32 brw_errors;
-       __u32 ping_errors;
-} WIRE_ATTR;
-
-#endif
diff --git a/drivers/staging/lustre/include/linux/lnet/nidstr.h b/drivers/staging/lustre/include/linux/lnet/nidstr.h
deleted file mode 100644 (file)
index ecdd0db..0000000
+++ /dev/null
@@ -1,119 +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.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.
- */
-#ifndef _LNET_NIDSTRINGS_H
-#define _LNET_NIDSTRINGS_H
-
-#include "types.h"
-
-/**
- *  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,
-       PTLLND          = 4,
-       O2IBLND         = 5,
-       CIBLND          = 6,
-       OPENIBLND       = 7,
-       IIBLND          = 8,
-       LOLND           = 9,
-       RALND           = 10,
-       VIBLND          = 11,
-       MXLND           = 12,
-       GNILND          = 13,
-       GNIIPLND        = 14,
-};
-
-struct list_head;
-
-#define LNET_NIDSTR_COUNT  1024    /* # of nidstrings */
-#define LNET_NIDSTR_SIZE   32      /* size of each one (see below for usage) */
-
-/* support decl needed by both kernel and user space */
-char *libcfs_next_nidstring(void);
-int libcfs_isknown_lnd(__u32 lnd);
-char *libcfs_lnd2modname(__u32 lnd);
-char *libcfs_lnd2str_r(__u32 lnd, char *buf, size_t buf_size);
-static inline char *libcfs_lnd2str(__u32 lnd)
-{
-       return libcfs_lnd2str_r(lnd, libcfs_next_nidstring(),
-                               LNET_NIDSTR_SIZE);
-}
-
-int libcfs_str2lnd(const char *str);
-char *libcfs_net2str_r(__u32 net, char *buf, size_t buf_size);
-static inline char *libcfs_net2str(__u32 net)
-{
-       return libcfs_net2str_r(net, libcfs_next_nidstring(),
-                               LNET_NIDSTR_SIZE);
-}
-
-char *libcfs_nid2str_r(lnet_nid_t nid, char *buf, size_t buf_size);
-static inline char *libcfs_nid2str(lnet_nid_t nid)
-{
-       return libcfs_nid2str_r(nid, libcfs_next_nidstring(),
-                               LNET_NIDSTR_SIZE);
-}
-
-__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(struct lnet_process_id id);
-void cfs_free_nidlist(struct list_head *list);
-int cfs_parse_nidlist(char *str, int len, struct list_head *list);
-int cfs_print_nidlist(char *buffer, int count, struct list_head *list);
-int cfs_match_nid(lnet_nid_t nid, struct list_head *list);
-
-int cfs_ip_addr_parse(char *str, int len, struct list_head *list);
-int cfs_ip_addr_match(__u32 addr, struct list_head *list);
-bool cfs_nidrange_is_contiguous(struct list_head *nidlist);
-void cfs_nidrange_find_min_max(struct list_head *nidlist, char *min_nid,
-                              char *max_nid, size_t nidstr_length);
-
-struct netstrfns {
-       __u32   nf_type;
-       char    *nf_name;
-       char    *nf_modname;
-       void    (*nf_addr2str)(__u32 addr, char *str, size_t size);
-       int     (*nf_str2addr)(const char *str, int nob, __u32 *addr);
-       int     (*nf_parse_addrlist)(char *str, int len,
-                                    struct list_head *list);
-       int     (*nf_print_addrlist)(char *buffer, int count,
-                                    struct list_head *list);
-       int     (*nf_match_addr)(__u32 addr, struct list_head *list);
-       bool    (*nf_is_contiguous)(struct list_head *nidlist);
-       void    (*nf_min_max)(struct list_head *nidlist, __u32 *min_nid,
-                             __u32 *max_nid);
-};
-
-#endif /* _LNET_NIDSTRINGS_H */
index 27ce6ce5c7104d03e98e671af6ee9e8453557f32..c24fe45be75ea4467b3037491889bdd4694c2875 100644 (file)
@@ -34,7 +34,7 @@
 #ifndef __LNET_LNET_SOCKLND_H__
 #define __LNET_LNET_SOCKLND_H__
 
-#include "types.h"
+#include "../../uapi/linux/lnet/lnet-types.h"
 #include "../../uapi/linux/lnet/socklnd.h"
 
 struct ksock_hello_msg {
diff --git a/drivers/staging/lustre/include/linux/lnet/types.h b/drivers/staging/lustre/include/linux/lnet/types.h
deleted file mode 100644 (file)
index 1be9b7a..0000000
+++ /dev/null
@@ -1,669 +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.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) 2012 - 2015, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Seagate, Inc.
- */
-
-#ifndef __LNET_TYPES_H__
-#define __LNET_TYPES_H__
-
-#include <linux/types.h>
-#include <linux/bvec.h>
-
-/** \addtogroup lnet
- * @{
- */
-
-#define LNET_VERSION           "0.6.0"
-
-/** \addtogroup lnet_addr
- * @{
- */
-
-/** Portal reserved for LNet's own use.
- * \see lustre/include/lustre/lustre_idl.h for Lustre portal assignments.
- */
-#define LNET_RESERVED_PORTAL   0
-
-/**
- * Address of an end-point in an LNet network.
- *
- * A node can have multiple end-points and hence multiple addresses.
- * An LNet network can be a simple network (e.g. tcp0) or a network of
- * LNet networks connected by LNet routers. Therefore an end-point address
- * has two parts: network ID, and address within a network.
- *
- * \see LNET_NIDNET, LNET_NIDADDR, and LNET_MKNID.
- */
-typedef __u64 lnet_nid_t;
-/**
- * ID of a process in a node. Shortened as PID to distinguish from
- * lnet_process_id, the global process ID.
- */
-typedef __u32 lnet_pid_t;
-
-/** wildcard NID that matches any end-point address */
-#define LNET_NID_ANY   ((lnet_nid_t)(-1))
-/** wildcard PID that matches any lnet_pid_t */
-#define LNET_PID_ANY   ((lnet_pid_t)(-1))
-
-#define LNET_PID_RESERVED 0xf0000000 /* reserved bits in PID */
-#define LNET_PID_USERFLAG 0x80000000 /* set in userspace peers */
-#define LNET_PID_LUSTRE          12345
-
-#define LNET_TIME_FOREVER (-1)
-
-/* how an LNET NID encodes net:address */
-/** extract the address part of an lnet_nid_t */
-
-static inline __u32 LNET_NIDADDR(lnet_nid_t nid)
-{
-       return nid & 0xffffffff;
-}
-
-static inline __u32 LNET_NIDNET(lnet_nid_t nid)
-{
-       return (nid >> 32) & 0xffffffff;
-}
-
-static inline lnet_nid_t LNET_MKNID(__u32 net, __u32 addr)
-{
-       return (((__u64)net) << 32) | addr;
-}
-
-static inline __u32 LNET_NETNUM(__u32 net)
-{
-       return net & 0xffff;
-}
-
-static inline __u32 LNET_NETTYP(__u32 net)
-{
-       return (net >> 16) & 0xffff;
-}
-
-static inline __u32 LNET_MKNET(__u32 type, __u32 num)
-{
-       return (type << 16) | num;
-}
-
-#define WIRE_ATTR      __packed
-
-/* Packed version of lnet_process_id to transfer via network */
-struct lnet_process_id_packed {
-       /* node id / process id */
-       lnet_nid_t      nid;
-       lnet_pid_t      pid;
-} WIRE_ATTR;
-
-/*
- * 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).
- */
-struct lnet_handle_wire {
-       __u64   wh_interface_cookie;
-       __u64   wh_object_cookie;
-} WIRE_ATTR;
-
-enum lnet_msg_type {
-       LNET_MSG_ACK = 0,
-       LNET_MSG_PUT,
-       LNET_MSG_GET,
-       LNET_MSG_REPLY,
-       LNET_MSG_HELLO,
-};
-
-/*
- * 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.
- */
-struct lnet_ack {
-       struct lnet_handle_wire dst_wmd;
-       __u64                   match_bits;
-       __u32                   mlength;
-} WIRE_ATTR;
-
-struct lnet_put {
-       struct lnet_handle_wire ack_wmd;
-       __u64                   match_bits;
-       __u64                   hdr_data;
-       __u32                   ptl_index;
-       __u32                   offset;
-} WIRE_ATTR;
-
-struct lnet_get {
-       struct lnet_handle_wire return_wmd;
-       __u64                   match_bits;
-       __u32                   ptl_index;
-       __u32                   src_offset;
-       __u32                   sink_length;
-} WIRE_ATTR;
-
-struct lnet_reply {
-       struct lnet_handle_wire dst_wmd;
-} WIRE_ATTR;
-
-struct lnet_hello {
-       __u64                   incarnation;
-       __u32                   type;
-} WIRE_ATTR;
-
-struct lnet_hdr {
-       lnet_nid_t      dest_nid;
-       lnet_nid_t      src_nid;
-       lnet_pid_t      dest_pid;
-       lnet_pid_t      src_pid;
-       __u32           type;           /* enum lnet_msg_type */
-       __u32           payload_length; /* payload data to follow */
-       /*<------__u64 aligned------->*/
-       union {
-               struct lnet_ack         ack;
-               struct lnet_put         put;
-               struct lnet_get         get;
-               struct lnet_reply       reply;
-               struct lnet_hello       hello;
-       } msg;
-} WIRE_ATTR;
-
-/*
- * 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 struct lnet_hdr::msg.
- */
-struct lnet_magicversion {
-       __u32   magic;          /* LNET_PROTO_TCP_MAGIC */
-       __u16   version_major;  /* increment on incompatible change */
-       __u16   version_minor;  /* increment on compatible change */
-} WIRE_ATTR;
-
-/* PROTO MAGIC for LNDs */
-#define LNET_PROTO_IB_MAGIC            0x0be91b91
-#define LNET_PROTO_GNI_MAGIC           0xb00fbabe /* ask Kim */
-#define LNET_PROTO_TCP_MAGIC           0xeebc0ded
-#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 */
-struct lnet_acceptor_connreq {
-       __u32   acr_magic;              /* PTL_ACCEPTOR_PROTO_MAGIC */
-       __u32   acr_version;            /* protocol version */
-       __u64   acr_nid;                /* target NID */
-} WIRE_ATTR;
-
-#define LNET_PROTO_ACCEPTOR_VERSION    1
-
-struct lnet_ni_status {
-       lnet_nid_t      ns_nid;
-       __u32           ns_status;
-       __u32           ns_unused;
-} WIRE_ATTR;
-
-struct lnet_ping_info {
-       __u32                   pi_magic;
-       __u32                   pi_features;
-       lnet_pid_t              pi_pid;
-       __u32                   pi_nnis;
-       struct lnet_ni_status   pi_ni[0];
-} WIRE_ATTR;
-
-struct lnet_counters {
-       __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;
-
-#define LNET_NI_STATUS_UP      0x15aac0de
-#define LNET_NI_STATUS_DOWN    0xdeadface
-#define LNET_NI_STATUS_INVALID 0x00000000
-
-#define LNET_MAX_INTERFACES    16
-
-/**
- * Objects maintained by the LNet are accessed through handles. Handle types
- * have names of the form lnet_handle_xx, where xx is one of the two letter
- * object type codes ('eq' for event queue, 'md' for memory descriptor, and
- * 'me' for match entry). Each type of object is given a unique handle type
- * to enhance type checking.
- */
-#define LNET_WIRE_HANDLE_COOKIE_NONE   (-1)
-
-struct lnet_handle_eq {
-       u64     cookie;
-};
-
-/**
- * Invalidate eq handle @h.
- */
-static inline void LNetInvalidateEQHandle(struct lnet_handle_eq *h)
-{
-       h->cookie = LNET_WIRE_HANDLE_COOKIE_NONE;
-}
-
-/**
- * Check whether eq handle @h is invalid.
- *
- * @return 1 if handle is invalid, 0 if valid.
- */
-static inline int LNetEQHandleIsInvalid(struct lnet_handle_eq h)
-{
-       return (LNET_WIRE_HANDLE_COOKIE_NONE == h.cookie);
-}
-
-struct lnet_handle_md {
-       u64     cookie;
-};
-
-/**
- * Invalidate md handle @h.
- */
-static inline void LNetInvalidateMDHandle(struct lnet_handle_md *h)
-{
-       h->cookie = LNET_WIRE_HANDLE_COOKIE_NONE;
-}
-
-/**
- * Check whether eq handle @h is invalid.
- *
- * @return 1 if handle is invalid, 0 if valid.
- */
-static inline int LNetMDHandleIsInvalid(struct lnet_handle_md h)
-{
-       return (LNET_WIRE_HANDLE_COOKIE_NONE == h.cookie);
-}
-
-struct lnet_handle_me {
-       u64     cookie;
-};
-
-/**
- * Global process ID.
- */
-struct lnet_process_id {
-       /** node id */
-       lnet_nid_t nid;
-       /** process id */
-       lnet_pid_t pid;
-};
-/** @} lnet_addr */
-
-/** \addtogroup lnet_me
- * @{
- */
-
-/**
- * Specifies whether the match entry or memory descriptor should be unlinked
- * automatically (LNET_UNLINK) or not (LNET_RETAIN).
- */
-enum lnet_unlink {
-       LNET_RETAIN = 0,
-       LNET_UNLINK
-};
-
-/**
- * Values of the type lnet_ins_pos are used to control where a new match
- * entry is inserted. The value LNET_INS_BEFORE is used to insert the new
- * entry before the current entry or before the head of the list. The value
- * LNET_INS_AFTER is used to insert the new entry after the current entry
- * or after the last item in the list.
- */
-enum lnet_ins_pos {
-       /** insert ME before current position or head of the list */
-       LNET_INS_BEFORE,
-       /** insert ME after current position or tail of the list */
-       LNET_INS_AFTER,
-       /** attach ME at tail of local CPU partition ME list */
-       LNET_INS_LOCAL
-};
-
-/** @} lnet_me */
-
-/** \addtogroup lnet_md
- * @{
- */
-
-/**
- * Defines the visible parts of a memory descriptor. Values of this type
- * are used to initialize memory descriptors.
- */
-struct lnet_md {
-       /**
-        * Specify the memory region associated with the memory descriptor.
-        * If the options field has:
-        * - LNET_MD_KIOV bit set: The start field points to the starting
-        * address of an array of struct bio_vec and the length field specifies
-        * the number of entries in the array. The length can't be bigger
-        * than LNET_MAX_IOV. The struct bio_vec is used to describe page-based
-        * fragments that are not necessarily mapped in virtual memory.
-        * - LNET_MD_IOVEC bit set: The start field points to the starting
-        * address of an array of struct iovec and the length field specifies
-        * the number of entries in the array. The length can't be bigger
-        * than LNET_MAX_IOV. The struct iovec is used to describe fragments
-        * that have virtual addresses.
-        * - Otherwise: The memory region is contiguous. The start field
-        * specifies the starting address for the memory region and the
-        * length field specifies its length.
-        *
-        * When the memory region is fragmented, all fragments but the first
-        * one must start on page boundary, and all but the last must end on
-        * page boundary.
-        */
-       void            *start;
-       unsigned int     length;
-       /**
-        * Specifies the maximum number of operations that can be performed
-        * on the memory descriptor. An operation is any action that could
-        * possibly generate an event. In the usual case, the threshold value
-        * is decremented for each operation on the MD. When the threshold
-        * drops to zero, the MD becomes inactive and does not respond to
-        * operations. A threshold value of LNET_MD_THRESH_INF indicates that
-        * there is no bound on the number of operations that may be applied
-        * to a MD.
-        */
-       int              threshold;
-       /**
-        * Specifies the largest incoming request that the memory descriptor
-        * should respond to. When the unused portion of a MD (length -
-        * local offset) falls below this value, the MD becomes inactive and
-        * does not respond to further operations. This value is only used
-        * if the LNET_MD_MAX_SIZE option is set.
-        */
-       int              max_size;
-       /**
-        * Specifies the behavior of the memory descriptor. A bitwise OR
-        * of the following values can be used:
-        * - LNET_MD_OP_PUT: The LNet PUT operation is allowed on this MD.
-        * - LNET_MD_OP_GET: The LNet GET operation is allowed on this MD.
-        * - LNET_MD_MANAGE_REMOTE: The offset used in accessing the memory
-        *   region is provided by the incoming request. By default, the
-        *   offset is maintained locally. When maintained locally, the
-        *   offset is incremented by the length of the request so that
-        *   the next operation (PUT or GET) will access the next part of
-        *   the memory region. Note that only one offset variable exists
-        *   per memory descriptor. If both PUT and GET operations are
-        *   performed on a memory descriptor, the offset is updated each time.
-        * - LNET_MD_TRUNCATE: The length provided in the incoming request can
-        *   be reduced to match the memory available in the region (determined
-        *   by subtracting the offset from the length of the memory region).
-        *   By default, if the length in the incoming operation is greater
-        *   than the amount of memory available, the operation is rejected.
-        * - LNET_MD_ACK_DISABLE: An acknowledgment should not be sent for
-        *   incoming PUT operations, even if requested. By default,
-        *   acknowledgments are sent for PUT operations that request an
-        *   acknowledgment. Acknowledgments are never sent for GET operations.
-        *   The data sent in the REPLY serves as an implicit acknowledgment.
-        * - LNET_MD_KIOV: The start and length fields specify an array of
-        *   struct bio_vec.
-        * - LNET_MD_IOVEC: The start and length fields specify an array of
-        *   struct iovec.
-        * - LNET_MD_MAX_SIZE: The max_size field is valid.
-        *
-        * Note:
-        * - LNET_MD_KIOV or LNET_MD_IOVEC allows for a scatter/gather
-        *   capability for memory descriptors. They can't be both set.
-        * - When LNET_MD_MAX_SIZE is set, the total length of the memory
-        *   region (i.e. sum of all fragment lengths) must not be less than
-        *   \a max_size.
-        */
-       unsigned int     options;
-       /**
-        * A user-specified value that is associated with the memory
-        * descriptor. The value does not need to be a pointer, but must fit
-        * in the space used by a pointer. This value is recorded in events
-        * associated with operations on this MD.
-        */
-       void            *user_ptr;
-       /**
-        * A handle for the event queue used to log the operations performed on
-        * the memory region. If this argument is a NULL handle (i.e. nullified
-        * by LNetInvalidateHandle()), operations performed on this memory
-        * descriptor are not logged.
-        */
-       struct lnet_handle_eq eq_handle;
-};
-
-/*
- * Max Transfer Unit (minimum supported everywhere).
- * CAVEAT EMPTOR, with multinet (i.e. routers forwarding between networks)
- * these limits are system wide and not interface-local.
- */
-#define LNET_MTU_BITS  20
-#define LNET_MTU       (1 << LNET_MTU_BITS)
-
-/** limit on the number of fragments in discontiguous MDs */
-#define LNET_MAX_IOV   256
-
-/**
- * Options for the MD structure. See lnet_md::options.
- */
-#define LNET_MD_OP_PUT         (1 << 0)
-/** See lnet_md::options. */
-#define LNET_MD_OP_GET         (1 << 1)
-/** See lnet_md::options. */
-#define LNET_MD_MANAGE_REMOTE  (1 << 2)
-/* unused                      (1 << 3) */
-/** See lnet_md::options. */
-#define LNET_MD_TRUNCATE       (1 << 4)
-/** See lnet_md::options. */
-#define LNET_MD_ACK_DISABLE    (1 << 5)
-/** See lnet_md::options. */
-#define LNET_MD_IOVEC          (1 << 6)
-/** See lnet_md::options. */
-#define LNET_MD_MAX_SIZE       (1 << 7)
-/** See lnet_md::options. */
-#define LNET_MD_KIOV           (1 << 8)
-
-/* For compatibility with Cray Portals */
-#define LNET_MD_PHYS           0
-
-/** Infinite threshold on MD operations. See lnet_md::threshold */
-#define LNET_MD_THRESH_INF     (-1)
-
-/** @} lnet_md */
-
-/** \addtogroup lnet_eq
- * @{
- */
-
-/**
- * Six types of events can be logged in an event queue.
- */
-enum lnet_event_kind {
-       /** An incoming GET operation has completed on the MD. */
-       LNET_EVENT_GET          = 1,
-       /**
-        * An incoming PUT operation has completed on the MD. The
-        * underlying layers will not alter the memory (on behalf of this
-        * operation) once this event has been logged.
-        */
-       LNET_EVENT_PUT,
-       /**
-        * A REPLY operation has completed. This event is logged after the
-        * data (if any) from the REPLY has been written into the MD.
-        */
-       LNET_EVENT_REPLY,
-       /** An acknowledgment has been received. */
-       LNET_EVENT_ACK,
-       /**
-        * An outgoing send (PUT or GET) operation has completed. This event
-        * is logged after the entire buffer has been sent and it is safe for
-        * the caller to reuse the buffer.
-        *
-        * Note:
-        * - The LNET_EVENT_SEND doesn't guarantee message delivery. It can
-        *   happen even when the message has not yet been put out on wire.
-        * - It's unsafe to assume that in an outgoing GET operation
-        *   the LNET_EVENT_SEND event would happen before the
-        *   LNET_EVENT_REPLY event. The same holds for LNET_EVENT_SEND and
-        *   LNET_EVENT_ACK events in an outgoing PUT operation.
-        */
-       LNET_EVENT_SEND,
-       /**
-        * A MD has been unlinked. Note that LNetMDUnlink() does not
-        * necessarily trigger an LNET_EVENT_UNLINK event.
-        * \see LNetMDUnlink
-        */
-       LNET_EVENT_UNLINK,
-};
-
-#define LNET_SEQ_GT(a, b)      (((signed long)((a) - (b))) > 0)
-
-/**
- * Information about an event on a MD.
- */
-struct lnet_event {
-       /** The identifier (nid, pid) of the target. */
-       struct lnet_process_id  target;
-       /** The identifier (nid, pid) of the initiator. */
-       struct lnet_process_id  initiator;
-       /**
-        * The NID of the immediate sender. If the request has been forwarded
-        * by routers, this is the NID of the last hop; otherwise it's the
-        * same as the initiator.
-        */
-       lnet_nid_t              sender;
-       /** Indicates the type of the event. */
-       enum lnet_event_kind    type;
-       /** The portal table index specified in the request */
-       unsigned int            pt_index;
-       /** A copy of the match bits specified in the request. */
-       __u64                   match_bits;
-       /** The length (in bytes) specified in the request. */
-       unsigned int            rlength;
-       /**
-        * The length (in bytes) of the data that was manipulated by the
-        * operation. For truncated operations, the manipulated length will be
-        * the number of bytes specified by the MD (possibly with an offset,
-        * see lnet_md). For all other operations, the manipulated length
-        * will be the length of the requested operation, i.e. rlength.
-        */
-       unsigned int            mlength;
-       /**
-        * The handle to the MD associated with the event. The handle may be
-        * invalid if the MD has been unlinked.
-        */
-       struct lnet_handle_md   md_handle;
-       /**
-        * A snapshot of the state of the MD immediately after the event has
-        * been processed. In particular, the threshold field in md will
-        * reflect the value of the threshold after the operation occurred.
-        */
-       struct lnet_md          md;
-       /**
-        * 64 bits of out-of-band user data. Only valid for LNET_EVENT_PUT.
-        * \see LNetPut
-        */
-       __u64                   hdr_data;
-       /**
-        * Indicates the completion status of the operation. It's 0 for
-        * successful operations, otherwise it's an error code.
-        */
-       int                     status;
-       /**
-        * Indicates whether the MD has been unlinked. Note that:
-        * - An event with unlinked set is the last event on the MD.
-        * - This field is also set for an explicit LNET_EVENT_UNLINK event.
-        * \see LNetMDUnlink
-        */
-       int                     unlinked;
-       /**
-        * The displacement (in bytes) into the memory region that the
-        * operation used. The offset can be determined by the operation for
-        * a remote managed MD or by the local MD.
-        * \see lnet_md::options
-        */
-       unsigned int            offset;
-       /**
-        * The sequence number for this event. Sequence numbers are unique
-        * to each event.
-        */
-       volatile unsigned long  sequence;
-};
-
-/**
- * Event queue handler function type.
- *
- * The EQ handler runs for each event that is deposited into the EQ. The
- * handler is supplied with a pointer to the event that triggered the
- * handler invocation.
- *
- * The handler must not block, must be reentrant, and must not call any LNet
- * API functions. It should return as quickly as possible.
- */
-typedef void (*lnet_eq_handler_t)(struct lnet_event *event);
-#define LNET_EQ_HANDLER_NONE NULL
-/** @} lnet_eq */
-
-/** \addtogroup lnet_data
- * @{
- */
-
-/**
- * Specify whether an acknowledgment should be sent by target when the PUT
- * operation completes (i.e., when the data has been written to a MD of the
- * target process).
- *
- * \see lnet_md::options for the discussion on LNET_MD_ACK_DISABLE by which
- * acknowledgments can be disabled for a MD.
- */
-enum lnet_ack_req {
-       /** Request an acknowledgment */
-       LNET_ACK_REQ,
-       /** Request that no acknowledgment should be generated. */
-       LNET_NOACK_REQ
-};
-/** @} lnet_data */
-
-/** @} lnet */
-#endif
diff --git a/drivers/staging/lustre/include/uapi/linux/lnet/libcfs_ioctl.h b/drivers/staging/lustre/include/uapi/linux/lnet/libcfs_ioctl.h
new file mode 100644 (file)
index 0000000..cce6b58
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * 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.gnu.org/licenses/gpl-2.0.html
+ *
+ * GPL HEADER END
+ */
+/*
+ * Copyright (c) 2008, 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.
+ *
+ * libcfs/include/libcfs/libcfs_ioctl.h
+ *
+ * Low-level ioctl data structures. Kernel ioctl functions declared here,
+ * and user space functions are in libcfs/util/ioctl.h.
+ *
+ */
+
+#ifndef __LIBCFS_IOCTL_H__
+#define __LIBCFS_IOCTL_H__
+
+#include <linux/types.h>
+#include <linux/ioctl.h>
+
+#define LIBCFS_IOCTL_VERSION   0x0001000a
+#define LIBCFS_IOCTL_VERSION2  0x0001000b
+
+struct libcfs_ioctl_hdr {
+       __u32 ioc_len;
+       __u32 ioc_version;
+};
+
+/** max size to copy from userspace */
+#define LIBCFS_IOC_DATA_MAX    (128 * 1024)
+
+struct libcfs_ioctl_data {
+       struct libcfs_ioctl_hdr ioc_hdr;
+
+       __u64 ioc_nid;
+       __u64 ioc_u64[1];
+
+       __u32 ioc_flags;
+       __u32 ioc_count;
+       __u32 ioc_net;
+       __u32 ioc_u32[7];
+
+       __u32 ioc_inllen1;
+       char *ioc_inlbuf1;
+       __u32 ioc_inllen2;
+       char *ioc_inlbuf2;
+
+       __u32 ioc_plen1; /* buffers in userspace */
+       void __user *ioc_pbuf1;
+       __u32 ioc_plen2; /* buffers in userspace */
+       void __user *ioc_pbuf2;
+
+       char ioc_bulk[0];
+};
+
+struct libcfs_debug_ioctl_data {
+       struct libcfs_ioctl_hdr hdr;
+       unsigned int subs;
+       unsigned int debug;
+};
+
+/* 'f' ioctls are defined in lustre_ioctl.h and lustre_user.h except for: */
+#define LIBCFS_IOC_DEBUG_MASK             _IOWR('f', 250, long)
+#define IOCTL_LIBCFS_TYPE                 long
+
+#define IOC_LIBCFS_TYPE                           ('e')
+#define IOC_LIBCFS_MIN_NR                 30
+/* libcfs ioctls */
+/* IOC_LIBCFS_PANIC obsolete in 2.8.0, was _IOWR('e', 30, IOCTL_LIBCFS_TYPE) */
+#define IOC_LIBCFS_CLEAR_DEBUG            _IOWR('e', 31, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_MARK_DEBUG             _IOWR('e', 32, IOCTL_LIBCFS_TYPE)
+/* IOC_LIBCFS_MEMHOG obsolete in 2.8.0, was _IOWR('e', 36, IOCTL_LIBCFS_TYPE) */
+/* lnet ioctls */
+#define IOC_LIBCFS_GET_NI                 _IOWR('e', 50, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_FAIL_NID               _IOWR('e', 51, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_NOTIFY_ROUTER          _IOWR('e', 55, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_UNCONFIGURE            _IOWR('e', 56, IOCTL_LIBCFS_TYPE)
+/*      IOC_LIBCFS_PORTALS_COMPATIBILITY  _IOWR('e', 57, IOCTL_LIBCFS_TYPE) */
+#define IOC_LIBCFS_LNET_DIST              _IOWR('e', 58, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_CONFIGURE              _IOWR('e', 59, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_TESTPROTOCOMPAT        _IOWR('e', 60, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_PING                           _IOWR('e', 61, IOCTL_LIBCFS_TYPE)
+/*     IOC_LIBCFS_DEBUG_PEER              _IOWR('e', 62, IOCTL_LIBCFS_TYPE) */
+#define IOC_LIBCFS_LNETST                 _IOWR('e', 63, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_LNET_FAULT             _IOWR('e', 64, IOCTL_LIBCFS_TYPE)
+/* lnd ioctls */
+#define IOC_LIBCFS_REGISTER_MYNID         _IOWR('e', 70, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_CLOSE_CONNECTION       _IOWR('e', 71, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_PUSH_CONNECTION        _IOWR('e', 72, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_GET_CONN               _IOWR('e', 73, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_DEL_PEER               _IOWR('e', 74, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_ADD_PEER               _IOWR('e', 75, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_GET_PEER               _IOWR('e', 76, IOCTL_LIBCFS_TYPE)
+/* ioctl 77 is free for use */
+#define IOC_LIBCFS_ADD_INTERFACE          _IOWR('e', 78, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_DEL_INTERFACE          _IOWR('e', 79, IOCTL_LIBCFS_TYPE)
+#define IOC_LIBCFS_GET_INTERFACE          _IOWR('e', 80, IOCTL_LIBCFS_TYPE)
+
+/*
+ * DLC Specific IOCTL numbers.
+ * In order to maintain backward compatibility with any possible external
+ * tools which might be accessing the IOCTL numbers, a new group of IOCTL
+ * number have been allocated.
+ */
+#define IOCTL_CONFIG_SIZE              struct lnet_ioctl_config_data
+#define IOC_LIBCFS_ADD_ROUTE           _IOWR(IOC_LIBCFS_TYPE, 81, IOCTL_CONFIG_SIZE)
+#define IOC_LIBCFS_DEL_ROUTE           _IOWR(IOC_LIBCFS_TYPE, 82, IOCTL_CONFIG_SIZE)
+#define IOC_LIBCFS_GET_ROUTE           _IOWR(IOC_LIBCFS_TYPE, 83, IOCTL_CONFIG_SIZE)
+#define IOC_LIBCFS_ADD_NET             _IOWR(IOC_LIBCFS_TYPE, 84, IOCTL_CONFIG_SIZE)
+#define IOC_LIBCFS_DEL_NET             _IOWR(IOC_LIBCFS_TYPE, 85, IOCTL_CONFIG_SIZE)
+#define IOC_LIBCFS_GET_NET             _IOWR(IOC_LIBCFS_TYPE, 86, IOCTL_CONFIG_SIZE)
+#define IOC_LIBCFS_CONFIG_RTR          _IOWR(IOC_LIBCFS_TYPE, 87, IOCTL_CONFIG_SIZE)
+#define IOC_LIBCFS_ADD_BUF             _IOWR(IOC_LIBCFS_TYPE, 88, IOCTL_CONFIG_SIZE)
+#define IOC_LIBCFS_GET_BUF             _IOWR(IOC_LIBCFS_TYPE, 89, IOCTL_CONFIG_SIZE)
+#define IOC_LIBCFS_GET_PEER_INFO       _IOWR(IOC_LIBCFS_TYPE, 90, IOCTL_CONFIG_SIZE)
+#define IOC_LIBCFS_GET_LNET_STATS      _IOWR(IOC_LIBCFS_TYPE, 91, IOCTL_CONFIG_SIZE)
+#define IOC_LIBCFS_MAX_NR              91
+
+#endif /* __LIBCFS_IOCTL_H__ */
diff --git a/drivers/staging/lustre/include/uapi/linux/lnet/lnet-dlc.h b/drivers/staging/lustre/include/uapi/linux/lnet/lnet-dlc.h
new file mode 100644 (file)
index 0000000..a3821d9
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * LGPL HEADER START
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library.
+ *
+ * LGPL HEADER END
+ *
+ */
+/*
+ * Copyright (c) 2014, Intel Corporation.
+ */
+/*
+ * Author: Amir Shehata <amir.shehata@intel.com>
+ */
+
+#ifndef LNET_DLC_H
+#define LNET_DLC_H
+
+#include "libcfs_ioctl.h"
+#include "lnet-types.h"
+
+#define MAX_NUM_SHOW_ENTRIES   32
+#define LNET_MAX_STR_LEN       128
+#define LNET_MAX_SHOW_NUM_CPT  128
+#define LNET_UNDEFINED_HOPS    ((__u32)(-1))
+
+struct lnet_ioctl_config_lnd_cmn_tunables {
+       __u32 lct_version;
+       __u32 lct_peer_timeout;
+       __u32 lct_peer_tx_credits;
+       __u32 lct_peer_rtr_credits;
+       __u32 lct_max_tx_credits;
+};
+
+struct lnet_ioctl_config_o2iblnd_tunables {
+       __u32 lnd_version;
+       __u32 lnd_peercredits_hiw;
+       __u32 lnd_map_on_demand;
+       __u32 lnd_concurrent_sends;
+       __u32 lnd_fmr_pool_size;
+       __u32 lnd_fmr_flush_trigger;
+       __u32 lnd_fmr_cache;
+       __u32 pad;
+};
+
+struct lnet_ioctl_config_lnd_tunables {
+       struct lnet_ioctl_config_lnd_cmn_tunables lt_cmn;
+       union {
+               struct lnet_ioctl_config_o2iblnd_tunables lt_o2ib;
+       } lt_tun_u;
+};
+
+struct lnet_ioctl_net_config {
+       char ni_interfaces[LNET_MAX_INTERFACES][LNET_MAX_STR_LEN];
+       __u32 ni_status;
+       __u32 ni_cpts[LNET_MAX_SHOW_NUM_CPT];
+       char cfg_bulk[0];
+};
+
+#define LNET_TINY_BUF_IDX      0
+#define LNET_SMALL_BUF_IDX     1
+#define LNET_LARGE_BUF_IDX     2
+
+/* # different router buffer pools */
+#define LNET_NRBPOOLS          (LNET_LARGE_BUF_IDX + 1)
+
+struct lnet_ioctl_pool_cfg {
+       struct {
+               __u32 pl_npages;
+               __u32 pl_nbuffers;
+               __u32 pl_credits;
+               __u32 pl_mincredits;
+       } pl_pools[LNET_NRBPOOLS];
+       __u32 pl_routing;
+};
+
+struct lnet_ioctl_config_data {
+       struct libcfs_ioctl_hdr cfg_hdr;
+
+       __u32 cfg_net;
+       __u32 cfg_count;
+       __u64 cfg_nid;
+       __u32 cfg_ncpts;
+
+       union {
+               struct {
+                       __u32 rtr_hop;
+                       __u32 rtr_priority;
+                       __u32 rtr_flags;
+               } cfg_route;
+               struct {
+                       char net_intf[LNET_MAX_STR_LEN];
+                       __s32 net_peer_timeout;
+                       __s32 net_peer_tx_credits;
+                       __s32 net_peer_rtr_credits;
+                       __s32 net_max_tx_credits;
+                       __u32 net_cksum_algo;
+                       __u32 net_interface_count;
+               } cfg_net;
+               struct {
+                       __u32 buf_enable;
+                       __s32 buf_tiny;
+                       __s32 buf_small;
+                       __s32 buf_large;
+               } cfg_buffers;
+       } cfg_config_u;
+
+       char cfg_bulk[0];
+};
+
+struct lnet_ioctl_peer {
+       struct libcfs_ioctl_hdr pr_hdr;
+       __u32 pr_count;
+       __u32 pr_pad;
+       __u64 pr_nid;
+
+       union {
+               struct {
+                       char cr_aliveness[LNET_MAX_STR_LEN];
+                       __u32 cr_refcount;
+                       __u32 cr_ni_peer_tx_credits;
+                       __u32 cr_peer_tx_credits;
+                       __u32 cr_peer_rtr_credits;
+                       __u32 cr_peer_min_rtr_credits;
+                       __u32 cr_peer_tx_qnob;
+                       __u32 cr_ncpt;
+               } pr_peer_credits;
+       } pr_lnd_u;
+};
+
+struct lnet_ioctl_lnet_stats {
+       struct libcfs_ioctl_hdr st_hdr;
+       struct lnet_counters st_cntrs;
+};
+
+#endif /* LNET_DLC_H */
diff --git a/drivers/staging/lustre/include/uapi/linux/lnet/lnet-types.h b/drivers/staging/lustre/include/uapi/linux/lnet/lnet-types.h
new file mode 100644 (file)
index 0000000..1be9b7a
--- /dev/null
@@ -0,0 +1,669 @@
+/*
+ * 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.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) 2012 - 2015, Intel Corporation.
+ */
+/*
+ * This file is part of Lustre, http://www.lustre.org/
+ * Lustre is a trademark of Seagate, Inc.
+ */
+
+#ifndef __LNET_TYPES_H__
+#define __LNET_TYPES_H__
+
+#include <linux/types.h>
+#include <linux/bvec.h>
+
+/** \addtogroup lnet
+ * @{
+ */
+
+#define LNET_VERSION           "0.6.0"
+
+/** \addtogroup lnet_addr
+ * @{
+ */
+
+/** Portal reserved for LNet's own use.
+ * \see lustre/include/lustre/lustre_idl.h for Lustre portal assignments.
+ */
+#define LNET_RESERVED_PORTAL   0
+
+/**
+ * Address of an end-point in an LNet network.
+ *
+ * A node can have multiple end-points and hence multiple addresses.
+ * An LNet network can be a simple network (e.g. tcp0) or a network of
+ * LNet networks connected by LNet routers. Therefore an end-point address
+ * has two parts: network ID, and address within a network.
+ *
+ * \see LNET_NIDNET, LNET_NIDADDR, and LNET_MKNID.
+ */
+typedef __u64 lnet_nid_t;
+/**
+ * ID of a process in a node. Shortened as PID to distinguish from
+ * lnet_process_id, the global process ID.
+ */
+typedef __u32 lnet_pid_t;
+
+/** wildcard NID that matches any end-point address */
+#define LNET_NID_ANY   ((lnet_nid_t)(-1))
+/** wildcard PID that matches any lnet_pid_t */
+#define LNET_PID_ANY   ((lnet_pid_t)(-1))
+
+#define LNET_PID_RESERVED 0xf0000000 /* reserved bits in PID */
+#define LNET_PID_USERFLAG 0x80000000 /* set in userspace peers */
+#define LNET_PID_LUSTRE          12345
+
+#define LNET_TIME_FOREVER (-1)
+
+/* how an LNET NID encodes net:address */
+/** extract the address part of an lnet_nid_t */
+
+static inline __u32 LNET_NIDADDR(lnet_nid_t nid)
+{
+       return nid & 0xffffffff;
+}
+
+static inline __u32 LNET_NIDNET(lnet_nid_t nid)
+{
+       return (nid >> 32) & 0xffffffff;
+}
+
+static inline lnet_nid_t LNET_MKNID(__u32 net, __u32 addr)
+{
+       return (((__u64)net) << 32) | addr;
+}
+
+static inline __u32 LNET_NETNUM(__u32 net)
+{
+       return net & 0xffff;
+}
+
+static inline __u32 LNET_NETTYP(__u32 net)
+{
+       return (net >> 16) & 0xffff;
+}
+
+static inline __u32 LNET_MKNET(__u32 type, __u32 num)
+{
+       return (type << 16) | num;
+}
+
+#define WIRE_ATTR      __packed
+
+/* Packed version of lnet_process_id to transfer via network */
+struct lnet_process_id_packed {
+       /* node id / process id */
+       lnet_nid_t      nid;
+       lnet_pid_t      pid;
+} WIRE_ATTR;
+
+/*
+ * 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).
+ */
+struct lnet_handle_wire {
+       __u64   wh_interface_cookie;
+       __u64   wh_object_cookie;
+} WIRE_ATTR;
+
+enum lnet_msg_type {
+       LNET_MSG_ACK = 0,
+       LNET_MSG_PUT,
+       LNET_MSG_GET,
+       LNET_MSG_REPLY,
+       LNET_MSG_HELLO,
+};
+
+/*
+ * 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.
+ */
+struct lnet_ack {
+       struct lnet_handle_wire dst_wmd;
+       __u64                   match_bits;
+       __u32                   mlength;
+} WIRE_ATTR;
+
+struct lnet_put {
+       struct lnet_handle_wire ack_wmd;
+       __u64                   match_bits;
+       __u64                   hdr_data;
+       __u32                   ptl_index;
+       __u32                   offset;
+} WIRE_ATTR;
+
+struct lnet_get {
+       struct lnet_handle_wire return_wmd;
+       __u64                   match_bits;
+       __u32                   ptl_index;
+       __u32                   src_offset;
+       __u32                   sink_length;
+} WIRE_ATTR;
+
+struct lnet_reply {
+       struct lnet_handle_wire dst_wmd;
+} WIRE_ATTR;
+
+struct lnet_hello {
+       __u64                   incarnation;
+       __u32                   type;
+} WIRE_ATTR;
+
+struct lnet_hdr {
+       lnet_nid_t      dest_nid;
+       lnet_nid_t      src_nid;
+       lnet_pid_t      dest_pid;
+       lnet_pid_t      src_pid;
+       __u32           type;           /* enum lnet_msg_type */
+       __u32           payload_length; /* payload data to follow */
+       /*<------__u64 aligned------->*/
+       union {
+               struct lnet_ack         ack;
+               struct lnet_put         put;
+               struct lnet_get         get;
+               struct lnet_reply       reply;
+               struct lnet_hello       hello;
+       } msg;
+} WIRE_ATTR;
+
+/*
+ * 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 struct lnet_hdr::msg.
+ */
+struct lnet_magicversion {
+       __u32   magic;          /* LNET_PROTO_TCP_MAGIC */
+       __u16   version_major;  /* increment on incompatible change */
+       __u16   version_minor;  /* increment on compatible change */
+} WIRE_ATTR;
+
+/* PROTO MAGIC for LNDs */
+#define LNET_PROTO_IB_MAGIC            0x0be91b91
+#define LNET_PROTO_GNI_MAGIC           0xb00fbabe /* ask Kim */
+#define LNET_PROTO_TCP_MAGIC           0xeebc0ded
+#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 */
+struct lnet_acceptor_connreq {
+       __u32   acr_magic;              /* PTL_ACCEPTOR_PROTO_MAGIC */
+       __u32   acr_version;            /* protocol version */
+       __u64   acr_nid;                /* target NID */
+} WIRE_ATTR;
+
+#define LNET_PROTO_ACCEPTOR_VERSION    1
+
+struct lnet_ni_status {
+       lnet_nid_t      ns_nid;
+       __u32           ns_status;
+       __u32           ns_unused;
+} WIRE_ATTR;
+
+struct lnet_ping_info {
+       __u32                   pi_magic;
+       __u32                   pi_features;
+       lnet_pid_t              pi_pid;
+       __u32                   pi_nnis;
+       struct lnet_ni_status   pi_ni[0];
+} WIRE_ATTR;
+
+struct lnet_counters {
+       __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;
+
+#define LNET_NI_STATUS_UP      0x15aac0de
+#define LNET_NI_STATUS_DOWN    0xdeadface
+#define LNET_NI_STATUS_INVALID 0x00000000
+
+#define LNET_MAX_INTERFACES    16
+
+/**
+ * Objects maintained by the LNet are accessed through handles. Handle types
+ * have names of the form lnet_handle_xx, where xx is one of the two letter
+ * object type codes ('eq' for event queue, 'md' for memory descriptor, and
+ * 'me' for match entry). Each type of object is given a unique handle type
+ * to enhance type checking.
+ */
+#define LNET_WIRE_HANDLE_COOKIE_NONE   (-1)
+
+struct lnet_handle_eq {
+       u64     cookie;
+};
+
+/**
+ * Invalidate eq handle @h.
+ */
+static inline void LNetInvalidateEQHandle(struct lnet_handle_eq *h)
+{
+       h->cookie = LNET_WIRE_HANDLE_COOKIE_NONE;
+}
+
+/**
+ * Check whether eq handle @h is invalid.
+ *
+ * @return 1 if handle is invalid, 0 if valid.
+ */
+static inline int LNetEQHandleIsInvalid(struct lnet_handle_eq h)
+{
+       return (LNET_WIRE_HANDLE_COOKIE_NONE == h.cookie);
+}
+
+struct lnet_handle_md {
+       u64     cookie;
+};
+
+/**
+ * Invalidate md handle @h.
+ */
+static inline void LNetInvalidateMDHandle(struct lnet_handle_md *h)
+{
+       h->cookie = LNET_WIRE_HANDLE_COOKIE_NONE;
+}
+
+/**
+ * Check whether eq handle @h is invalid.
+ *
+ * @return 1 if handle is invalid, 0 if valid.
+ */
+static inline int LNetMDHandleIsInvalid(struct lnet_handle_md h)
+{
+       return (LNET_WIRE_HANDLE_COOKIE_NONE == h.cookie);
+}
+
+struct lnet_handle_me {
+       u64     cookie;
+};
+
+/**
+ * Global process ID.
+ */
+struct lnet_process_id {
+       /** node id */
+       lnet_nid_t nid;
+       /** process id */
+       lnet_pid_t pid;
+};
+/** @} lnet_addr */
+
+/** \addtogroup lnet_me
+ * @{
+ */
+
+/**
+ * Specifies whether the match entry or memory descriptor should be unlinked
+ * automatically (LNET_UNLINK) or not (LNET_RETAIN).
+ */
+enum lnet_unlink {
+       LNET_RETAIN = 0,
+       LNET_UNLINK
+};
+
+/**
+ * Values of the type lnet_ins_pos are used to control where a new match
+ * entry is inserted. The value LNET_INS_BEFORE is used to insert the new
+ * entry before the current entry or before the head of the list. The value
+ * LNET_INS_AFTER is used to insert the new entry after the current entry
+ * or after the last item in the list.
+ */
+enum lnet_ins_pos {
+       /** insert ME before current position or head of the list */
+       LNET_INS_BEFORE,
+       /** insert ME after current position or tail of the list */
+       LNET_INS_AFTER,
+       /** attach ME at tail of local CPU partition ME list */
+       LNET_INS_LOCAL
+};
+
+/** @} lnet_me */
+
+/** \addtogroup lnet_md
+ * @{
+ */
+
+/**
+ * Defines the visible parts of a memory descriptor. Values of this type
+ * are used to initialize memory descriptors.
+ */
+struct lnet_md {
+       /**
+        * Specify the memory region associated with the memory descriptor.
+        * If the options field has:
+        * - LNET_MD_KIOV bit set: The start field points to the starting
+        * address of an array of struct bio_vec and the length field specifies
+        * the number of entries in the array. The length can't be bigger
+        * than LNET_MAX_IOV. The struct bio_vec is used to describe page-based
+        * fragments that are not necessarily mapped in virtual memory.
+        * - LNET_MD_IOVEC bit set: The start field points to the starting
+        * address of an array of struct iovec and the length field specifies
+        * the number of entries in the array. The length can't be bigger
+        * than LNET_MAX_IOV. The struct iovec is used to describe fragments
+        * that have virtual addresses.
+        * - Otherwise: The memory region is contiguous. The start field
+        * specifies the starting address for the memory region and the
+        * length field specifies its length.
+        *
+        * When the memory region is fragmented, all fragments but the first
+        * one must start on page boundary, and all but the last must end on
+        * page boundary.
+        */
+       void            *start;
+       unsigned int     length;
+       /**
+        * Specifies the maximum number of operations that can be performed
+        * on the memory descriptor. An operation is any action that could
+        * possibly generate an event. In the usual case, the threshold value
+        * is decremented for each operation on the MD. When the threshold
+        * drops to zero, the MD becomes inactive and does not respond to
+        * operations. A threshold value of LNET_MD_THRESH_INF indicates that
+        * there is no bound on the number of operations that may be applied
+        * to a MD.
+        */
+       int              threshold;
+       /**
+        * Specifies the largest incoming request that the memory descriptor
+        * should respond to. When the unused portion of a MD (length -
+        * local offset) falls below this value, the MD becomes inactive and
+        * does not respond to further operations. This value is only used
+        * if the LNET_MD_MAX_SIZE option is set.
+        */
+       int              max_size;
+       /**
+        * Specifies the behavior of the memory descriptor. A bitwise OR
+        * of the following values can be used:
+        * - LNET_MD_OP_PUT: The LNet PUT operation is allowed on this MD.
+        * - LNET_MD_OP_GET: The LNet GET operation is allowed on this MD.
+        * - LNET_MD_MANAGE_REMOTE: The offset used in accessing the memory
+        *   region is provided by the incoming request. By default, the
+        *   offset is maintained locally. When maintained locally, the
+        *   offset is incremented by the length of the request so that
+        *   the next operation (PUT or GET) will access the next part of
+        *   the memory region. Note that only one offset variable exists
+        *   per memory descriptor. If both PUT and GET operations are
+        *   performed on a memory descriptor, the offset is updated each time.
+        * - LNET_MD_TRUNCATE: The length provided in the incoming request can
+        *   be reduced to match the memory available in the region (determined
+        *   by subtracting the offset from the length of the memory region).
+        *   By default, if the length in the incoming operation is greater
+        *   than the amount of memory available, the operation is rejected.
+        * - LNET_MD_ACK_DISABLE: An acknowledgment should not be sent for
+        *   incoming PUT operations, even if requested. By default,
+        *   acknowledgments are sent for PUT operations that request an
+        *   acknowledgment. Acknowledgments are never sent for GET operations.
+        *   The data sent in the REPLY serves as an implicit acknowledgment.
+        * - LNET_MD_KIOV: The start and length fields specify an array of
+        *   struct bio_vec.
+        * - LNET_MD_IOVEC: The start and length fields specify an array of
+        *   struct iovec.
+        * - LNET_MD_MAX_SIZE: The max_size field is valid.
+        *
+        * Note:
+        * - LNET_MD_KIOV or LNET_MD_IOVEC allows for a scatter/gather
+        *   capability for memory descriptors. They can't be both set.
+        * - When LNET_MD_MAX_SIZE is set, the total length of the memory
+        *   region (i.e. sum of all fragment lengths) must not be less than
+        *   \a max_size.
+        */
+       unsigned int     options;
+       /**
+        * A user-specified value that is associated with the memory
+        * descriptor. The value does not need to be a pointer, but must fit
+        * in the space used by a pointer. This value is recorded in events
+        * associated with operations on this MD.
+        */
+       void            *user_ptr;
+       /**
+        * A handle for the event queue used to log the operations performed on
+        * the memory region. If this argument is a NULL handle (i.e. nullified
+        * by LNetInvalidateHandle()), operations performed on this memory
+        * descriptor are not logged.
+        */
+       struct lnet_handle_eq eq_handle;
+};
+
+/*
+ * Max Transfer Unit (minimum supported everywhere).
+ * CAVEAT EMPTOR, with multinet (i.e. routers forwarding between networks)
+ * these limits are system wide and not interface-local.
+ */
+#define LNET_MTU_BITS  20
+#define LNET_MTU       (1 << LNET_MTU_BITS)
+
+/** limit on the number of fragments in discontiguous MDs */
+#define LNET_MAX_IOV   256
+
+/**
+ * Options for the MD structure. See lnet_md::options.
+ */
+#define LNET_MD_OP_PUT         (1 << 0)
+/** See lnet_md::options. */
+#define LNET_MD_OP_GET         (1 << 1)
+/** See lnet_md::options. */
+#define LNET_MD_MANAGE_REMOTE  (1 << 2)
+/* unused                      (1 << 3) */
+/** See lnet_md::options. */
+#define LNET_MD_TRUNCATE       (1 << 4)
+/** See lnet_md::options. */
+#define LNET_MD_ACK_DISABLE    (1 << 5)
+/** See lnet_md::options. */
+#define LNET_MD_IOVEC          (1 << 6)
+/** See lnet_md::options. */
+#define LNET_MD_MAX_SIZE       (1 << 7)
+/** See lnet_md::options. */
+#define LNET_MD_KIOV           (1 << 8)
+
+/* For compatibility with Cray Portals */
+#define LNET_MD_PHYS           0
+
+/** Infinite threshold on MD operations. See lnet_md::threshold */
+#define LNET_MD_THRESH_INF     (-1)
+
+/** @} lnet_md */
+
+/** \addtogroup lnet_eq
+ * @{
+ */
+
+/**
+ * Six types of events can be logged in an event queue.
+ */
+enum lnet_event_kind {
+       /** An incoming GET operation has completed on the MD. */
+       LNET_EVENT_GET          = 1,
+       /**
+        * An incoming PUT operation has completed on the MD. The
+        * underlying layers will not alter the memory (on behalf of this
+        * operation) once this event has been logged.
+        */
+       LNET_EVENT_PUT,
+       /**
+        * A REPLY operation has completed. This event is logged after the
+        * data (if any) from the REPLY has been written into the MD.
+        */
+       LNET_EVENT_REPLY,
+       /** An acknowledgment has been received. */
+       LNET_EVENT_ACK,
+       /**
+        * An outgoing send (PUT or GET) operation has completed. This event
+        * is logged after the entire buffer has been sent and it is safe for
+        * the caller to reuse the buffer.
+        *
+        * Note:
+        * - The LNET_EVENT_SEND doesn't guarantee message delivery. It can
+        *   happen even when the message has not yet been put out on wire.
+        * - It's unsafe to assume that in an outgoing GET operation
+        *   the LNET_EVENT_SEND event would happen before the
+        *   LNET_EVENT_REPLY event. The same holds for LNET_EVENT_SEND and
+        *   LNET_EVENT_ACK events in an outgoing PUT operation.
+        */
+       LNET_EVENT_SEND,
+       /**
+        * A MD has been unlinked. Note that LNetMDUnlink() does not
+        * necessarily trigger an LNET_EVENT_UNLINK event.
+        * \see LNetMDUnlink
+        */
+       LNET_EVENT_UNLINK,
+};
+
+#define LNET_SEQ_GT(a, b)      (((signed long)((a) - (b))) > 0)
+
+/**
+ * Information about an event on a MD.
+ */
+struct lnet_event {
+       /** The identifier (nid, pid) of the target. */
+       struct lnet_process_id  target;
+       /** The identifier (nid, pid) of the initiator. */
+       struct lnet_process_id  initiator;
+       /**
+        * The NID of the immediate sender. If the request has been forwarded
+        * by routers, this is the NID of the last hop; otherwise it's the
+        * same as the initiator.
+        */
+       lnet_nid_t              sender;
+       /** Indicates the type of the event. */
+       enum lnet_event_kind    type;
+       /** The portal table index specified in the request */
+       unsigned int            pt_index;
+       /** A copy of the match bits specified in the request. */
+       __u64                   match_bits;
+       /** The length (in bytes) specified in the request. */
+       unsigned int            rlength;
+       /**
+        * The length (in bytes) of the data that was manipulated by the
+        * operation. For truncated operations, the manipulated length will be
+        * the number of bytes specified by the MD (possibly with an offset,
+        * see lnet_md). For all other operations, the manipulated length
+        * will be the length of the requested operation, i.e. rlength.
+        */
+       unsigned int            mlength;
+       /**
+        * The handle to the MD associated with the event. The handle may be
+        * invalid if the MD has been unlinked.
+        */
+       struct lnet_handle_md   md_handle;
+       /**
+        * A snapshot of the state of the MD immediately after the event has
+        * been processed. In particular, the threshold field in md will
+        * reflect the value of the threshold after the operation occurred.
+        */
+       struct lnet_md          md;
+       /**
+        * 64 bits of out-of-band user data. Only valid for LNET_EVENT_PUT.
+        * \see LNetPut
+        */
+       __u64                   hdr_data;
+       /**
+        * Indicates the completion status of the operation. It's 0 for
+        * successful operations, otherwise it's an error code.
+        */
+       int                     status;
+       /**
+        * Indicates whether the MD has been unlinked. Note that:
+        * - An event with unlinked set is the last event on the MD.
+        * - This field is also set for an explicit LNET_EVENT_UNLINK event.
+        * \see LNetMDUnlink
+        */
+       int                     unlinked;
+       /**
+        * The displacement (in bytes) into the memory region that the
+        * operation used. The offset can be determined by the operation for
+        * a remote managed MD or by the local MD.
+        * \see lnet_md::options
+        */
+       unsigned int            offset;
+       /**
+        * The sequence number for this event. Sequence numbers are unique
+        * to each event.
+        */
+       volatile unsigned long  sequence;
+};
+
+/**
+ * Event queue handler function type.
+ *
+ * The EQ handler runs for each event that is deposited into the EQ. The
+ * handler is supplied with a pointer to the event that triggered the
+ * handler invocation.
+ *
+ * The handler must not block, must be reentrant, and must not call any LNet
+ * API functions. It should return as quickly as possible.
+ */
+typedef void (*lnet_eq_handler_t)(struct lnet_event *event);
+#define LNET_EQ_HANDLER_NONE NULL
+/** @} lnet_eq */
+
+/** \addtogroup lnet_data
+ * @{
+ */
+
+/**
+ * Specify whether an acknowledgment should be sent by target when the PUT
+ * operation completes (i.e., when the data has been written to a MD of the
+ * target process).
+ *
+ * \see lnet_md::options for the discussion on LNET_MD_ACK_DISABLE by which
+ * acknowledgments can be disabled for a MD.
+ */
+enum lnet_ack_req {
+       /** Request an acknowledgment */
+       LNET_ACK_REQ,
+       /** Request that no acknowledgment should be generated. */
+       LNET_NOACK_REQ
+};
+/** @} lnet_data */
+
+/** @} lnet */
+#endif
diff --git a/drivers/staging/lustre/include/uapi/linux/lnet/lnetctl.h b/drivers/staging/lustre/include/uapi/linux/lnet/lnetctl.h
new file mode 100644 (file)
index 0000000..2ce1c50
--- /dev/null
@@ -0,0 +1,175 @@
+/*
+ *   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.
+ *
+ * header for lnet ioctl
+ */
+#ifndef _LNETCTL_H_
+#define _LNETCTL_H_
+
+#include "lnet-types.h"
+
+/** \addtogroup lnet_fault_simulation
+ * @{
+ */
+
+enum {
+       LNET_CTL_DROP_ADD,
+       LNET_CTL_DROP_DEL,
+       LNET_CTL_DROP_RESET,
+       LNET_CTL_DROP_LIST,
+       LNET_CTL_DELAY_ADD,
+       LNET_CTL_DELAY_DEL,
+       LNET_CTL_DELAY_RESET,
+       LNET_CTL_DELAY_LIST,
+};
+
+#define LNET_ACK_BIT           BIT(0)
+#define LNET_PUT_BIT           BIT(1)
+#define LNET_GET_BIT           BIT(2)
+#define LNET_REPLY_BIT         BIT(3)
+
+/** ioctl parameter for LNet fault simulation */
+struct lnet_fault_attr {
+       /**
+        * source NID of drop rule
+        * LNET_NID_ANY is wildcard for all sources
+        * 255.255.255.255@net is wildcard for all addresses from @net
+        */
+       lnet_nid_t                      fa_src;
+       /** destination NID of drop rule, see \a dr_src for details */
+       lnet_nid_t                      fa_dst;
+       /**
+        * Portal mask to drop, -1 means all portals, for example:
+        * fa_ptl_mask = (1 << _LDLM_CB_REQUEST_PORTAL ) |
+        *               (1 << LDLM_CANCEL_REQUEST_PORTAL)
+        *
+        * If it is non-zero then only PUT and GET will be filtered, otherwise
+        * there is no portal filter, all matched messages will be checked.
+        */
+       __u64                           fa_ptl_mask;
+       /**
+        * message types to drop, for example:
+        * dra_type = LNET_DROP_ACK_BIT | LNET_DROP_PUT_BIT
+        *
+        * If it is non-zero then only specified message types are filtered,
+        * otherwise all message types will be checked.
+        */
+       __u32                           fa_msg_mask;
+       union {
+               /** message drop simulation */
+               struct {
+                       /** drop rate of this rule */
+                       __u32                   da_rate;
+                       /**
+                        * time interval of message drop, it is exclusive
+                        * with da_rate
+                        */
+                       __u32                   da_interval;
+               } drop;
+               /** message latency simulation */
+               struct {
+                       __u32                   la_rate;
+                       /**
+                        * time interval of message delay, it is exclusive
+                        * with la_rate
+                        */
+                       __u32                   la_interval;
+                       /** latency to delay */
+                       __u32                   la_latency;
+               } delay;
+               __u64                   space[8];
+       } u;
+};
+
+/** fault simluation stats */
+struct lnet_fault_stat {
+       /** total # matched messages */
+       __u64                           fs_count;
+       /** # dropped LNET_MSG_PUT by this rule */
+       __u64                           fs_put;
+       /** # dropped LNET_MSG_ACK by this rule */
+       __u64                           fs_ack;
+       /** # dropped LNET_MSG_GET by this rule */
+       __u64                           fs_get;
+       /** # dropped LNET_MSG_REPLY by this rule */
+       __u64                           fs_reply;
+       union {
+               struct {
+                       /** total # dropped messages */
+                       __u64                   ds_dropped;
+               } drop;
+               struct {
+                       /** total # delayed messages */
+                       __u64                   ls_delayed;
+               } delay;
+               __u64                   space[8];
+       } u;
+};
+
+/** @} lnet_fault_simulation */
+
+#define LNET_DEV_ID 0
+#define LNET_DEV_PATH "/dev/lnet"
+#define LNET_DEV_MAJOR 10
+#define LNET_DEV_MINOR 240
+#define OBD_DEV_ID 1
+#define OBD_DEV_NAME "obd"
+#define OBD_DEV_PATH "/dev/" OBD_DEV_NAME
+#define OBD_DEV_MAJOR 10
+#define OBD_DEV_MINOR 241
+#define SMFS_DEV_ID  2
+#define SMFS_DEV_PATH "/dev/snapdev"
+#define SMFS_DEV_MAJOR 10
+#define SMFS_DEV_MINOR 242
+
+int ptl_initialize(int argc, char **argv);
+int jt_ptl_network(int argc, char **argv);
+int jt_ptl_list_nids(int argc, char **argv);
+int jt_ptl_which_nid(int argc, char **argv);
+int jt_ptl_print_interfaces(int argc, char **argv);
+int jt_ptl_add_interface(int argc, char **argv);
+int jt_ptl_del_interface(int argc, char **argv);
+int jt_ptl_print_peers(int argc, char **argv);
+int jt_ptl_add_peer(int argc, char **argv);
+int jt_ptl_del_peer(int argc, char **argv);
+int jt_ptl_print_connections(int argc, char **argv);
+int jt_ptl_disconnect(int argc, char **argv);
+int jt_ptl_push_connection(int argc, char **argv);
+int jt_ptl_print_active_txs(int argc, char **argv);
+int jt_ptl_ping(int argc, char **argv);
+int jt_ptl_mynid(int argc, char **argv);
+int jt_ptl_add_uuid(int argc, char **argv);
+int jt_ptl_add_uuid_old(int argc, char **argv); /* backwards compatibility  */
+int jt_ptl_close_uuid(int argc, char **argv);
+int jt_ptl_del_uuid(int argc, char **argv);
+int jt_ptl_add_route(int argc, char **argv);
+int jt_ptl_del_route(int argc, char **argv);
+int jt_ptl_notify_router(int argc, char **argv);
+int jt_ptl_print_routes(int argc, char **argv);
+int jt_ptl_fail_nid(int argc, char **argv);
+int jt_ptl_lwt(int argc, char **argv);
+int jt_ptl_testprotocompat(int argc, char **argv);
+int jt_ptl_memhog(int argc, char **argv);
+
+int dbg_initialize(int argc, char **argv);
+int jt_dbg_filter(int argc, char **argv);
+int jt_dbg_show(int argc, char **argv);
+int jt_dbg_list(int argc, char **argv);
+int jt_dbg_debug_kernel(int argc, char **argv);
+int jt_dbg_debug_daemon(int argc, char **argv);
+int jt_dbg_debug_file(int argc, char **argv);
+int jt_dbg_clear_debug_buf(int argc, char **argv);
+int jt_dbg_mark_debug_buf(int argc, char **argv);
+int jt_dbg_modules(int argc, char **argv);
+int jt_dbg_panic(int argc, char **argv);
+
+#endif
diff --git a/drivers/staging/lustre/include/uapi/linux/lnet/lnetst.h b/drivers/staging/lustre/include/uapi/linux/lnet/lnetst.h
new file mode 100644 (file)
index 0000000..a4f9ff0
--- /dev/null
@@ -0,0 +1,556 @@
+/*
+ * 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.gnu.org/licenses/gpl-2.0.html
+ *
+ * GPL HEADER END
+ */
+/*
+ * Copyright (c) 2007, 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 Seagate, Inc.
+ *
+ * lnet/include/lnet/lnetst.h
+ *
+ * Author: Liang Zhen <liang.zhen@intel.com>
+ */
+
+#ifndef __LNET_ST_H__
+#define __LNET_ST_H__
+
+#include <linux/types.h>
+
+#define LST_FEAT_NONE          (0)
+#define LST_FEAT_BULK_LEN      (1 << 0)        /* enable variable page size */
+
+#define LST_FEATS_EMPTY                (LST_FEAT_NONE)
+#define LST_FEATS_MASK         (LST_FEAT_NONE | LST_FEAT_BULK_LEN)
+
+#define LST_NAME_SIZE          32      /* max name buffer length */
+
+#define LSTIO_DEBUG            0xC00   /* debug */
+#define LSTIO_SESSION_NEW      0xC01   /* create session */
+#define LSTIO_SESSION_END      0xC02   /* end session */
+#define LSTIO_SESSION_INFO     0xC03   /* query session */
+#define LSTIO_GROUP_ADD                0xC10   /* add group */
+#define LSTIO_GROUP_LIST       0xC11   /* list all groups in session */
+#define LSTIO_GROUP_INFO       0xC12   /* query default information of
+                                        * specified group
+                                        */
+#define LSTIO_GROUP_DEL                0xC13   /* delete group */
+#define LSTIO_NODES_ADD                0xC14   /* add nodes to specified group */
+#define LSTIO_GROUP_UPDATE      0xC15  /* update group */
+#define LSTIO_BATCH_ADD                0xC20   /* add batch */
+#define LSTIO_BATCH_START      0xC21   /* start batch */
+#define LSTIO_BATCH_STOP       0xC22   /* stop batch */
+#define LSTIO_BATCH_DEL                0xC23   /* delete batch */
+#define LSTIO_BATCH_LIST       0xC24   /* show all batches in the session */
+#define LSTIO_BATCH_INFO       0xC25   /* show defail of specified batch */
+#define LSTIO_TEST_ADD         0xC26   /* add test (to batch) */
+#define LSTIO_BATCH_QUERY      0xC27   /* query batch status */
+#define LSTIO_STAT_QUERY       0xC30   /* get stats */
+
+struct lst_sid {
+       lnet_nid_t      ses_nid;        /* nid of console node */
+       __u64           ses_stamp;      /* time stamp */
+};                                     /*** session id */
+
+extern struct lst_sid LST_INVALID_SID;
+
+struct lst_bid {
+       __u64   bat_id;         /* unique id in session */
+};                             /*** batch id (group of tests) */
+
+/* Status of test node */
+#define LST_NODE_ACTIVE                0x1     /* node in this session */
+#define LST_NODE_BUSY          0x2     /* node is taken by other session */
+#define LST_NODE_DOWN          0x4     /* node is down */
+#define LST_NODE_UNKNOWN       0x8     /* node not in session */
+
+struct lstcon_node_ent {
+       struct lnet_process_id  nde_id;         /* id of node */
+       int                     nde_state;      /* state of node */
+};                             /*** node entry, for list_group command */
+
+struct lstcon_ndlist_ent {
+       int     nle_nnode;      /* # of nodes */
+       int     nle_nactive;    /* # of active nodes */
+       int     nle_nbusy;      /* # of busy nodes */
+       int     nle_ndown;      /* # of down nodes */
+       int     nle_nunknown;   /* # of unknown nodes */
+};                             /*** node_list entry, for list_batch command */
+
+struct lstcon_test_ent {
+       int     tse_type;       /* test type */
+       int     tse_loop;       /* loop count */
+       int     tse_concur;     /* concurrency of test */
+};                             /* test summary entry, for
+                                * list_batch command
+                                */
+
+struct lstcon_batch_ent {
+       int     bae_state;      /* batch status */
+       int     bae_timeout;    /* batch timeout */
+       int     bae_ntest;      /* # of tests in the batch */
+};                             /* batch summary entry, for
+                                * list_batch command
+                                */
+
+struct lstcon_test_batch_ent {
+       struct lstcon_ndlist_ent   tbe_cli_nle; /* client (group) node_list
+                                                * entry
+                                                */
+       struct lstcon_ndlist_ent   tbe_srv_nle; /* server (group) node_list
+                                                * entry
+                                                */
+       union {
+               struct lstcon_test_ent  tbe_test; /* test entry */
+               struct lstcon_batch_ent tbe_batch;/* batch entry */
+       } u;
+};                             /* test/batch verbose information entry,
+                                * for list_batch command
+                                */
+
+struct lstcon_rpc_ent {
+       struct list_head        rpe_link;       /* link chain */
+       struct lnet_process_id  rpe_peer;       /* peer's id */
+       struct timeval          rpe_stamp;      /* time stamp of RPC */
+       int                     rpe_state;      /* peer's state */
+       int                     rpe_rpc_errno;  /* RPC errno */
+
+       struct lst_sid          rpe_sid;        /* peer's session id */
+       int                     rpe_fwk_errno;  /* framework errno */
+       int                     rpe_priv[4];    /* private data */
+       char                    rpe_payload[0]; /* private reply payload */
+};
+
+struct lstcon_trans_stat {
+       int     trs_rpc_stat[4];        /* RPCs stat (0: total 1: failed
+                                        * 2: finished
+                                        * 4: reserved
+                                        */
+       int     trs_rpc_errno;          /* RPC errno */
+       int     trs_fwk_stat[8];        /* framework stat */
+       int     trs_fwk_errno;          /* errno of the first remote error */
+       void    *trs_fwk_private;       /* private framework stat */
+};
+
+static inline int
+lstcon_rpc_stat_total(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_rpc_stat[0] : stat->trs_rpc_stat[0];
+}
+
+static inline int
+lstcon_rpc_stat_success(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_rpc_stat[1] : stat->trs_rpc_stat[1];
+}
+
+static inline int
+lstcon_rpc_stat_failure(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_rpc_stat[2] : stat->trs_rpc_stat[2];
+}
+
+static inline int
+lstcon_sesop_stat_success(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_fwk_stat[0] : stat->trs_fwk_stat[0];
+}
+
+static inline int
+lstcon_sesop_stat_failure(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_fwk_stat[1] : stat->trs_fwk_stat[1];
+}
+
+static inline int
+lstcon_sesqry_stat_active(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_fwk_stat[0] : stat->trs_fwk_stat[0];
+}
+
+static inline int
+lstcon_sesqry_stat_busy(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_fwk_stat[1] : stat->trs_fwk_stat[1];
+}
+
+static inline int
+lstcon_sesqry_stat_unknown(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_fwk_stat[2] : stat->trs_fwk_stat[2];
+}
+
+static inline int
+lstcon_tsbop_stat_success(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_fwk_stat[0] : stat->trs_fwk_stat[0];
+}
+
+static inline int
+lstcon_tsbop_stat_failure(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_fwk_stat[1] : stat->trs_fwk_stat[1];
+}
+
+static inline int
+lstcon_tsbqry_stat_idle(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_fwk_stat[0] : stat->trs_fwk_stat[0];
+}
+
+static inline int
+lstcon_tsbqry_stat_run(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_fwk_stat[1] : stat->trs_fwk_stat[1];
+}
+
+static inline int
+lstcon_tsbqry_stat_failure(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_fwk_stat[2] : stat->trs_fwk_stat[2];
+}
+
+static inline int
+lstcon_statqry_stat_success(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_fwk_stat[0] : stat->trs_fwk_stat[0];
+}
+
+static inline int
+lstcon_statqry_stat_failure(struct lstcon_trans_stat *stat, int inc)
+{
+       return inc ? ++stat->trs_fwk_stat[1] : stat->trs_fwk_stat[1];
+}
+
+/* create a session */
+struct lstio_session_new_args {
+       int              lstio_ses_key;         /* IN: local key */
+       int              lstio_ses_timeout;     /* IN: session timeout */
+       int              lstio_ses_force;       /* IN: force create ? */
+       /** IN: session features */
+       unsigned int     lstio_ses_feats;
+       struct lst_sid __user *lstio_ses_idp;   /* OUT: session id */
+       int              lstio_ses_nmlen;       /* IN: name length */
+       char __user      *lstio_ses_namep;      /* IN: session name */
+};
+
+/* query current session */
+struct lstio_session_info_args {
+       struct lst_sid __user   *lstio_ses_idp;         /* OUT: session id */
+       int __user              *lstio_ses_keyp;        /* OUT: local key */
+       /** OUT: session features */
+       unsigned int __user     *lstio_ses_featp;
+       struct lstcon_ndlist_ent __user *lstio_ses_ndinfo;/* OUT: */
+       int                      lstio_ses_nmlen;       /* IN: name length */
+       char __user             *lstio_ses_namep;       /* OUT: session name */
+};
+
+/* delete a session */
+struct lstio_session_end_args {
+       int                     lstio_ses_key;  /* IN: session key */
+};
+
+#define LST_OPC_SESSION                1
+#define LST_OPC_GROUP          2
+#define LST_OPC_NODES          3
+#define LST_OPC_BATCHCLI       4
+#define LST_OPC_BATCHSRV       5
+
+struct lstio_debug_args {
+       int                      lstio_dbg_key;         /* IN: session key */
+       int                      lstio_dbg_type;        /* IN: debug
+                                                        * session|batch|
+                                                        * group|nodes list
+                                                        */
+       int                      lstio_dbg_flags;       /* IN: reserved debug
+                                                        * flags
+                                                        */
+       int                      lstio_dbg_timeout;     /* IN: timeout of
+                                                        * debug
+                                                        */
+       int                      lstio_dbg_nmlen;       /* IN: len of name */
+       char __user             *lstio_dbg_namep;       /* IN: name of
+                                                        * group|batch
+                                                        */
+       int                      lstio_dbg_count;       /* IN: # of test nodes
+                                                        * to debug
+                                                        */
+       struct lnet_process_id __user *lstio_dbg_idsp;  /* IN: id of test
+                                                        * nodes
+                                                        */
+       struct list_head __user *lstio_dbg_resultp;     /* OUT: list head of
+                                                        * result buffer
+                                                        */
+};
+
+struct lstio_group_add_args {
+       int              lstio_grp_key;         /* IN: session key */
+       int              lstio_grp_nmlen;       /* IN: name length */
+       char __user     *lstio_grp_namep;       /* IN: group name */
+};
+
+struct lstio_group_del_args {
+       int              lstio_grp_key;         /* IN: session key */
+       int              lstio_grp_nmlen;       /* IN: name length */
+       char __user     *lstio_grp_namep;       /* IN: group name */
+};
+
+#define LST_GROUP_CLEAN                1       /* remove inactive nodes in the group */
+#define LST_GROUP_REFRESH      2       /* refresh inactive nodes
+                                        * in the group
+                                        */
+#define LST_GROUP_RMND         3       /* delete nodes from the group */
+
+struct lstio_group_update_args {
+       int                      lstio_grp_key;         /* IN: session key */
+       int                      lstio_grp_opc;         /* IN: OPC */
+       int                      lstio_grp_args;        /* IN: arguments */
+       int                      lstio_grp_nmlen;       /* IN: name length */
+       char __user             *lstio_grp_namep;       /* IN: group name */
+       int                      lstio_grp_count;       /* IN: # of nodes id */
+       struct lnet_process_id __user *lstio_grp_idsp;  /* IN: array of nodes */
+       struct list_head __user *lstio_grp_resultp;     /* OUT: list head of
+                                                        * result buffer
+                                                        */
+};
+
+struct lstio_group_nodes_args {
+       int                      lstio_grp_key;         /* IN: session key */
+       int                      lstio_grp_nmlen;       /* IN: name length */
+       char __user             *lstio_grp_namep;       /* IN: group name */
+       int                      lstio_grp_count;       /* IN: # of nodes */
+       /** OUT: session features */
+       unsigned int __user     *lstio_grp_featp;
+       struct lnet_process_id __user *lstio_grp_idsp;  /* IN: nodes */
+       struct list_head __user *lstio_grp_resultp;     /* OUT: list head of
+                                                        * result buffer
+                                                        */
+};
+
+struct lstio_group_list_args {
+       int      lstio_grp_key;         /* IN: session key */
+       int      lstio_grp_idx;         /* IN: group idx */
+       int      lstio_grp_nmlen;       /* IN: name len */
+       char __user *lstio_grp_namep;   /* OUT: name */
+};
+
+struct lstio_group_info_args {
+       int                      lstio_grp_key;         /* IN: session key */
+       int                      lstio_grp_nmlen;       /* IN: name len */
+       char __user             *lstio_grp_namep;       /* IN: name */
+       struct lstcon_ndlist_ent __user *lstio_grp_entp;/* OUT: description
+                                                        * of group
+                                                        */
+       int __user              *lstio_grp_idxp;        /* IN/OUT: node index */
+       int __user              *lstio_grp_ndentp;      /* IN/OUT: # of nodent */
+       struct lstcon_node_ent __user *lstio_grp_dentsp;/* OUT: nodent array */
+};
+
+#define LST_DEFAULT_BATCH      "batch"                 /* default batch name */
+
+struct lstio_batch_add_args {
+       int      lstio_bat_key;         /* IN: session key */
+       int      lstio_bat_nmlen;       /* IN: name length */
+       char __user *lstio_bat_namep;   /* IN: batch name */
+};
+
+struct lstio_batch_del_args {
+       int      lstio_bat_key;         /* IN: session key */
+       int      lstio_bat_nmlen;       /* IN: name length */
+       char __user *lstio_bat_namep;   /* IN: batch name */
+};
+
+struct lstio_batch_run_args {
+       int                      lstio_bat_key;         /* IN: session key */
+       int                      lstio_bat_timeout;     /* IN: timeout for
+                                                        * the batch
+                                                        */
+       int                      lstio_bat_nmlen;       /* IN: name length */
+       char __user             *lstio_bat_namep;       /* IN: batch name */
+       struct list_head __user *lstio_bat_resultp;     /* OUT: list head of
+                                                        * result buffer
+                                                        */
+};
+
+struct lstio_batch_stop_args {
+       int                      lstio_bat_key;         /* IN: session key */
+       int                      lstio_bat_force;       /* IN: abort unfinished
+                                                        * test RPC
+                                                        */
+       int                      lstio_bat_nmlen;       /* IN: name length */
+       char __user             *lstio_bat_namep;       /* IN: batch name */
+       struct list_head __user *lstio_bat_resultp;     /* OUT: list head of
+                                                        * result buffer
+                                                        */
+};
+
+struct lstio_batch_query_args {
+       int                      lstio_bat_key;         /* IN: session key */
+       int                      lstio_bat_testidx;     /* IN: test index */
+       int                      lstio_bat_client;      /* IN: we testing
+                                                        * client?
+                                                        */
+       int                      lstio_bat_timeout;     /* IN: timeout for
+                                                        * waiting
+                                                        */
+       int                      lstio_bat_nmlen;       /* IN: name length */
+       char __user             *lstio_bat_namep;       /* IN: batch name */
+       struct list_head __user *lstio_bat_resultp;     /* OUT: list head of
+                                                        * result buffer
+                                                        */
+};
+
+struct lstio_batch_list_args {
+       int      lstio_bat_key;         /* IN: session key */
+       int      lstio_bat_idx;         /* IN: index */
+       int      lstio_bat_nmlen;       /* IN: name length */
+       char __user *lstio_bat_namep;   /* IN: batch name */
+};
+
+struct lstio_batch_info_args {
+       int                      lstio_bat_key;         /* IN: session key */
+       int                      lstio_bat_nmlen;       /* IN: name length */
+       char __user             *lstio_bat_namep;       /* IN: name */
+       int                      lstio_bat_server;      /* IN: query server
+                                                        * or not
+                                                        */
+       int                      lstio_bat_testidx;     /* IN: test index */
+       struct lstcon_test_batch_ent __user *lstio_bat_entp;/* OUT: batch ent */
+
+       int __user              *lstio_bat_idxp;        /* IN/OUT: index of node */
+       int __user              *lstio_bat_ndentp;      /* IN/OUT: # of nodent */
+       struct lstcon_node_ent __user *lstio_bat_dentsp;/* array of nodent */
+};
+
+/* add stat in session */
+struct lstio_stat_args {
+       int                      lstio_sta_key;         /* IN: session key */
+       int                      lstio_sta_timeout;     /* IN: timeout for
+                                                        * stat request
+                                                        */
+       int                      lstio_sta_nmlen;       /* IN: group name
+                                                        * length
+                                                        */
+       char __user             *lstio_sta_namep;       /* IN: group name */
+       int                      lstio_sta_count;       /* IN: # of pid */
+       struct lnet_process_id __user *lstio_sta_idsp;  /* IN: pid */
+       struct list_head __user *lstio_sta_resultp;     /* OUT: list head of
+                                                        * result buffer
+                                                        */
+};
+
+enum lst_test_type {
+       LST_TEST_BULK   = 1,
+       LST_TEST_PING   = 2
+};
+
+/* create a test in a batch */
+#define LST_MAX_CONCUR 1024    /* Max concurrency of test */
+
+struct lstio_test_args {
+       int               lstio_tes_key;        /* IN: session key */
+       int               lstio_tes_bat_nmlen;  /* IN: batch name len */
+       char __user      *lstio_tes_bat_name;   /* IN: batch name */
+       int               lstio_tes_type;       /* IN: test type */
+       int               lstio_tes_oneside;    /* IN: one sided test */
+       int               lstio_tes_loop;       /* IN: loop count */
+       int               lstio_tes_concur;     /* IN: concurrency */
+
+       int               lstio_tes_dist;       /* IN: node distribution in
+                                                * destination groups
+                                                */
+       int               lstio_tes_span;       /* IN: node span in
+                                                * destination groups
+                                                */
+       int               lstio_tes_sgrp_nmlen; /* IN: source group
+                                                * name length
+                                                */
+       char __user      *lstio_tes_sgrp_name;  /* IN: group name */
+       int               lstio_tes_dgrp_nmlen; /* IN: destination group
+                                                * name length
+                                                */
+       char __user      *lstio_tes_dgrp_name;  /* IN: group name */
+
+       int               lstio_tes_param_len;  /* IN: param buffer len */
+       void __user      *lstio_tes_param;      /* IN: parameter for specified
+                                                * test: lstio_bulk_param_t,
+                                                * lstio_ping_param_t,
+                                                * ... more
+                                                */
+       int __user       *lstio_tes_retp;       /* OUT: private returned
+                                                * value
+                                                */
+       struct list_head __user *lstio_tes_resultp;/* OUT: list head of
+                                                   * result buffer
+                                                   */
+};
+
+enum lst_brw_type {
+       LST_BRW_READ    = 1,
+       LST_BRW_WRITE   = 2
+};
+
+enum lst_brw_flags {
+       LST_BRW_CHECK_NONE      = 1,
+       LST_BRW_CHECK_SIMPLE    = 2,
+       LST_BRW_CHECK_FULL      = 3
+};
+
+struct lst_test_bulk_param {
+       int     blk_opc;        /* bulk operation code */
+       int     blk_size;       /* size (bytes) */
+       int     blk_time;       /* time of running the test*/
+       int     blk_flags;      /* reserved flags */
+       int     blk_cli_off;    /* bulk offset on client */
+       int     blk_srv_off;    /* reserved: bulk offset on server */
+};
+
+struct lst_test_ping_param {
+       int     png_size;       /* size of ping message */
+       int     png_time;       /* time */
+       int     png_loop;       /* loop */
+       int     png_flags;      /* reserved flags */
+};
+
+struct srpc_counters {
+       __u32 errors;
+       __u32 rpcs_sent;
+       __u32 rpcs_rcvd;
+       __u32 rpcs_dropped;
+       __u32 rpcs_expired;
+       __u64 bulk_get;
+       __u64 bulk_put;
+} WIRE_ATTR;
+
+struct sfw_counters {
+       /** milliseconds since current session started */
+       __u32 running_ms;
+       __u32 active_batches;
+       __u32 zombie_sessions;
+       __u32 brw_errors;
+       __u32 ping_errors;
+} WIRE_ATTR;
+
+#endif
diff --git a/drivers/staging/lustre/include/uapi/linux/lnet/nidstr.h b/drivers/staging/lustre/include/uapi/linux/lnet/nidstr.h
new file mode 100644 (file)
index 0000000..d153c97
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * 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.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.
+ */
+#ifndef _LNET_NIDSTRINGS_H
+#define _LNET_NIDSTRINGS_H
+
+#include "lnet-types.h"
+
+/**
+ *  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,
+       PTLLND          = 4,
+       O2IBLND         = 5,
+       CIBLND          = 6,
+       OPENIBLND       = 7,
+       IIBLND          = 8,
+       LOLND           = 9,
+       RALND           = 10,
+       VIBLND          = 11,
+       MXLND           = 12,
+       GNILND          = 13,
+       GNIIPLND        = 14,
+};
+
+struct list_head;
+
+#define LNET_NIDSTR_COUNT  1024    /* # of nidstrings */
+#define LNET_NIDSTR_SIZE   32      /* size of each one (see below for usage) */
+
+/* support decl needed by both kernel and user space */
+char *libcfs_next_nidstring(void);
+int libcfs_isknown_lnd(__u32 lnd);
+char *libcfs_lnd2modname(__u32 lnd);
+char *libcfs_lnd2str_r(__u32 lnd, char *buf, size_t buf_size);
+static inline char *libcfs_lnd2str(__u32 lnd)
+{
+       return libcfs_lnd2str_r(lnd, libcfs_next_nidstring(),
+                               LNET_NIDSTR_SIZE);
+}
+
+int libcfs_str2lnd(const char *str);
+char *libcfs_net2str_r(__u32 net, char *buf, size_t buf_size);
+static inline char *libcfs_net2str(__u32 net)
+{
+       return libcfs_net2str_r(net, libcfs_next_nidstring(),
+                               LNET_NIDSTR_SIZE);
+}
+
+char *libcfs_nid2str_r(lnet_nid_t nid, char *buf, size_t buf_size);
+static inline char *libcfs_nid2str(lnet_nid_t nid)
+{
+       return libcfs_nid2str_r(nid, libcfs_next_nidstring(),
+                               LNET_NIDSTR_SIZE);
+}
+
+__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(struct lnet_process_id id);
+void cfs_free_nidlist(struct list_head *list);
+int cfs_parse_nidlist(char *str, int len, struct list_head *list);
+int cfs_print_nidlist(char *buffer, int count, struct list_head *list);
+int cfs_match_nid(lnet_nid_t nid, struct list_head *list);
+
+int cfs_ip_addr_parse(char *str, int len, struct list_head *list);
+int cfs_ip_addr_match(__u32 addr, struct list_head *list);
+bool cfs_nidrange_is_contiguous(struct list_head *nidlist);
+void cfs_nidrange_find_min_max(struct list_head *nidlist, char *min_nid,
+                              char *max_nid, size_t nidstr_length);
+
+struct netstrfns {
+       __u32   nf_type;
+       char    *nf_name;
+       char    *nf_modname;
+       void    (*nf_addr2str)(__u32 addr, char *str, size_t size);
+       int     (*nf_str2addr)(const char *str, int nob, __u32 *addr);
+       int     (*nf_parse_addrlist)(char *str, int len,
+                                    struct list_head *list);
+       int     (*nf_print_addrlist)(char *buffer, int count,
+                                    struct list_head *list);
+       int     (*nf_match_addr)(__u32 addr, struct list_head *list);
+       bool    (*nf_is_contiguous)(struct list_head *nidlist);
+       void    (*nf_min_max)(struct list_head *nidlist, __u32 *min_nid,
+                             __u32 *max_nid);
+};
+
+#endif /* _LNET_NIDSTRINGS_H */
index 9ece8694ec4c37ff1465f9ea8976b6713af14626..657c495642cca819191d5940e1d8cbaaedcb0ce4 100644 (file)
@@ -55,7 +55,7 @@
 
 #include "../../include/linux/libcfs/libcfs_crypto.h"
 #include "../../include/linux/lnet/lib-lnet.h"
-#include "../../include/linux/lnet/lib-dlc.h"
+#include "../../include/uapi/linux/lnet/lnet-dlc.h"
 #include "tracefile.h"
 
 static struct dentry *lnet_debugfs_root;
index 0b91d1809cb108be8a1bab2c3db18bad7d782626..30c7ff629463660606dcbed7b97810966795bd9d 100644 (file)
@@ -35,7 +35,7 @@
 #include <linux/ktime.h>
 
 #include "../../include/linux/lnet/lib-lnet.h"
-#include "../../include/linux/lnet/lib-dlc.h"
+#include "../../include/uapi/linux/lnet/lnet-dlc.h"
 
 #define D_LNI D_CONSOLE
 
index 4ffbd3e441e8b774fc441101cab79e6a26a46c2e..06fcfd25f67447b73ca7f1ca57fc41446e84d90d 100644 (file)
@@ -32,7 +32,7 @@
 
 #define DEBUG_SUBSYSTEM S_LNET
 #include "../../include/linux/lnet/lib-lnet.h"
-#include "../../include/linux/lnet/lib-dlc.h"
+#include "../../include/uapi/linux/lnet/lnet-dlc.h"
 
 static int config_on_load;
 module_param(config_on_load, int, 0444);
index 18183cbb98590476a048b18b55c83fe3c429df21..166a311ffd263698a186c940997626e90bb155a8 100644 (file)
@@ -36,7 +36,7 @@
 #define DEBUG_SUBSYSTEM S_LNET
 
 #include "../../include/linux/lnet/lib-lnet.h"
-#include "../../include/linux/lnet/lnetctl.h"
+#include "../../include/uapi/linux/lnet/lnetctl.h"
 
 #define LNET_MSG_MASK          (LNET_PUT_BIT | LNET_ACK_BIT | \
                                 LNET_GET_BIT | LNET_REPLY_BIT)
index cbbd11f06b8c6375e7d8a9b76e68a7cc62633924..a91bbc46438a2e3e886c5c41d740f0bf2212685f 100644 (file)
@@ -37,7 +37,7 @@
 #define DEBUG_SUBSYSTEM S_LNET
 
 #include "../../include/linux/libcfs/libcfs.h"
-#include "../../include/linux/lnet/nidstr.h"
+#include "../../include/uapi/linux/lnet/nidstr.h"
 
 /* max value for numeric network address */
 #define MAX_NUMERIC_VALUE 0xffffffff
index e62b21f3ab4daf5581eb88cf1fc1e29825fa9fcf..301b2750b3bbc1764354b9ef6f0dbd60044c3715 100644 (file)
@@ -35,7 +35,7 @@
 #define DEBUG_SUBSYSTEM S_LNET
 
 #include "../../include/linux/lnet/lib-lnet.h"
-#include "../../include/linux/lnet/lib-dlc.h"
+#include "../../include/uapi/linux/lnet/lnet-dlc.h"
 
 int
 lnet_peer_tables_create(void)
index 043eafb5ea403d512b62bc07c18a0abc34d4c619..106304e1d13192ea3392ce934bd8ec60956739dd 100644 (file)
@@ -38,7 +38,7 @@
 
 #include "../../include/linux/libcfs/libcfs.h"
 #include "../../include/linux/lnet/lib-lnet.h"
-#include "../../include/linux/lnet/lnetst.h"
+#include "../../include/uapi/linux/lnet/lnetst.h"
 #include "console.h"
 
 static int
index e2a78b6f6f7fd865e2ad7fdd0490e5a3753d445c..501e1ec9c382cbe134fa09ac9e2d67978b96f689 100644 (file)
@@ -41,7 +41,7 @@
 
 #include "../../include/linux/libcfs/libcfs.h"
 #include "../../include/linux/lnet/lib-types.h"
-#include "../../include/linux/lnet/lnetst.h"
+#include "../../include/uapi/linux/lnet/lnetst.h"
 #include "rpc.h"
 #include "selftest.h"
 
index 0a9ba06323f4041a3157265ae461d71f507957eb..d806214c78265d8a6fb4906d79c141240b8611ae 100644 (file)
@@ -41,7 +41,7 @@
 
 #include "../../include/linux/libcfs/libcfs.h"
 #include "../../include/linux/lnet/lib-types.h"
-#include "../../include/linux/lnet/lnetst.h"
+#include "../../include/uapi/linux/lnet/lnetst.h"
 #include "selftest.h"
 #include "conrpc.h"
 
index a765537a79c41b32603bf1ceff6095c0579d28bd..217ca21fc798016e48a8d4cdf6588e04dcc59f52 100644 (file)
@@ -33,7 +33,7 @@
 #ifndef __SELFTEST_RPC_H__
 #define __SELFTEST_RPC_H__
 
-#include "../../include/linux/lnet/lnetst.h"
+#include "../../include/uapi/linux/lnet/lnetst.h"
 
 /*
  * LST wired structures
index bfa4971a7a989dc79b7bf1e92519ea59a750f90e..3777023f4d56f87191a559e0e8c45d2b0d67bd5a 100644 (file)
@@ -41,7 +41,7 @@
 #include "../../include/linux/libcfs/libcfs.h"
 #include "../../include/linux/lnet/lib-lnet.h"
 #include "../../include/linux/lnet/lib-types.h"
-#include "../../include/linux/lnet/lnetst.h"
+#include "../../include/uapi/linux/lnet/lnetst.h"
 
 #include "rpc.h"
 #include "timer.h"
index fab624e27f4345f478f1ce462065520278f4ea52..d26c599ae5a2021825bb8701de89f56c0826bc39 100644 (file)
@@ -70,8 +70,7 @@
 #define _LUSTRE_IDL_H_
 
 #include "../../../include/linux/libcfs/libcfs.h"
-#include "../../../include/linux/lnet/types.h"
-
+#include "../../../include/uapi/linux/lnet/lnet-types.h"
 /* Defn's shared with user-space. */
 #include "lustre_user.h"
 #include "../lustre_ver.h"
index 1a532ad2e0fbd34d788aefb3a962d92389661ba2..05cdc663cf0a12a6f16366b7114b82aeb85b60c3 100644 (file)
@@ -45,7 +45,6 @@
  */
 
 #include "../../include/linux/libcfs/libcfs.h"
-#include "../../include/linux/lnet/types.h"
 #include <linux/backing-dev.h>
 
 /****************** persistent mount data *********************/
index 05f02b17622bdec5fe690f80620979bc83760f04..c0b5927b0ef92a585b9a0c5697cbe0941bcf1eb5 100644 (file)
@@ -52,7 +52,7 @@
 
 #include <linux/uio.h>
 #include "../../include/linux/libcfs/libcfs.h"
-#include "../../include/linux/lnet/nidstr.h"
+#include "../../include/uapi/linux/lnet/nidstr.h"
 #include "../../include/linux/lnet/api.h"
 #include "lustre/lustre_idl.h"
 #include "lustre_ha.h"
index ed303330bc393717bd4c4d916449135795b47b2b..dedad65deba7cca1fb87c4a40c3b297ac96323da 100644 (file)
@@ -35,7 +35,7 @@
 
 #include "../include/obd_support.h"
 #include "../include/obd_class.h"
-#include "../../include/linux/lnet/lnetctl.h"
+#include "../../include/uapi/linux/lnet/lnetctl.h"
 #include "../include/lustre_debug.h"
 #include "../include/lprocfs_status.h"
 #include <linux/list.h>
index 9f83345c6591ba1d15465a42b5c42732a935d28c..1b5beea1d850118da0f2d267e2a681e57dac51f4 100644 (file)
@@ -61,7 +61,7 @@
 #include <linux/kobject.h>
 
 #include "../../../include/linux/libcfs/libcfs.h"
-#include "../../../include/linux/lnet/lnetctl.h"
+#include "../../../include/uapi/linux/lnet/lnetctl.h"
 #include "../../include/obd_support.h"
 #include "../../include/obd_class.h"
 #include "../../include/lprocfs_status.h"
index bcf5fafe476dd07b314f665a3d892d044ca881d0..ca3d69e2a16ab8a652dfea5e1d152da39f84ab05 100644 (file)
@@ -35,7 +35,7 @@
 #include "../include/obd_class.h"
 #include "../include/lustre_net.h"
 #include "../include/lu_object.h"
-#include "../../include/linux/lnet/types.h"
+#include "../../include/uapi/linux/lnet/lnet-types.h"
 #include "ptlrpc_internal.h"
 
 /* The following are visible and mutable through /sys/module/ptlrpc */