Commit 71c36dd7 authored by Oleg Drokin's avatar Oleg Drokin Committed by Greg Kroah-Hartman
Browse files

staging/lustre/lnet: Get rid of IOC_LIBCFS_DEBUG_PEER hack



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.

Signed-off-by: default avatarOleg Drokin <green@linuxhacker.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent fccfde7d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -123,7 +123,7 @@ struct libcfs_ioctl_handler {
#define IOC_LIBCFS_CONFIGURE	       _IOWR('e', 59, long)
#define IOC_LIBCFS_TESTPROTOCOMPAT	 _IOWR('e', 60, long)
#define IOC_LIBCFS_PING		    _IOWR('e', 61, long)
#define IOC_LIBCFS_DEBUG_PEER	      _IOWR('e', 62, long)
/*	#define IOC_LIBCFS_DEBUG_PEER	      _IOWR('e', 62, long) */
#define IOC_LIBCFS_LNETST		  _IOWR('e', 63, long)
/* lnd ioctls */
#define IOC_LIBCFS_REGISTER_MYNID	  _IOWR('e', 70, long)
+1 −0
Original line number Diff line number Diff line
@@ -197,6 +197,7 @@ int LNetGet(lnet_nid_t self,
int LNetSetLazyPortal(int portal);
int LNetClearLazyPortal(int portal);
int LNetCtl(unsigned int cmd, void *arg);
void LNetDebugPeer(lnet_process_id_t id);

/** @} lnet_misc */

+7 −31
Original line number Diff line number Diff line
@@ -1316,17 +1316,10 @@ LNetNIFini(void)
EXPORT_SYMBOL(LNetNIFini);

/**
 * 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.
 * LNet ioctl handler.
 *
 * 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)
@@ -1396,29 +1389,6 @@ LNetCtl(unsigned int cmd, void *arg)
		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)
@@ -1436,6 +1406,12 @@ LNetCtl(unsigned int cmd, void *arg)
}
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().
+1 −1
Original line number Diff line number Diff line
@@ -1884,7 +1884,7 @@ int ptlrpc_expire_one_request(struct ptlrpc_request *req, int async_unlink)
		  (s64)req->rq_sent, (s64)req->rq_real_sent);

	if (imp != NULL && obd_debug_peer_on_timeout)
		LNetCtl(IOC_LIBCFS_DEBUG_PEER, &imp->imp_connection->c_peer);
		LNetDebugPeer(imp->imp_connection->c_peer);

	ptlrpc_unregister_reply(req, async_unlink);
	ptlrpc_unregister_bulk(req, async_unlink);