introduce down_write_killable for rw_semaphore
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest11 patches 14 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/11 | locking, rwsem: get rid of __down_write_nestedarch/ arch/ arch/ +4 more | +5 | 0 replies | |
| 2/11 | locking, rwsem: drop explicit memory barriersarch/ arch/ | +4 | 0 replies | |
| 3/11 | locking, rwsem: introduce basis for down_write_killableinclude/ include/ include/ +2 more | +61 | 4 replies | |
| 4/11 | alpha, rwsem: provide __down_write_killablearch/ | +16 | 0 replies | |
| 5/11 | ia64, rwsem: provide __down_write_killablearch/ | +19 | 0 replies | |
| 6/11 | s390, rwsem: provide __down_write_killablearch/ | +17 | 0 replies | |
| 7/11 | sh, rwsem: provide __down_write_killablearch/ | +13 | 0 replies | |
| 8/11 | sparc, rwsem: provide __down_write_killablearch/ | +13 | 0 replies | |
| 9/11 | xtensa, rwsem: provide __down_write_killablearch/ | +13 | 0 replies | |
| 10/11 | x86, rwsem: provide __down_write_killablearch/ arch/ | +36 | 0 replies | |
| 11/11 | locking, rwsem: provide down_write_killableinclude/ include/ kernel/ | +35 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [PATCH 0/11] introduce down_write_killable for rw_semaphore
Hi,
I have posted this series [1] and there didn't seem to be any fundamental objections except for x86 maintainers who preferred the asm __down_write implementation which I have reworked for this series. Apart from that I have refreshed on top of the current linux-next and fixed one unused variable warning which happened to trigger a compilation failure on ppc.
The following patchset implements a killable variant of write lock for rw_semaphore. My usecase is to turn as many mmap_sem write users to use a killable variant which will be helpful for the oom_reaper [2] to asynchronously tear down the oom victim address space which requires mmap_sem for read. This will reduce a likelihood of OOM livelocks caused by oom victim being stuck on a lock or other resource which prevents it to reach its exit path and release the memory. I haven't implemented the killable variant of the read lock because I do not have any usecase for this API.
The patchset is organized as follows.
- Patch 1 is a trivial cleanup
- Patch 2, I belive, shouldn't introduce any functional changes as per Documentation/memory-barriers.txt.
- Patch 3 is the preparatory work and necessary infrastructure for down_write_killable. It implements generic __down_write_killable and prepares the write lock slow path to bail out earlier when told so
- Patch 4-1- are implementing arch specific __down_write_killable. One patch per architecture.
- finally patch 11 implements down_write_killable and ties everything together. I am not really an expert on lockdep so I hope I got it right.
Many of arch specific patches are basically same and I can squash them into one patch if this is preferred but I thought that one patch per arch is preferable.
My patch to change mmap_sem write users to killable form is not part of the series because it is a larger change and I would like to prevent from spamming people too much. I will post the series shortly.
I have tested on x86 with OOM situations with high mmap_sem contention (basically many parallel page faults racing with many parallel mmap/munmap tight loops) so the waiters for the write locks are routinely interrupted by SIGKILL.
Patches should apply cleanly on both Linus and next tree.
[1] http://lkml.kernel.org/r/[email protected]
[2] http://lkml.kernel.org/r/[email protected]
Any feedback is highly appreciated.