orangefs: do not allow client readahead cache without feature bit

Signed-off-by: Martin Brandenburg <martin@omnibond.com>
diff --git a/fs/orangefs/orangefs-sysfs.c b/fs/orangefs/orangefs-sysfs.c
index 2fe9a3a..ed5ee33 100644
--- a/fs/orangefs/orangefs-sysfs.c
+++ b/fs/orangefs/orangefs-sysfs.c
@@ -842,6 +842,16 @@
 	if (!strcmp(kobj_id, ORANGEFS_KOBJ_ID)) {
 		orangefs_attr = (struct orangefs_attribute *)attr;
 
+		/* Drop unsupported requests first. */
+		if (!(orangefs_features & ORANGEFS_FEATURE_READAHEAD) &&
+		    (!strcmp(orangefs_attr->attr.name, "readahead_count") ||
+		    !strcmp(orangefs_attr->attr.name, "readahead_size") ||
+		    !strcmp(orangefs_attr->attr.name,
+		    "readahead_count_size"))) {
+			rc = -EINVAL;
+			goto out;
+		}
+
 		if (!strcmp(orangefs_attr->attr.name, "perf_history_size"))
 			new_op->upcall.req.param.op =
 				ORANGEFS_PARAM_REQUEST_OP_PERF_HISTORY_SIZE;
@@ -1133,6 +1143,15 @@
 
 	if (!strcmp(kobj_id, ORANGEFS_KOBJ_ID)) {
 		orangefs_attr = (struct orangefs_attribute *)attr;
+		/* Drop unsupported requests first. */
+		if (!(orangefs_features & ORANGEFS_FEATURE_READAHEAD) &&
+		    (!strcmp(orangefs_attr->attr.name, "readahead_count") ||
+		    !strcmp(orangefs_attr->attr.name, "readahead_size") ||
+		    !strcmp(orangefs_attr->attr.name,
+		    "readahead_count_size"))) {
+			rc = -EINVAL;
+			goto out;
+		}
 
 		if (!strcmp(orangefs_attr->attr.name, "perf_history_size")) {
 			if (val > 0) {