Jean Wolter wrote:
PS: I forgot a really nasty interaction with grant. If I take the example of the other thread:
A / \ B C
Assuming A doesn't know that B constructed the dependency between A and C (either using map/grant or co-equal mapping) and A unmaps the page only in the address space of B there is still the mapping in the address space of C.
So to make unmap(page, adress space) actually usable you would need a possibility to prohibit the grant operation for a page.
All you need is to be able to identify the mapping even if it has been granted away. The question is more how to engineer the mapping database such that the unmap (page_A, B) is possible. One way would be to add a second address space field into the mapping node.
I think the harder problem is to select the appropriate mapping. First, the page has to be specified as an address in A, since A usually does not know about B's address space layout (small receive flexpage). This however would mean to search through all children of A which would be very costly in most mdb implementations (dfs sorted the linked list based ones).
Marcus