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: Oleg Drokin <green@linuxhacker.ru> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
fccfde7d5d
commit
71c36dd795
|
@ -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)
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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().
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue