Re: [PATCH v3 4/9] cgroup/cpuset: Enable event notification when partition become invalid

From: Waiman Long
Date: Tue Jul 27 2021 - 16:46:26 EST


On 7/27/21 4:26 PM, Waiman Long wrote:
On 7/26/21 7:14 PM, Tejun Heo wrote:
On Tue, Jul 20, 2021 at 10:18:29AM -0400, Waiman Long wrote:
+static inline void notify_partition_change(struct cpuset *cs,
+                       int old_prs, int new_prs)
+{
+    if ((old_prs == new_prs) ||
+       ((old_prs != PRS_ERROR) && (new_prs != PRS_ERROR)))
+        return;
+    cgroup_file_notify(&cs->partition_file);
I'd generate an event on any state changes. The user have to read the file
to find out what happened anyway.

Thanks.

From my own testing with "inotify_add_watch(fd, file, IN_MODIFY)", poll() will return with a event whenever a user write to cpuset.cpus.partition control file. I haven't really look into the sysfs code yet, but I believe event generation will be automatic in this case. So I don't think I need to explicitly add a cgroup_file_notify() when users modify the control file directly. Other indirect modification may cause the partition value to change to/from PRS_ERROR and I should have captured all those changes in this patchset. I will update the patch to note this point to make it more clear.

After thinking about it a bit more it, it is probably not a problem to call cgroup_file_notify() for every change as this is not in a performance critical path anyway. I will do some more testing to find out if doing cgroup_file_notify() for regular file write will cause an extra duplicated event to be sent out, I will probably stay with the current patch. Otherwise, I can change it to always call cgroup_file_notify().

Cheers,
Longman