Re: Linux-2.1.129..

Eric W. Biederman
1998-11-25T21:23:34Z

>>>>> "ST" == Stephen C Tweedie <sct@redhat.com> writes:

ST> However, for pages which become dirty in memory, we _do_ populate the
ST> swap cache only at page-out time. That's why the sharing still works.
ST> I think that the real change we need is to cleanly support PG_dirty
ST> flags per page. Once we do that, not only do all of the dirty inode
ST> pageouts get fixed, but we also automatically get MAP_SHARED |
ST> MAP_ANONYMOUS.

ST> While we're on that subject, Linus, do you still have Andrea's patch to
ST> propogate page writes around all shared ptes? I noticed that Zlatko
ST> Calusic recently re-posted it, and it looks like the sort of short-term
ST> fix we need for this issue in 2.2 (assuming we don't have time to do a
ST> proper PG_dirty fix).

What do you consider a proper PG_dirty fix?

I have been working on it (what I would call a PG_dirty fix) and have
most thing working but my code has a lot of policy questions still to
answer.

But as far as MAP_SHARED | MAP_ANONYMOUS to retain our current
swapping model (of never rewriting a swap page), and for swapoff
support we need the ability to change which swap page all of the pages
are associated with.

There are 2 ways to do this.
1) Implement it like SYSV shared mem.
2) Just maintain vma structs for the memory, with vma_next_share used!
Then when we allocate a new swap page we can walk the
*vm_area_struct's to find the page_tables that need to be updated.

The real tricky case to get right is simulaneous COW & SOW.
SOW == Share On Write.

The question right now is where do we anchor the vma_next_share
linked list, as we don't have an inode.

Eric