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 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>