info/last_cmd_status is intended to contain more information if a write to
any resctrl file fails. Writes to max_threshold_occupancy did not receive
last_cmd_status support during initial last_cmd_status enabling. Add it now.
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
fs/resctrl/rdtgroup.c | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c
index 3c9508fc558d..933f6ae26d59 100644
--- a/fs/resctrl/rdtgroup.c
+++ b/fs/resctrl/rdtgroup.c
@@ -1238,16 +1238,27 @@ static ssize_t max_threshold_occ_write(struct kernfs_open_file *of,
unsigned int bytes;
int ret;
+ mutex_lock(&rdtgroup_mutex);
+ rdt_last_cmd_clear();
+
ret = kstrtouint(buf, 0, &bytes);
- if (ret)
- return ret;
+ if (ret) {
+ rdt_last_cmd_puts("Invalid input\n");
+ goto out_unlock;
+ }
- if (bytes > resctrl_rmid_realloc_limit)
- return -EINVAL;
+ if (bytes > resctrl_rmid_realloc_limit) {
+ rdt_last_cmd_printf("Exceeds limit (before adjustment) of %u bytes\n",
+ resctrl_rmid_realloc_limit);
+ ret = -EINVAL;
+ goto out_unlock;
+ }
resctrl_rmid_realloc_threshold = resctrl_arch_round_mon_val(bytes);
- return nbytes;
+out_unlock:
+ mutex_unlock(&rdtgroup_mutex);
+ return ret ?: nbytes;
}
/*
--
2.50.1