#define IOC_LIBCFS_GET_UDSP_SIZE _IOWR(IOC_LIBCFS_TYPE, 107, IOCTL_CONFIG_SIZE)
#define IOC_LIBCFS_GET_UDSP _IOWR(IOC_LIBCFS_TYPE, 108, IOCTL_CONFIG_SIZE)
#define IOC_LIBCFS_GET_CONST_UDSP_INFO _IOWR(IOC_LIBCFS_TYPE, 109, IOCTL_CONFIG_SIZE)
-#define IOC_LIBCFS_MAX_NR 109
+#define IOC_LIBCFS_RESET_LNET_STATS _IOWR(IOC_LIBCFS_TYPE, 110, IOCTL_CONFIG_SIZE)
+#define IOC_LIBCFS_MAX_NR 110
extern int libcfs_ioctl_data_adjust(struct libcfs_ioctl_data *data);
return rc;
}
+ case IOC_LIBCFS_RESET_LNET_STATS:
+ {
+ mutex_lock(&the_lnet.ln_api_mutex);
+ lnet_counters_reset();
+ mutex_unlock(&the_lnet.ln_api_mutex);
+ return 0;
+ }
+
case IOC_LIBCFS_CONFIG_RTR:
config = arg;
return rc;
}
+int lustre_lnet_reset_stats(int seq_no, struct cYAML **err_rc)
+{
+ struct libcfs_ioctl_data data;
+ int rc = LUSTRE_CFG_RC_NO_ERR;
+ int l_errno;
+ char err_str[LNET_MAX_STR_LEN];
+
+ LIBCFS_IOC_INIT(data);
+
+ rc = l_ioctl(LNET_DEV_ID, IOC_LIBCFS_RESET_LNET_STATS, &data);
+ if (rc) {
+ l_errno = errno;
+ snprintf(err_str,
+ sizeof(err_str),
+ "\"cannot reset lnet statistics: %s\"",
+ strerror(l_errno));
+ rc = -l_errno;
+ } else {
+ snprintf(err_str, sizeof(err_str), "\"success\"");
+ rc = LUSTRE_CFG_RC_NO_ERR;
+ }
+
+ cYAML_build_error(rc, seq_no, SHOW_CMD, "statistics", err_str, err_rc);
+ return rc;
+}
+
typedef int (*cmd_handler_t)(struct cYAML *tree,
struct cYAML **show_rc,
struct cYAML **err_rc);
struct cYAML **err_rc);
/*
+ * lustre_lnet_reset_stats
+ * Resets internal LNET statistics.
+ *
+ * err_rc - YAML strucutre of the resultant return code.
+ */
+int lustre_lnet_reset_stats(int seq_no, struct cYAML **err_rc);
+
+/*
* lustre_lnet_modify_peer
* Handle a peer config or delete operation.
*
static int jt_set_recov_intrv(int argc, char **argv);
static int jt_set_rtr_sensitivity(int argc, char **argv);
static int jt_set_hsensitivity(int argc, char **argv);
+static int jt_reset_stats(int argc, char **argv);
static int jt_add_peer_nid(int argc, char **argv);
static int jt_del_peer_nid(int argc, char **argv);
static int jt_set_max_intf(int argc, char **argv);
command_t stats_cmds[] = {
{"show", jt_show_stats, 0, "show LNET statistics\n"},
+ {"reset", jt_reset_stats, 0, "reset LNET statistics\n"},
{ 0, 0, 0, NULL }
};
return rc;
}
+static int jt_reset_stats(int argc, char **argv)
+{
+ int rc;
+ struct cYAML *err_rc = NULL;
+
+ rc = check_cmd(stats_cmds, "stats", "reset", 0, argc, argv);
+ if (rc)
+ return rc;
+
+ rc = lustre_lnet_reset_stats(-1, &err_rc);
+ if (rc != LUSTRE_CFG_RC_NO_ERR)
+ cYAML_print_tree2file(stderr, err_rc);
+
+ cYAML_free_tree(err_rc);
+
+ return rc;
+}
+
static int jt_set_transaction_to(int argc, char **argv)
{
long int value;