Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755943AbdDFIyv (ORCPT ); Thu, 6 Apr 2017 04:54:51 -0400 Received: from smtp2.provo.novell.com ([137.65.250.81]:42345 "EHLO smtp2.provo.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756221AbdDFIq5 (ORCPT ); Thu, 6 Apr 2017 04:46:57 -0400 From: Davidlohr Bueso To: mingo@kernel.org, peterz@infradead.org, akpm@linux-foundation.org Cc: jack@suse.cz, kirill.shutemov@linux.intel.com, ldufour@linux.vnet.ibm.com, mhocko@suse.com, mgorman@techsingularity.net, dave@stgolabs.net, linux-kernel@vger.kernel.org Subject: [PATCH v2 -tip 0/6] locking: Introduce range reader/writer lock Date: Thu, 6 Apr 2017 01:46:14 -0700 Message-Id: <20170406084620.22700-1-dave@stgolabs.net> X-Mailer: git-send-email 2.12.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3079 Lines: 69 Changes from v1 (https://lwn.net/Articles/716383/), all in patch 2: - s/EXPORT_SYMBOL/EXPORT_SYMBOL_GPL - Made the tree walks a foreach loop, instead of while. - Fixed signal_pending() lockup issue for unaccounted waiters. - Fixed initialization macros. - Check condition before signal_pending in loop. - Make building the interval-tree unconditionally a separate patch. - More/better documentation. - Added jack's reviewed-by. - Renamed inf to full. ** What's still pending: - Debug support (it's been a pain to use lockdep with range locking). - Renaming the lock; I don't agree that rwlock's should have exclusivity on such a generic name; maybe they should be called rwspinlocks :) - lustre 32bit offset caveat. Hi, Here's a very tardy proposal for enhancements to Jan's original[1] range lock using interval trees. Because at some point it would be awesome to switch mmap_sem from rwsem to range rwlock, I've focused on making it sharable and performance enhancements reducing the performance delta between this and conventional locks as much as possible -- details in patch 2. The rest of the patches adds support for testing the new lock and actually makes use of it for lustre. It has passed quite a bit of artificial pounding and I believe/hope it is in shape to consider. Laurent, while there are some pending items Peter wants, it might be worth using this series for any further mmap_sem testing. Applies on top of tip v4.11-rc5 [1] https://lkml.org/lkml/2013/1/31/483 Thanks! Davidlohr Bueso (6): interval-tree: Build unconditionally locking: Introduce range reader/writer lock locking/locktorture: Fix rwsem reader_delay locking/locktorture: Fix num reader/writer corner cases locking/locktorture: Support range rwlocks staging/lustre: Use generic range rwlock drivers/gpu/drm/Kconfig | 2 - drivers/gpu/drm/i915/Kconfig | 1 - drivers/staging/lustre/lustre/llite/Makefile | 2 +- drivers/staging/lustre/lustre/llite/file.c | 21 +- .../staging/lustre/lustre/llite/llite_internal.h | 4 +- drivers/staging/lustre/lustre/llite/llite_lib.c | 3 +- drivers/staging/lustre/lustre/llite/range_lock.c | 239 --------- drivers/staging/lustre/lustre/llite/range_lock.h | 82 --- include/linux/range_rwlock.h | 115 +++++ kernel/locking/Makefile | 2 +- kernel/locking/locktorture.c | 299 ++++++++--- kernel/locking/range_rwlock.c | 554 +++++++++++++++++++++ lib/Kconfig | 14 - lib/Kconfig.debug | 1 - lib/Makefile | 3 +- 15 files changed, 903 insertions(+), 439 deletions(-) delete mode 100644 drivers/staging/lustre/lustre/llite/range_lock.c delete mode 100644 drivers/staging/lustre/lustre/llite/range_lock.h create mode 100644 include/linux/range_rwlock.h create mode 100644 kernel/locking/range_rwlock.c -- 2.12.0