Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

orangefs: Support readahead_readcnt parameter.

parent eb82fbcf
Loading
Loading
Loading
Loading
+30 −2
Original line number Diff line number Diff line
@@ -91,6 +91,13 @@
 * Description:
 *			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/...
 * Date:		Jun 2015
 * 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) &&
		    (!strcmp(attr->attr.name, "readahead_count") ||
		    !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;
			goto out;
		}
@@ -360,6 +368,11 @@ static ssize_t sysfs_service_op_show(struct kobject *kobj,
				 "readahead_count_size"))
			new_op->upcall.req.param.op =
				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)) {
		if (!strcmp(attr->attr.name, "timeout_msecs"))
			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) &&
		    (!strcmp(attr->attr.name, "readahead_count") ||
		    !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;
			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[1] = val2;
			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)) {
@@ -812,6 +835,10 @@ static struct orangefs_attribute readahead_count_size_attribute =
	__ATTR(readahead_count_size, 0664, sysfs_service_op_show,
	       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 =
	__ATTR(perf_counter_reset,
	       0664,
@@ -838,6 +865,7 @@ static struct attribute *orangefs_default_attrs[] = {
	&readahead_count_attribute.attr,
	&readahead_size_attribute.attr,
	&readahead_count_size_attribute.attr,
	&readahead_readcnt_attribute.attr,
	&perf_counter_reset_attribute.attr,
	&perf_history_size_attribute.attr,
	&perf_time_interval_secs_attribute.attr,
+1 −0
Original line number Diff line number Diff line
@@ -182,6 +182,7 @@ enum orangefs_param_request_op {
	ORANGEFS_PARAM_REQUEST_OP_READAHEAD_SIZE = 26,
	ORANGEFS_PARAM_REQUEST_OP_READAHEAD_COUNT = 27,
	ORANGEFS_PARAM_REQUEST_OP_READAHEAD_COUNT_SIZE = 28,
	ORANGEFS_PARAM_REQUEST_OP_READAHEAD_READCNT = 29,
};

struct orangefs_param_request_s {