Hi Reinette,
On 12/18/2024 4:01 PM, Reinette Chatre wrote:
On 12/13/24 8:54 AM, Moger, Babu wrote:
On 12/13/2024 10:24 AM, Luck, Tony wrote:
It is right thing to continue assignment if one of the domain is out of
counters. In that case how about we save the error(say error_domain) and
continue. And finally return success if both ret and error_domain are zeros.
return ret ? ret : error_domain:
If there are many domains, then you might have 3 succeed and 5 fail.
I think the best you can do is return success if everything succeeded
and an error if any failed.
Yes. The above check should take care of this case.
If I understand correctly "error_domain" can capture the ID of
a single failing domain. If there are multiple failing domains like
in Tony's example then "error_domain" will not be accurate and thus
can never be trusted. Instead of a single check of a failure user
space is then forced to parse the more complex "mbm_assign_control"
file to learn what succeeded and failed.
Would it not be simpler to process sequentially and then fail on
first error encountered with detailed error message? With that
user space can determine exactly which portion of request
succeeded and which portion failed.
One more option is to print the error for each failure and continue. And
finally return error.
"Group mon1, domain:1 Out of MBM counters"
We have the error information as well as the convenience of assignment
on domains where counters are available when user is working with
"*"(all domains).
Note: I will be out of office starting next week Until Jan 10.
You have the same issue if someone tries to update multiple things
with a single write to mbm_assign_control:
# cat > mbm_assign_control << EOF
c1/m78/0=t;1=l;
c1/m79/0=t;1=l
c1/m80/0=t;1=l;
c1/m81/0=t;1=l;
EOF
Those get processed in order, some may succeed, but once a domain
is out of counters the rest for that domain will fail.
Yes. I see the similar type of processing for schemata.
It is processed sequentially. If one fails, it returns immediately.
ret = rdtgroup_parse_resource(resname, tok, rdtgrp);
if (ret)
goto out;
I feel it is ok to keep same level of processing.
resctrl also does sequential processing when, for example, the user requests
move of several tasks. resctrl returns with failure right away with error message
containing failing PID. This gives clear information to user what
portion of request succeeded without requiring user space to
do additional queries.
Reinette