From: Michal Hocko <email@example.com> To: LKML <firstname.lastname@example.org> Cc: Peter Zijlstra <email@example.com>, Ingo Molnar <firstname.lastname@example.org>, Thomas Gleixner <email@example.com>, "H. Peter Anvin" <firstname.lastname@example.org>, "David S. Miller" <email@example.com>, Tony Luck <firstname.lastname@example.org>, Andrew Morton <email@example.com>, Chris Zankel <firstname.lastname@example.org>, Max Filippov <email@example.com>, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com Subject: [PATCH 0/11] introduce down_write_killable for rw_semaphore Date: Mon, 29 Feb 2016 13:58:14 +0100 Message-ID: <firstname.lastname@example.org> (raw) Hi, I have posted this series  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  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.  http://email@example.com  http://firstname.lastname@example.org Any feedback is highly appreciated.
next reply index Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-02-29 12:58 Michal Hocko [this message] 2016-02-29 12:58 ` [PATCH 01/11] locking, rwsem: get rid of __down_write_nested Michal Hocko 2016-02-29 12:58 ` [PATCH 02/11] locking, rwsem: drop explicit memory barriers Michal Hocko 2016-02-29 12:58 ` [PATCH 03/11] locking, rwsem: introduce basis for down_write_killable Michal Hocko 2016-03-30 13:25 ` Peter Zijlstra 2016-03-31 8:33 ` Michal Hocko 2016-03-31 8:44 ` Peter Zijlstra 2016-03-31 8:55 ` [PATCH] " Michal Hocko 2016-02-29 12:58 ` [PATCH 04/11] alpha, rwsem: provide __down_write_killable Michal Hocko 2016-02-29 12:58 ` [PATCH 05/11] ia64, " Michal Hocko 2016-02-29 12:58 ` [PATCH 06/11] s390, " Michal Hocko 2016-02-29 12:58 ` [PATCH 07/11] sh, " Michal Hocko 2016-02-29 12:58 ` [PATCH 08/11] sparc, " Michal Hocko 2016-02-29 12:58 ` [PATCH 09/11] xtensa, " Michal Hocko 2016-02-29 12:58 ` [PATCH 10/11] x86, " Michal Hocko 2016-02-29 12:58 ` [PATCH 11/11] locking, rwsem: provide down_write_killable Michal Hocko 2016-03-30 13:32 ` [PATCH 0/11] introduce down_write_killable for rw_semaphore Peter Zijlstra 2016-03-31 8:59 ` Michal Hocko 2016-03-31 9:20 ` Ingo Molnar 2016-03-31 10:58 ` Michal Hocko 2016-03-31 17:03 ` Andrew Morton 2016-04-01 6:33 ` Ingo Molnar 2016-04-01 9:21 ` Michal Hocko 2016-04-01 9:50 ` Ingo Molnar 2016-04-01 10:52 ` Michal Hocko 2016-04-01 7:26 ` Michal Hocko 2016-04-01 9:11 ` Andrew Morton
Reply instructions: You may reply publically to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
LKML Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \ email@example.com firstname.lastname@example.org public-inbox-index lkml Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel AGPL code for this site: git clone https://public-inbox.org/ public-inbox