summaryrefslogtreecommitdiffstats
path: root/sys/dev/nvme/nvme_sysctl.c
diff options
context:
space:
mode:
authorjimharris <jimharris@FreeBSD.org>2013-03-26 20:02:35 +0000
committerjimharris <jimharris@FreeBSD.org>2013-03-26 20:02:35 +0000
commit83032bc2394df6e15ddb874995f794f0c8c660b1 (patch)
tree5ebc789383fbca5abbead81ca4e0081cc57c742d /sys/dev/nvme/nvme_sysctl.c
parent711dabaf432762eec4942b5f5f7611e7df825260 (diff)
downloadFreeBSD-src-83032bc2394df6e15ddb874995f794f0c8c660b1.zip
FreeBSD-src-83032bc2394df6e15ddb874995f794f0c8c660b1.tar.gz
Add a tunable for the I/O timeout interval. Default is still 30 seconds,
but can be adjusted between a min/max of 5 and 120 seconds. Sponsored by: Intel Reviewed by: carl
Diffstat (limited to 'sys/dev/nvme/nvme_sysctl.c')
-rw-r--r--sys/dev/nvme/nvme_sysctl.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/sys/dev/nvme/nvme_sysctl.c b/sys/dev/nvme/nvme_sysctl.c
index 85187af..6e0aa0c 100644
--- a/sys/dev/nvme/nvme_sysctl.c
+++ b/sys/dev/nvme/nvme_sysctl.c
@@ -123,6 +123,25 @@ nvme_sysctl_int_coal_threshold(SYSCTL_HANDLER_ARGS)
return (0);
}
+static int
+nvme_sysctl_timeout_period(SYSCTL_HANDLER_ARGS)
+{
+ struct nvme_controller *ctrlr = arg1;
+ uint32_t oldval = ctrlr->timeout_period;
+ int error = sysctl_handle_int(oidp, &ctrlr->timeout_period, 0, req);
+
+ if (error)
+ return (error);
+
+ if (ctrlr->timeout_period > NVME_MAX_TIMEOUT_PERIOD ||
+ ctrlr->timeout_period < NVME_MIN_TIMEOUT_PERIOD) {
+ ctrlr->timeout_period = oldval;
+ return (EINVAL);
+ }
+
+ return (0);
+}
+
static void
nvme_qpair_reset_stats(struct nvme_qpair *qpair)
{
@@ -244,6 +263,11 @@ nvme_sysctl_initialize_ctrlr(struct nvme_controller *ctrlr)
"Interrupt coalescing threshold");
SYSCTL_ADD_PROC(ctrlr_ctx, ctrlr_list, OID_AUTO,
+ "timeout_period", CTLTYPE_UINT | CTLFLAG_RW, ctrlr, 0,
+ nvme_sysctl_timeout_period, "IU",
+ "Timeout period (in seconds)");
+
+ SYSCTL_ADD_PROC(ctrlr_ctx, ctrlr_list, OID_AUTO,
"num_cmds", CTLTYPE_S64 | CTLFLAG_RD,
ctrlr, 0, nvme_sysctl_num_cmds, "IU",
"Number of commands submitted");
OpenPOWER on IntegriCloud