Received: by 2002:a05:6a10:6d25:0:0:0:0 with SMTP id gq37csp1994511pxb; Mon, 13 Sep 2021 09:40:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyiRo+1JP3lk0upZV2rk8dibJYmEXKPT8+oXH1tTIqr4eaq/wRAx8qR1t7aGAenMTGLn0wy X-Received: by 2002:aa7:c1d7:: with SMTP id d23mr1800551edp.228.1631551201015; Mon, 13 Sep 2021 09:40:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631551201; cv=none; d=google.com; s=arc-20160816; b=T3TpsOyh1Y+LoU/83vhbKaDBvP0ZhlX/wNior04RUfxbtLtntncOzPypfUWHuZTeJR 8nl2bV1qwAlxYbCqmeqMnLfkG2SLH363p2TCurvijz70iRQMWnbKbVfmlX1Xv0yZia7w a6UGtWwlD3E9TIhsT3cQR1WOXDbJb0yjawZoGMwRMzZbcDYJbiAlPZczWq12H+Wm30VM G7TECssMF0MRjuVz4ace8TjbZTr6go1Il4BE7WXe5FJbEnYQFlxP18W3HP7MijutEP1P MnLd/kpyTBNCqCJo5obMbE8KFScun5RJPa3fs7+e3AwOdiMut7rMQQULjQtEzRUb1SQA YWNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature:dkim-signature; bh=sADq2YKr9jfwk60jmtDQWCF0BvZ5gi9wFiZf1Lzc8Rk=; b=R4uK1DPcuqc8dp9w6iQuK0rAbC0UKA3GD2naznfyEjKKNFqAfye4a9oARlWiUG/v9/ OFUvgPbA/Yh/KyvJzg42nK8m6EHHhJC5S45mbCvxULgFnQPvEXq2mJ+/KSp6G8QHO3Jy Ve/BRlbtVc+mldjUJopbaeKek0f8TmEZ00YezusUNPu8FAWFuQsXfV6ld4YpIBRU+VGK /fEf6mxvBXOXubUXjW9Uv9CeRsQujNsH8zdVx825UmoWwtbhxjOh9z2kn4ecR/LWWP9y IwDyfRPbG1penE8nVtShAys/x+gM4BYBLyFxdOPXqSlxkZDkr8IjsK4157B4+SkHP7n2 qNWA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=jW8FJT56; dkim=neutral (no key) header.i=@suse.de header.b=s92XzRaS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m15si7484216edp.413.2021.09.13.09.39.36; Mon, 13 Sep 2021 09:40:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-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=@suse.de header.s=susede2_rsa header.b=jW8FJT56; dkim=neutral (no key) header.i=@suse.de header.b=s92XzRaS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238032AbhIMQjc (ORCPT + 99 others); Mon, 13 Sep 2021 12:39:32 -0400 Received: from smtp-out2.suse.de ([195.135.220.29]:55990 "EHLO smtp-out2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233005AbhIMQja (ORCPT ); Mon, 13 Sep 2021 12:39:30 -0400 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id DE87020007; Mon, 13 Sep 2021 16:38:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1631551093; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=sADq2YKr9jfwk60jmtDQWCF0BvZ5gi9wFiZf1Lzc8Rk=; b=jW8FJT56suitDpb5iPieL89czU/zZON16K6rMwb+KhVmnNl2MeW3UivrZMhQowYPelB2pJ X8xg4rQ9/tcIzzwSrB6O7h4Fwo3kBMtDNNJH5rlknJ02cZOZ7VcG4YMcsb65VWooxlQrL7 nnzhzbIGq/eEF/4TXmhtlAdq140xvXE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1631551093; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=sADq2YKr9jfwk60jmtDQWCF0BvZ5gi9wFiZf1Lzc8Rk=; b=s92XzRaS0fG41KQdEwFTxkMD6AAkWySnDLncRmTsaBB4P0lfiu9JZJ4cKr7/6WvXpKGeDT aXKzRPunealP20AA== Received: from localhost.localdomain (unknown [10.163.16.22]) by relay2.suse.de (Postfix) with ESMTP id 2AFCBA3B88; Mon, 13 Sep 2021 16:38:07 +0000 (UTC) From: Coly Li To: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-raid@vger.kernel.org, nvdimm@lists.linux.dev Cc: antlists@youngman.org.uk, Coly Li , Dan Williams , Hannes Reinecke , Jens Axboe , NeilBrown , Richard Fan , Vishal L Verma Subject: [PATCH v3 0/7] badblocks improvement for multiple bad block ranges Date: Tue, 14 Sep 2021 00:36:36 +0800 Message-Id: <20210913163643.10233-1-colyli@suse.de> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is the second effort to improve badblocks code APIs to handle multiple ranges in bad block table. There are 2 changes from previous version, - Fixes 2 bugs in front_overwrite() which are detected by the user space testing code. - Provide the user space testing code in last patch. There is NO in-memory or on-disk format change in the whole series, all existing API and data structures are consistent. This series just only improve the code algorithm to handle more corner cases, the interfaces are same and consistency to all existing callers (md raid and nvdimm drivers). The original motivation of the change is from the requirement from our customer, that current badblocks routines don't handle multiple ranges. For example if the bad block setting range covers multiple ranges from bad block table, only the first two bad block ranges merged and rested ranges are intact. The expected behavior should be all the covered ranges to be handled. All the patches are tested by modified user space code and the code logic works as expected. The modified user space testing code is provided in last patch. The testing code detects 2 defects in helper front_overwrite() and fixed in this version. The whole change is divided into 6 patches to make the code review more clear and easier. If people prefer, I'd like to post a single large patch finally after the code review accomplished. This version is seriously tested, and so far no more defect observed. Coly Li Cc: Dan Williams Cc: Hannes Reinecke Cc: Jens Axboe Cc: NeilBrown Cc: Richard Fan Cc: Vishal L Verma --- Changelog: v3: add tester Richard Fan v2: the improved version, and with testing code. v1: the first completed version. Coly Li (6): badblocks: add more helper structure and routines in badblocks.h badblocks: add helper routines for badblock ranges handling badblocks: improvement badblocks_set() for multiple ranges handling badblocks: improve badblocks_clear() for multiple ranges handling badblocks: improve badblocks_check() for multiple ranges handling badblocks: switch to the improved badblock handling code Coly Li (1): test: user space code to test badblocks APIs block/badblocks.c | 1599 ++++++++++++++++++++++++++++++------- include/linux/badblocks.h | 32 + 2 files changed, 1340 insertions(+), 291 deletions(-) -- 2.31.1