Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp1806428ybg; Sat, 19 Oct 2019 02:55:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqyhCwf1FQWhCIOkASYcL+GjPLDr3/mzsOIAyGQX32iuB/bOwozVVp85VJ9h2WYck3cur+QN X-Received: by 2002:aa7:c259:: with SMTP id y25mr14059966edo.117.1571478939663; Sat, 19 Oct 2019 02:55:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571478939; cv=none; d=google.com; s=arc-20160816; b=J1lqnK3WZaploS36E3MYGpHEwmuVjns5rSwSikcBlM69pnmgcdrhu3Sn6pRQuLx6LR O2Y4hY54ygYhppUqNXNAib4jiZEceblel+oZ3TuXIPcgJnjbgvFzf5AsOkPqSdWUEaas O1ry7S0hXwyy9/1JuN+la3jKNUokLDTS0+w67Roeo0hXGJ11gG4wbJAZPcCeR3xQmXfF LFHz0I91N1DK6pyS7Ar+QKFso0x6cUK2NtnNRZIsDnw5a3Tmt+LymnaO3OQBNh87WH/X YWF3HpvEMhu/sILGx8Kx9TPaErqGogS8PFkfVIGKR/bo6S9Rg5+YUODZtU55cridtw5O g9TA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=Gw5rHnQYC4dAC2O+pEBM11U0+X8LaxuKDIwE87CPTFw=; b=mLsIWVZL8FKeMmhp2LzGM8lcUAePa1q49i3eMIJlDG6A39XcjHoCfEOp4EfPN1+biw xksB46VhZc3yudlSE2A2cP8FBAZdsNpWvdOWMl/PHsAc3zBtlgENiR/+PV8+fznPTsX5 YPC2pavMY/QR/bVxJtorDwJx3ItqmmgUbibfu1Ozgs76eA+zvFBnd9UYnf4hlskJl9KD SIgYker48WE2a5DdPbjfslNqruOhEOhoPF76lVvkWyAy2drWQJRtMHyW0cWxfui+oqlf nom9owHrgrbWjEFUrqpPOJC9gzgqUbPzguBcgQT7EJgsUMvZ4R6QQdJ2i6WxKKZ7UrFm h2aA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c10si5529114edc.419.2019.10.19.02.55.16; Sat, 19 Oct 2019 02:55:39 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726646AbfJSHUv (ORCPT + 99 others); Sat, 19 Oct 2019 03:20:51 -0400 Received: from www17.your-server.de ([213.133.104.17]:55116 "EHLO www17.your-server.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726252AbfJSHUv (ORCPT ); Sat, 19 Oct 2019 03:20:51 -0400 Received: from sslproxy05.your-server.de ([78.46.172.2]) by www17.your-server.de with esmtpsa (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256) (Exim 4.89_1) (envelope-from ) id 1iLj2f-0001q0-Ku; Sat, 19 Oct 2019 09:20:49 +0200 Received: from [2a02:908:4c22:ec00:8ad5:993:4cda:a89f] (helo=localhost.localdomain) by sslproxy05.your-server.de with esmtpsa (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256) (Exim 4.89) (envelope-from ) id 1iLj2f-0000W2-E0; Sat, 19 Oct 2019 09:20:49 +0200 From: Thomas Meyer To: linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org Cc: Thomas Meyer Subject: [PATCH 2/2] xfs: replace homemade binary search Date: Sat, 19 Oct 2019 09:20:33 +0200 Message-Id: <20191019072033.17744-2-thomas@m3y3r.de> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191019072033.17744-1-thomas@m3y3r.de> References: <20191019072033.17744-1-thomas@m3y3r.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Authenticated-Sender: thomas@m3y3r.de X-Virus-Scanned: Clear (ClamAV 0.101.4/25606/Fri Oct 18 10:58:40 2019) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org use newly introduced bsearch_idx instead. Signed-off-by: Thomas Meyer --- fs/xfs/libxfs/xfs_dir2_block.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/fs/xfs/libxfs/xfs_dir2_block.c b/fs/xfs/libxfs/xfs_dir2_block.c index 9595ced393dce..e484ec68944fb 100644 --- a/fs/xfs/libxfs/xfs_dir2_block.c +++ b/fs/xfs/libxfs/xfs_dir2_block.c @@ -20,6 +20,7 @@ #include "xfs_error.h" #include "xfs_trace.h" #include "xfs_log.h" +#include /* * Local function prototypes. @@ -314,6 +315,19 @@ xfs_dir2_block_compact( xfs_dir2_data_freescan(args->dp, hdr, needlog); } +static int cmp_hashval(const void *key, const void *elt) +{ + xfs_dahash_t _search_key = *(xfs_dahash_t *)key; + xfs_dahash_t _curren_key = be32_to_cpu(( + (xfs_dir2_leaf_entry_t *) elt)->hashval); + + if (_search_key == _curren_key) + return 0; + else if (_search_key < _curren_key) + return -1; + return 1; +} + /* * Add an entry to a block directory. */ @@ -331,19 +345,17 @@ xfs_dir2_block_addname( xfs_dir2_data_unused_t *dup; /* block unused entry */ int error; /* error return value */ xfs_dir2_data_unused_t *enddup=NULL; /* unused at end of data */ - xfs_dahash_t hash; /* hash value of found entry */ - int high; /* high index for binary srch */ int highstale; /* high stale index */ int lfloghigh=0; /* last final leaf to log */ int lfloglow=0; /* first final leaf to log */ int len; /* length of the new entry */ - int low; /* low index for binary srch */ int lowstale; /* low stale index */ int mid=0; /* midpoint for binary srch */ int needlog; /* need to log header */ int needscan; /* need to rescan freespace */ __be16 *tagp; /* pointer to tag value */ xfs_trans_t *tp; /* transaction structure */ + struct bsearch_result idx; /* bsearch result */ trace_xfs_dir2_block_addname(args); @@ -420,15 +432,9 @@ xfs_dir2_block_addname( /* * Find the slot that's first lower than our hash value, -1 if none. */ - for (low = 0, high = be32_to_cpu(btp->count) - 1; low <= high; ) { - mid = (low + high) >> 1; - if ((hash = be32_to_cpu(blp[mid].hashval)) == args->hashval) - break; - if (hash < args->hashval) - low = mid + 1; - else - high = mid - 1; - } + idx = bsearch_idx(&args->hashval, blp, be32_to_cpu(btp->count) - 1, + sizeof(xfs_dir2_leaf_entry_t), cmp_hashval); + mid = idx.idx; while (mid >= 0 && be32_to_cpu(blp[mid].hashval) >= args->hashval) { mid--; } -- 2.21.0