On Mon, Jun 27, 2022 at 10:11 AM Vasily Averin <vvs@xxxxxxxxxx> wrote: > > Currently, the host owner is not informed about the exhaustion of the > global mem_cgroup_id space. When this happens, systemd cannot start a > new service and receives a unique -ENOSPC error code. > However, this can happen inside this container, persist in the log file > of the local container, and may not be noticed by the host owner if he > did not try to start any new services. > > Signed-off-by: Vasily Averin <vvs@xxxxxxxxxx> > --- > v2: Roman Gushchin pointed that idr_alloc() should return unique -ENOSPC If the caller can know -ENOSPC is returned by mkdir(), then I think the user (perhaps systemd) is the best place to throw out the error message instead of in the kernel log. Right? Thanks. > if no free IDs could be found, but can also return -ENOMEM. > Therefore error code check was added before message output and > patch descriprion was adopted. > --- > mm/memcontrol.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index d4c606a06bcd..ffc6b5d6b95e 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -5317,6 +5317,8 @@ static struct mem_cgroup *mem_cgroup_alloc(void) > 1, MEM_CGROUP_ID_MAX + 1, GFP_KERNEL); > if (memcg->id.id < 0) { > error = memcg->id.id; > + if (error == -ENOSPC) > + pr_notice_ratelimited("mem_cgroup_id space is exhausted\n"); > goto fail; > } > > -- > 2.36.1 >