As described above, pages are charged to their first touchers. The first toucher is determined using pages' mapcount manipulations in rmap calls. Page is charged in two stages: 1. preparation, in which the resource availability is checked. This stage may lead to page reclamation, thus it is performed in a might-sleep places; 2. the container assignment to page. This is done in an atomic code that handles multiple touches.