Whamcloud - gitweb
LU-7623 lnet: Get rid of IOC_LIBCFS_DEBUG_PEER hack 78/17778/3
authorOleg Drokin <oleg.drokin@intel.com>
Sun, 3 Jan 2016 20:42:29 +0000 (15:42 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 28 Jan 2016 18:15:20 +0000 (18:15 +0000)
IOC_LIBCFS_DEBUG_PEER was added back in the stone ages to print debug
statistics on a peer when peer timeout happens.
Redo it properly as a separate LNet API call,
also get rid of "ioctl" forwarding into the underlying LNDs,
since no current LNDs implement this function anymore.

Change-Id: I3ec68a28faf840eb67d6084aa0fa5dcbbe2d7567
Signed-off-by: Oleg Drokin <oleg.drokin@intel.com>
Reviewed-on: http://review.whamcloud.com/17778
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
libcfs/include/libcfs/libcfs_ioctl.h
lnet/include/lnet/api.h
lnet/lnet/api-ni.c
lustre/ptlrpc/client.c

index 7636fd8..898f613 100644 (file)
@@ -122,7 +122,7 @@ do {                                                        \
 #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)
 #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)
-#define IOC_LIBCFS_DEBUG_PEER             _IOWR('e', 62, 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_LNETST                 _IOWR('e', 63, IOCTL_LIBCFS_TYPE)
 #define IOC_LIBCFS_LNET_FAULT             _IOWR('e', 64, IOCTL_LIBCFS_TYPE)
 /* lnd ioctls */
index 1d0f648..f78bfd6 100644 (file)
@@ -211,6 +211,7 @@ int LNetGet(lnet_nid_t        self,
 int LNetSetLazyPortal(int portal);
 int LNetClearLazyPortal(int portal);
 int LNetCtl(unsigned int cmd, void *arg);
 int LNetSetLazyPortal(int portal);
 int LNetClearLazyPortal(int portal);
 int LNetCtl(unsigned int cmd, void *arg);
+void LNetDebugPeer(lnet_process_id_t id);
 
 /** @} lnet_misc */
 
 
 /** @} lnet_misc */
 
index dd7e96a..40d3bb8 100644 (file)
@@ -1855,17 +1855,8 @@ out:
 }
 
 /**
 }
 
 /**
- * This is an ugly hack to export IOC_LIBCFS_DEBUG_PEER and
- * IOC_LIBCFS_PORTALS_COMPATIBILITY commands to users, by tweaking the LNet
- * internal ioctl handler.
- *
  * IOC_LIBCFS_PORTALS_COMPATIBILITY is now deprecated, don't use it.
  *
  * IOC_LIBCFS_PORTALS_COMPATIBILITY is now deprecated, don't use it.
  *
- * \param cmd IOC_LIBCFS_DEBUG_PEER to print debugging data about a peer.
- * The data will be printed to system console. Don't use it excessively.
- * \param arg A pointer to lnet_process_id_t, process ID of the peer.
- *
- * \return Always return 0 when called by users directly (i.e., not via ioctl).
  */
 int
 LNetCtl(unsigned int cmd, void *arg)
  */
 int
 LNetCtl(unsigned int cmd, void *arg)
@@ -2075,29 +2066,6 @@ LNetCtl(unsigned int cmd, void *arg)
                data->ioc_count = rc;
                return 0;
 
                data->ioc_count = rc;
                return 0;
 
-       case IOC_LIBCFS_DEBUG_PEER: {
-               /* CAVEAT EMPTOR: this one designed for calling directly; not
-                * via an ioctl */
-               id = *((lnet_process_id_t *) arg);
-
-               lnet_debug_peer(id.nid);
-
-               ni = lnet_net2ni(LNET_NIDNET(id.nid));
-               if (ni == NULL) {
-                       CDEBUG(D_WARNING, "No NI for %s\n", libcfs_id2str(id));
-               } else {
-                       if (ni->ni_lnd->lnd_ctl == NULL) {
-                               CDEBUG(D_WARNING, "No ctl for %s\n",
-                                      libcfs_id2str(id));
-                       } else {
-                               (void)ni->ni_lnd->lnd_ctl(ni, cmd, arg);
-                       }
-
-                       lnet_ni_decref(ni);
-               }
-               return 0;
-       }
-
        default:
                ni = lnet_net2ni(data->ioc_net);
                if (ni == NULL)
        default:
                ni = lnet_net2ni(data->ioc_net);
                if (ni == NULL)
@@ -2115,6 +2083,12 @@ LNetCtl(unsigned int cmd, void *arg)
 }
 EXPORT_SYMBOL(LNetCtl);
 
 }
 EXPORT_SYMBOL(LNetCtl);
 
+void LNetDebugPeer(lnet_process_id_t id)
+{
+       lnet_debug_peer(id.nid);
+}
+EXPORT_SYMBOL(LNetDebugPeer);
+
 /**
  * Retrieve the lnet_process_id_t ID of LNet interface at \a index. Note that
  * all interfaces share a same PID, as requested by LNetNIInit().
 /**
  * Retrieve the lnet_process_id_t ID of LNet interface at \a index. Note that
  * all interfaces share a same PID, as requested by LNetNIInit().
index 16a72d3..0c62264 100644 (file)
@@ -2057,8 +2057,8 @@ int ptlrpc_expire_one_request(struct ptlrpc_request *req, int async_unlink)
                       "timed out for sent delay" : "timed out for slow reply"),
                   req->rq_sent, req->rq_real_sent);
 
                       "timed out for sent delay" : "timed out for slow reply"),
                   req->rq_sent, req->rq_real_sent);
 
-        if (imp != NULL && obd_debug_peer_on_timeout)
-                LNetCtl(IOC_LIBCFS_DEBUG_PEER, &imp->imp_connection->c_peer);
+       if (imp != NULL && obd_debug_peer_on_timeout)
+               LNetDebugPeer(imp->imp_connection->c_peer);
 
         ptlrpc_unregister_reply(req, async_unlink);
         ptlrpc_unregister_bulk(req, async_unlink);
 
         ptlrpc_unregister_reply(req, async_unlink);
         ptlrpc_unregister_bulk(req, async_unlink);