From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751638AbcB1FRt (ORCPT ); Sun, 28 Feb 2016 00:17:49 -0500 Received: from mx2.suse.de ([195.135.220.15]:60665 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751201AbcB1FRs (ORCPT ); Sun, 28 Feb 2016 00:17:48 -0500 From: NeilBrown To: Ross Zwisler , Matthew Wilcox , Andrew Morton , Jan Kara Date: Sun, 28 Feb 2016 16:09:29 +1100 Subject: [PATCH 0/3] RFC improvements to radix-tree related to DAX Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Message-ID: <145663588892.3865.9987439671424028216.stgit@notabene> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, While pondering some issues with DAX and how it uses the radix tree I conceived the following patches. I don't know if they'll be useful but I thought I would post them in case they are helpful. The first is quite independent of the others - it removes some DAX specific #defines from radix-tree.h which is a generic ADT. The second makes an extra bit available when exception data is stored in the radix tree. The third uses this bit to provide a sleeping lock. With this it should be possible to delete exceptional entries from the radix tree in a race-free way without external locking. Like the page lock it requires an external set of wait_queue_heads. The same ones used for page_lock would be suitable. Note that this code is only compile tested. NeilBrown --- NeilBrown (3): DAX: move RADIX_DAX_ definitions to dax.c radix-tree: make 'indirect' bit available to exception entries. radix-tree: support locking of individual exception entries. fs/dax.c | 9 ++ include/linux/radix-tree.h | 28 +++++--- lib/radix-tree.c | 160 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 185 insertions(+), 12 deletions(-) -- Signature