On Wed 12-10-22 19:22:21, Zhongkun He wrote:
Yes, this will require some refactoring and one potential way is to make
mpol ref counting unconditional. The conditional ref. counting has
already caused issues in the past and the code is rather hard to follow
anyway. I am not really sure this optimization is worth it.
Another option would be to block the pidfd side of things on completion
which would wake it up from the task_work context but I would rather
explore the ref counting approach first and only if this is proven to be
too expensive to go with hacks like this.
Hi Michal
The counting approach means executing mpol_get/put() when start/finish using
mempolicy,right?
We already do that via mpol_{get,put} but there are cases where the
reference counting is ignored because it cannot be freed and also mpol_cond_put
resp. open coded versions of mpol_needs_cond_ref.
Hi Michal
Could we try to change the MPOL_F_SHARED flag to MPOL_F_STATIC to
mark static mempolicy which cannot be freed, and mpol_needs_cond_ref
can use MPOL_F_STATIC to avoid freeing the static mempolicy.
MPOL_F_SHARED loses its original meaning in counting approach.
Thanks.