if (file->f_path.dentry->d_inode &&
file->f_path.dentry->d_inode->i_mapping &&
mapping_nrpages(&file->f_path.dentry->d_inode->i_data)) {
- gossip_debug(GOSSIP_INODE_DEBUG,
- "calling flush_racache on %pU\n",
- get_khandle_from_ino(inode));
- flush_racache(inode);
- gossip_debug(GOSSIP_INODE_DEBUG, "flush_racache finished\n");
+ if (orangefs_features & ORANGEFS_FEATURE_READAHEAD) {
+ gossip_debug(GOSSIP_INODE_DEBUG,
+ "calling flush_racache on %pU\n",
+ get_khandle_from_ino(inode));
+ flush_racache(inode);
+ gossip_debug(GOSSIP_INODE_DEBUG,
+ "flush_racache finished\n");
+ }
truncate_inode_pages(file->f_path.dentry->d_inode->i_mapping,
0);
}
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;
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) {