mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 14:50:19 +00:00
orangefs: Support readahead_readcnt parameter.
Signed-off-by: Martin Brandenburg <martin@omnibond.com> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
This commit is contained in:
parent
eb82fbcf82
commit
31c829f364
@ -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,
|
|||||||
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,
|
|||||||
"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,
|
|||||||
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,
|
|||||||
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 =
|
|||||||
__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[] = {
|
|||||||
&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 {
|
|||||||
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 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user