Commit 31c829f3 authored by Martin Brandenburg's avatar Martin Brandenburg Committed by Mike Marshall

orangefs: Support readahead_readcnt parameter.

Signed-off-by: default avatarMartin Brandenburg <martin@omnibond.com>
Signed-off-by: default avatarMike Marshall <hubcap@omnibond.com>
parent eb82fbcf
...@@ -91,6 +91,13 @@ ...@@ -91,6 +91,13 @@
* Description: * Description:
* Readahead cache buffer count and size. * Readahead cache buffer count and size.
* *
* What: /sys/fs/orangefs/readahead_readcnt
* Date: Jan 2017
* Contact: Martin Brandenburg <martin@omnibond.com>
* Description:
* Number of buffers (in multiples of readahead_size)
* which can be read ahead for a single file at once.
*
* What: /sys/fs/orangefs/acache/... * What: /sys/fs/orangefs/acache/...
* Date: Jun 2015 * Date: Jun 2015
* Contact: Martin Brandenburg <martin@omnibond.com> * Contact: Martin Brandenburg <martin@omnibond.com>
...@@ -329,7 +336,8 @@ static ssize_t sysfs_service_op_show(struct kobject *kobj, ...@@ -329,7 +336,8 @@ static ssize_t sysfs_service_op_show(struct kobject *kobj,
if (!(orangefs_features & ORANGEFS_FEATURE_READAHEAD) && if (!(orangefs_features & ORANGEFS_FEATURE_READAHEAD) &&
(!strcmp(attr->attr.name, "readahead_count") || (!strcmp(attr->attr.name, "readahead_count") ||
!strcmp(attr->attr.name, "readahead_size") || !strcmp(attr->attr.name, "readahead_size") ||
!strcmp(attr->attr.name, "readahead_count_size"))) { !strcmp(attr->attr.name, "readahead_count_size") ||
!strcmp(attr->attr.name, "readahead_readcnt"))) {
rc = -EINVAL; rc = -EINVAL;
goto out; goto out;
} }
...@@ -360,6 +368,11 @@ static ssize_t sysfs_service_op_show(struct kobject *kobj, ...@@ -360,6 +368,11 @@ static ssize_t sysfs_service_op_show(struct kobject *kobj,
"readahead_count_size")) "readahead_count_size"))
new_op->upcall.req.param.op = new_op->upcall.req.param.op =
ORANGEFS_PARAM_REQUEST_OP_READAHEAD_COUNT_SIZE; ORANGEFS_PARAM_REQUEST_OP_READAHEAD_COUNT_SIZE;
else if (!strcmp(attr->attr.name,
"readahead_readcnt"))
new_op->upcall.req.param.op =
ORANGEFS_PARAM_REQUEST_OP_READAHEAD_READCNT;
} else if (!strcmp(kobj->name, ACACHE_KOBJ_ID)) { } else if (!strcmp(kobj->name, ACACHE_KOBJ_ID)) {
if (!strcmp(attr->attr.name, "timeout_msecs")) if (!strcmp(attr->attr.name, "timeout_msecs"))
new_op->upcall.req.param.op = new_op->upcall.req.param.op =
...@@ -542,7 +555,8 @@ static ssize_t sysfs_service_op_store(struct kobject *kobj, ...@@ -542,7 +555,8 @@ static ssize_t sysfs_service_op_store(struct kobject *kobj,
if (!(orangefs_features & ORANGEFS_FEATURE_READAHEAD) && if (!(orangefs_features & ORANGEFS_FEATURE_READAHEAD) &&
(!strcmp(attr->attr.name, "readahead_count") || (!strcmp(attr->attr.name, "readahead_count") ||
!strcmp(attr->attr.name, "readahead_size") || !strcmp(attr->attr.name, "readahead_size") ||
!strcmp(attr->attr.name, "readahead_count_size"))) { !strcmp(attr->attr.name, "readahead_count_size") ||
!strcmp(attr->attr.name, "readahead_readcnt"))) {
rc = -EINVAL; rc = -EINVAL;
goto out; goto out;
} }
...@@ -609,6 +623,15 @@ static ssize_t sysfs_service_op_store(struct kobject *kobj, ...@@ -609,6 +623,15 @@ static ssize_t sysfs_service_op_store(struct kobject *kobj,
new_op->upcall.req.param.u.value32[0] = val1; new_op->upcall.req.param.u.value32[0] = val1;
new_op->upcall.req.param.u.value32[1] = val2; new_op->upcall.req.param.u.value32[1] = val2;
goto value_set; goto value_set;
} else if (!strcmp(attr->attr.name,
"readahead_readcnt")) {
if ((val >= 0)) {
new_op->upcall.req.param.op =
ORANGEFS_PARAM_REQUEST_OP_READAHEAD_READCNT;
} else {
rc = 0;
goto out;
}
} }
} else if (!strcmp(kobj->name, ACACHE_KOBJ_ID)) { } else if (!strcmp(kobj->name, ACACHE_KOBJ_ID)) {
...@@ -812,6 +835,10 @@ static struct orangefs_attribute readahead_count_size_attribute = ...@@ -812,6 +835,10 @@ static struct orangefs_attribute readahead_count_size_attribute =
__ATTR(readahead_count_size, 0664, sysfs_service_op_show, __ATTR(readahead_count_size, 0664, sysfs_service_op_show,
sysfs_service_op_store); sysfs_service_op_store);
static struct orangefs_attribute readahead_readcnt_attribute =
__ATTR(readahead_readcnt, 0664, sysfs_service_op_show,
sysfs_service_op_store);
static struct orangefs_attribute perf_counter_reset_attribute = static struct orangefs_attribute perf_counter_reset_attribute =
__ATTR(perf_counter_reset, __ATTR(perf_counter_reset,
0664, 0664,
...@@ -838,6 +865,7 @@ static struct attribute *orangefs_default_attrs[] = { ...@@ -838,6 +865,7 @@ static struct attribute *orangefs_default_attrs[] = {
&readahead_count_attribute.attr, &readahead_count_attribute.attr,
&readahead_size_attribute.attr, &readahead_size_attribute.attr,
&readahead_count_size_attribute.attr, &readahead_count_size_attribute.attr,
&readahead_readcnt_attribute.attr,
&perf_counter_reset_attribute.attr, &perf_counter_reset_attribute.attr,
&perf_history_size_attribute.attr, &perf_history_size_attribute.attr,
&perf_time_interval_secs_attribute.attr, &perf_time_interval_secs_attribute.attr,
......
...@@ -182,6 +182,7 @@ enum orangefs_param_request_op { ...@@ -182,6 +182,7 @@ enum orangefs_param_request_op {
ORANGEFS_PARAM_REQUEST_OP_READAHEAD_SIZE = 26, ORANGEFS_PARAM_REQUEST_OP_READAHEAD_SIZE = 26,
ORANGEFS_PARAM_REQUEST_OP_READAHEAD_COUNT = 27, ORANGEFS_PARAM_REQUEST_OP_READAHEAD_COUNT = 27,
ORANGEFS_PARAM_REQUEST_OP_READAHEAD_COUNT_SIZE = 28, ORANGEFS_PARAM_REQUEST_OP_READAHEAD_COUNT_SIZE = 28,
ORANGEFS_PARAM_REQUEST_OP_READAHEAD_READCNT = 29,
}; };
struct orangefs_param_request_s { struct orangefs_param_request_s {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment