On Tue, Jun 27, 2017 at 09:01:20AM -0700, Prakash Sangappa wrote:
On 6/27/17 8:35 AM, Mike Rapoport wrote:You are planning to register in userfaultfd only the holes you punch to
On Tue, Jun 27, 2017 at 09:06:43AM +0200, Michal Hocko wrote:Yes.
This is an user visible API so let's CC linux-api mailing list.If I understand correctly, the database will create the mapping, then it'll
On Mon 26-06-17 12:46:13, Prakash Sangappa wrote:
Any access to mapped address over holes in the file, which can occur dueSo you register UFFD_FEATURE_SIGBUS on each region tha you are unmapping
to bugs in the application, is considered invalid and expect the process
to simply receive a SIGBUS. However, currently when a hole in the file is
accessed via the mapped address, kernel/mm attempts to automatically
allocate a page at page fault time, resulting in implicitly filling the
hole in the file. This may not be the desired behavior for applications
like the database that want to explicitly manage page allocations of
hugetlbfs files.
and than just let those offenders die?
open userfaultfd and register those mappings with the userfault.
Afterwards, when the application accesses a hole userfault will cause
SIGBUS and the application will process it in whatever way it likes, e.g.
just die.
What I don't understand is why won't you use userfault monitor process thatCo-ordination with the external monitor process by all the database
will take care of the page fault events?
It shouldn't be much overhead running it and it can keep track on all the
userfault file descriptors for you and it will allow more versatile error
handling that SIGBUS.
processes
to send their userfaultfd is still an overhead.
deallocate pages, am I right?
And the co-ordination of the userfault file descriptor with the monitor
would have been added after calls to fallocate() and userfaultfd_register()?
I've just been thinking that maybe it would be possible to use
UFFD_EVENT_REMOVE for this case. We anyway need to implement the generation
of UFFD_EVENT_REMOVE for the case of hole punching in hugetlbfs for
non-cooperative userfaultfd. It could be that it will solve your issue as
well.