Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1430435ybt; Thu, 18 Jun 2020 08:30:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwcwdgcll/XyoLZpMI/lQOPokSlXbopfwziVg4ioMezjqQRf9DISFGA3v4MYWrrUjtIDGaP X-Received: by 2002:a17:906:7712:: with SMTP id q18mr4393916ejm.140.1592494230946; Thu, 18 Jun 2020 08:30:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592494230; cv=none; d=google.com; s=arc-20160816; b=HgLSiUShpnbMapJLw7edqhScQorSEMYu+DsnLQN03l8L9ggbielUbWbW3cZiBBr3gY SFfXWS6LUVoFIGe/LUGM6ZXUfQQxRHMeKB/J92hrN6TPHoGe2jYcEjnKsUJSFl77i1RT eMTCedW9c/LGjcnHlAoYfRWNqVHbVhc0NMOiRZdCzy7+J5U/XW0QgAR/O+K9vDZjPba4 icMTep09fx6ZBf6xOgH8czKSOPwfHHmFHKIUftWqxDAEBtZ60JnXz7EuQs7kckDIZ+oT PuJwPcNJxVtNABq3V8E42Fl1MVxBD0h1HJViiv8LnJIzJ79YWvOEzSb/fckQ3gPpIHTL 4LFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=gLeoCzqW+OtzfeupIci2vYG8XkDVxg07PvPxmMZqEI4=; b=sdiLeANNhXwLA1NmDLPKJisf3dVTwW6X4jWgJTypWw2/6y3mod5Hj3D7uZuod9E6Ec H8Pq+OB0VlOC/CQYQ5isthaXPP060NG1bxuCL8zXhwgoLBw6E39AVLXE+8G2nPlxuS7D izCkCd37zZ+dh526bIOI6GVGSAXuKBO187agE3uo5WpaLfoIfIYfkZQi4qYmCAbGP1Uj 6HHVSa821QtDM//Ei4N510QObJCN+rG1wYMaUpGvPxctbzOcVn4hSEXxqpv4bvz9VK80 woQyYUx/O2shQnU2mwoL9spu3n4HHbwRW8GvSMle/RokdZQB6EaM6je07W+84Qh4GHVL riYw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=OHRHTBbZ; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v5si1981091ejj.410.2020.06.18.08.30.03; Thu, 18 Jun 2020 08:30:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=OHRHTBbZ; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731535AbgFRP31 (ORCPT + 99 others); Thu, 18 Jun 2020 11:29:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731602AbgFRP3Y (ORCPT ); Thu, 18 Jun 2020 11:29:24 -0400 Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D2202C06174E for ; Thu, 18 Jun 2020 08:29:24 -0700 (PDT) Received: by mail-pf1-x442.google.com with SMTP id b16so2916644pfi.13 for ; Thu, 18 Jun 2020 08:29:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=gLeoCzqW+OtzfeupIci2vYG8XkDVxg07PvPxmMZqEI4=; b=OHRHTBbZPpn/YiG9NXAM4JHqnAPfQo9ud7hWm8Jw6FMlPfacHbRfSyJ0RJ/7vexWL2 FMbBMV5vm5qQ8pBaW9l8+cNOQkfDXKJtSlGNlnHPl/DUL2/dhKmJgJ3OBRkFfuDru2Hg gbnsOMtRp6z6GUGMOBFSz78MQI3YYeGLUKfzSloyeNCazZdjI+601vdRhzAM9G//H4Ln 8HyQibX2Ri/AhGiiMy96C/ZDy5WL3M9ZwrDDgPUF69ZH1ieIOg5sCT6lzkN7Y3p+Balo vImgyG7io6wG8VRDWxcjq1x0jMYp4kitZLxfiHbm54avxBS0E6PLD7KgfLc+sR6oEC5u 4p6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=gLeoCzqW+OtzfeupIci2vYG8XkDVxg07PvPxmMZqEI4=; b=kyBBR4ThtnYWLo4KZQHui7y9NZ0bk+VJ03ZsoeZSHHKhvyPmjpLOG2uH5yCxZNjqrP lk7I5BrQL56hTYJfepvR5fUV2jbCy9mXU6UcqWOBlbyX4qc3cuXiSjftwn6Gxc0MwzNF +8KXo/6jrWXr7yNDb5BF0R0B0wXELfAIZ6drHl+Y2CD+xshsNLhpi4q3UKz/ak5W1X+M R0iEi46wc54OqA18UJRhBnFA6M7+oj0lATXxTKeRPv/DD08UGusi1N1f26V1X5UCloeq TNddj+KJ4EDqTWfffB71PCOHf+yS8GLQe9at6WaZDAf6w8ks4d1hApWVPT5lepyAeHpI PIRg== X-Gm-Message-State: AOAM531pxNO/yyWQmnx1LJ7tmHI7b7bfJKnb4nk8eEhcsUIn+MNx5uu7 Gg6CNEM9Z6uQ57UdusQPHso83ZVwWOQ= X-Received: by 2002:a62:154f:: with SMTP id 76mr4116417pfv.322.1592494164101; Thu, 18 Jun 2020 08:29:24 -0700 (PDT) Received: from localhost.localdomain (ftp.datadirectnet.jp. [182.171.80.51]) by smtp.gmail.com with ESMTPSA id y81sm3306650pfb.33.2020.06.18.08.29.22 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Jun 2020 08:29:23 -0700 (PDT) From: Wang Shilong To: linux-ext4@vger.kernel.org Cc: lixi@ddn.com, adilger@dilger.ca, wangshilong1991@gmail.com, sihara@ddn.com, Wang Shilong Subject: [RFC PATCH v2 30/51] e2fsck: merge dirs_to_hash when threads finish Date: Fri, 19 Jun 2020 00:27:33 +0900 Message-Id: <1592494074-28991-31-git-send-email-wangshilong1991@gmail.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1592494074-28991-1-git-send-email-wangshilong1991@gmail.com> References: <1592494074-28991-1-git-send-email-wangshilong1991@gmail.com> Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org From: Wang Shilong This will fix t_dangerous test failure with 2 threads. Signed-off-by: Wang Shilong --- e2fsck/pass1.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c index 868c8777..3e608f3b 100644 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@ -2494,6 +2494,27 @@ static errcode_t e2fsck_pass1_merge_icounts(e2fsck_t global_ctx, e2fsck_t thread return 0; } +static int e2fsck_pass1_merge_dirs_to_hash(e2fsck_t global_ctx, e2fsck_t thread_ctx) +{ + int retval = 0; + + if (thread_ctx->dirs_to_hash) { + if (!global_ctx->dirs_to_hash) + retval = ext2fs_badblocks_copy(thread_ctx->dirs_to_hash, + &global_ctx->dirs_to_hash); + else + retval = ext2fs_badblocks_merge(thread_ctx->dirs_to_hash, + global_ctx->dirs_to_hash); + + if (retval) + return retval; + + ext2fs_badblocks_list_free(thread_ctx->dirs_to_hash); + thread_ctx->dirs_to_hash = 0; + } + return retval; +} + static int e2fsck_pass1_thread_join_one(e2fsck_t global_ctx, e2fsck_t thread_ctx) { errcode_t retval; @@ -2535,6 +2556,7 @@ static int e2fsck_pass1_thread_join_one(e2fsck_t global_ctx, e2fsck_t thread_ctx __u32 large_files = global_ctx->large_files; int dx_dir_info_size = global_ctx->dx_dir_info_size; int dx_dir_info_count = global_ctx->dx_dir_info_count; + ext2_u32_list dirs_to_hash = global_ctx->dirs_to_hash; #ifdef HAVE_SETJMP_H jmp_buf old_jmp; @@ -2602,6 +2624,12 @@ static int e2fsck_pass1_thread_join_one(e2fsck_t global_ctx, e2fsck_t thread_ctx _("while merging icounts\n")); return retval; } + global_ctx->dirs_to_hash = dirs_to_hash; + retval = e2fsck_pass1_merge_dirs_to_hash(global_ctx, thread_ctx); + if (retval) { + com_err(global_ctx->program_name, 0, _("while merging dirs to hash\n")); + return retval; + } /* * PASS1_COPY_CTX_BITMAP might return directly from this function, -- 2.25.4