From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965283AbcIVRDw (ORCPT ); Thu, 22 Sep 2016 13:03:52 -0400 Received: from p3plsmtps2ded03.prod.phx3.secureserver.net ([208.109.80.60]:58404 "EHLO p3plsmtps2ded03.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935002AbcIVRDg (ORCPT ); Thu, 22 Sep 2016 13:03:36 -0400 x-originating-ip: 72.167.245.219 From: Matthew Wilcox To: Linus Torvalds , "Kirill A. Shutemov" , Andrew Morton , Konstantin Khlebnikov , Ross Zwisler Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, Matthew Wilcox Subject: [PATCH 1/2] radix tree test suite: Test radix_tree_replace_slot() for multiorder entries Date: Thu, 22 Sep 2016 11:53:34 -0700 Message-Id: <1474570415-14938-2-git-send-email-mawilcox@linuxonhyperv.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1474570415-14938-1-git-send-email-mawilcox@linuxonhyperv.com> References: <1474570415-14938-1-git-send-email-mawilcox@linuxonhyperv.com> X-CMAE-Envelope: MS4wfHLz13xBK1fY76kBGg45bj7MpFGAENzj23btHMSpld/IXlJ3nDZnSUw6CXIGMvO3/nZpzElx/7MNo5VlGp9C1mVGLHFlTYh+B15RWUCfgyhDiDkY5sG+ b/BwtpLJ6fHdQd01T1IrpwjBI0ByVH2ecF788D/ZHkNHeprq5g176UJVCzv8nwsmuAzfDmq2aQlOetoiMJ1VdnQ38fyu2PuHZGnQ5XOBZGgTATys/q0zcDs+ WkzqAX3fISwOoVMd2FmiqnRcW9EH9TzKXm/OCgWQhVNYWC4iNEmkG70e6L7f7piLIWIQ1BrOtwK91m8NCYdiXozu3Tf5zpFjbcG6B53mdzxBb2OSwhkywO8V tgwjeIG7mYKCPZdnJIX4IYiv00PvF6LUWg0i/J0SDy6DAelID5DMf40vPNaM/zIl5dpyZ3/KbNsIROT/Na6kUc2lmYRZ2WnTbTzo/LNfowucCPf6gE5PJLib VFTKb05kSkeBeMHmiRNMdjUfjq6oGF7tk9mksA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Matthew Wilcox When we replace a multiorder entry, check that all indices reflect the new value. Signed-off-by: Matthew Wilcox --- tools/testing/radix-tree/multiorder.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tools/testing/radix-tree/multiorder.c b/tools/testing/radix-tree/multiorder.c index 39d9b95..05d7bc4 100644 --- a/tools/testing/radix-tree/multiorder.c +++ b/tools/testing/radix-tree/multiorder.c @@ -124,6 +124,8 @@ static void multiorder_check(unsigned long index, int order) unsigned long i; unsigned long min = index & ~((1UL << order) - 1); unsigned long max = min + (1UL << order); + void **slot; + struct item *item2 = item_create(min); RADIX_TREE(tree, GFP_KERNEL); printf("Multiorder index %ld, order %d\n", index, order); @@ -139,13 +141,19 @@ static void multiorder_check(unsigned long index, int order) item_check_absent(&tree, i); for (i = max; i < 2*max; i++) item_check_absent(&tree, i); + for (i = min; i < max; i++) + assert(radix_tree_insert(&tree, i, item2) == -EEXIST); + + slot = radix_tree_lookup_slot(&tree, index); + free(*slot); + radix_tree_replace_slot(slot, item2); for (i = min; i < max; i++) { - static void *entry = (void *) - (0xA0 | RADIX_TREE_EXCEPTIONAL_ENTRY); - assert(radix_tree_insert(&tree, i, entry) == -EEXIST); + struct item *item = item_lookup(&tree, i); + assert(item != 0); + assert(item->index == min); } - assert(item_delete(&tree, index) != 0); + assert(item_delete(&tree, min) != 0); for (i = 0; i < 2*max; i++) item_check_absent(&tree, i); -- 2.9.3