Re: locking question: do_mmap(), do_munmap()

Stephen C. Tweedie
1999-10-11T20:13:57Z

Hi,

On Mon, 11 Oct 1999 12:05:23 -0400 (EDT), Alexander Viro
<viro@math.psu.edu> said:

> On Mon, 11 Oct 1999, Stephen C. Tweedie wrote:
>> No, spinlocks would be ideal. The vma swapout codes _have_ to be
>> prepared for the vma to be destroyed as soon as we sleep. In fact, the
>> entire mm may disappear if the process happens to exit. Once we know
>> which page to write where, the swapout operation becomes a per-page
>> operation, not per-vma.

> Aha, so you propose to drop it in ->swapout(), right? (after get_file() in
> filemap_write_page()... Ouch. Probably we'ld better lambda-expand the call
> in filemap_swapout() - the thing is called from other places too)...

Right now it is the big kernel lock which is used for this, and the
scheduler drops it anyway for us. If anyone wants to replace that lock
with another spinlock, then yes, the swapout method would have to drop
it before doing anything which could block. And that is ugly: having
spinlocks unbalanced over function calls is a maintenance nightmare.

--Stephen