Received: by 10.213.65.68 with SMTP id h4csp1994411imn; Thu, 29 Mar 2018 15:17:50 -0700 (PDT) X-Google-Smtp-Source: AIpwx49dO+z9b5yOrno3GXz/AYYBT+behRnLDufFTKu1+TrYY4ZIJReFYGbt52aIglM0v33+Ipbf X-Received: by 2002:a17:902:bc04:: with SMTP id n4-v6mr10176604pls.97.1522361870509; Thu, 29 Mar 2018 15:17:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522361870; cv=none; d=google.com; s=arc-20160816; b=bkmyeRolpL4F75fJB8sejtfFitVs9ndfKQWKMIPfX4EwWB78DihhrS2wo4gfqw2JW6 Cqg7yowZhnzHRfTQicxzRr7O1MIH6hGmHjtDSY+4HH0KVKDKxNq7apfEGFIWgQ4fPsZF svdymaNuwTW/wMfHhyvLbsv9/LGeuRVTmkDJmKLb53l9Lu/9BHQh+ltCncMHqC/czoWp 9oMFKIiebWyXNlydTvr7HUqfaZ7PWetvXjDCaUOwzutQS9wGQPV2+t/WNxiDdrif2fil shIXGtQHyT+tFshgM4VTEFZI6Huo+M34u/VyaLRsTBCiA2XXfW9tpqyd9SLBWb18HoWT cloA== 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 :dkim-signature:arc-authentication-results; bh=sWzbcWi0+TC9lG48QH91Py4dW1Pq3ghbDKbCQZP56Gc=; b=E23LGrE5niSxlKpQBCT+zndzsDAaeF+Cw6a7xeZzmKxeU4tVKaTu4kUF7PVQ8lW+Yy 3QlhQVDavn9r+AmQv50qkUwL+oNRIz+m2mtlkhgWtHqGfga9XqElxkt1w7pAgf6XB1Pn 2BAiIUhHxcNPdOJIxbdWXvfNOZ7gcpN9J9FDoaJ2Z8cKrUTsMlKf6P9IKgqiaGDV/AaG hOQwp/vNOqe3iWfmxAO3EhgwfD+3p+sdiglU0xa2fWl1F2rJ71c6NULuUUfsU46x+C5W 4gmSHiuUDQBaW32EH7r9hm17WjPDaO4mDBWcAQL2L8EQeBQXu4PO7riGTwowDJE21Egi MPMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lightnvm-io.20150623.gappssmtp.com header.s=20150623 header.b=RqXVAGrS; 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 n3-v6si5827722pld.172.2018.03.29.15.17.36; Thu, 29 Mar 2018 15:17:50 -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; dkim=pass header.i=@lightnvm-io.20150623.gappssmtp.com header.s=20150623 header.b=RqXVAGrS; 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 S1752667AbeC2WQf (ORCPT + 99 others); Thu, 29 Mar 2018 18:16:35 -0400 Received: from mail-lf0-f66.google.com ([209.85.215.66]:34763 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752021AbeC2WG7 (ORCPT ); Thu, 29 Mar 2018 18:06:59 -0400 Received: by mail-lf0-f66.google.com with SMTP id c78-v6so10370250lfh.1 for ; Thu, 29 Mar 2018 15:06:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lightnvm-io.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=sWzbcWi0+TC9lG48QH91Py4dW1Pq3ghbDKbCQZP56Gc=; b=RqXVAGrS09snz53lEqZOzyyocjvbW/m/690bP4TrUnLG/bnpmZgRtVYsKJoksp1eZE qKNz6iFiB3rwCMQrddyyGlEVBhaYAYecFgztEVrVH1UBpRrL5yX3KnGXDSu+qRy7NztL tQmBEOGqGqh8jFzrGxpZDY744oThSTy6ria1eNmx7ZGbAWu1nnds1WMkYsYzmIs8eLhO iP4PKy4W2zcvUd+FVq0c8ZRYX/R7oBhCaSCT4TbaupannhlX/f5/Rc1mZkoeT00XP6XG 4AtgfyYd4TspnrXtj8fQkqmWjckM8hEmt1ZKNq8RJ0iVDvlru8Jn2TzbvDLhi3DE6RwO P57g== 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:mime-version:content-transfer-encoding; bh=sWzbcWi0+TC9lG48QH91Py4dW1Pq3ghbDKbCQZP56Gc=; b=E03jwRk/b1bhf1qDDTsgsUuRwF/4LV3Lfq2lrKeUOpB1Gw5AgPrIr9tqpj9e6Ezsy6 wz4XfvUiLhI1UUif1EiqXO5Ksmr56fk3OSU9gyaEpt9WNTcnW/zr/+y5EotRt0vHYZJp 1IZx4W6riKBAuRlM3h3q61zvUUH60yJZeNZOAkzUNUf7uV07z2PBFjbVMOT0AfaXcPN1 O/w5xlFm7ti88q+FbKkFZ/iU06NiKBuRpONJXfi+eU9LeLh3S36LV5Ss+tOX3VHNuCVO E0nRVZBMDNBcjJ3srFWNPSDct0t/+NdZqDlNacdYZlAyb4OtDx2JEJH3I78dgWdEUHJn DmZg== X-Gm-Message-State: AElRT7H0cBbIAT7sFgTs0PNugtb1VFQMFCXm0HzqQIdx82H+/CTqjvVI Y1FkJUL4OQZFVsNKCAKFAQ/ozg== X-Received: by 10.46.158.19 with SMTP id e19mr6722387ljk.47.1522361217880; Thu, 29 Mar 2018 15:06:57 -0700 (PDT) Received: from Macroninja.cnexlabs.com (x1-6-a4-08-f5-18-3c-3a.cpe.webspeed.dk. [188.176.29.198]) by smtp.gmail.com with ESMTPSA id i89-v6sm1365508lfk.12.2018.03.29.15.06.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 29 Mar 2018 15:06:57 -0700 (PDT) From: =?UTF-8?q?Matias=20Bj=C3=B8rling?= To: axboe@fb.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, keith.busch@intel.com, javier@cnexlabs.com, Hans Holmberg , =?UTF-8?q?Matias=20Bj=C3=B8rling?= Subject: [GIT PULL 03/37] lightnvm: pblk: handle bad sectors in the emeta area correctly Date: Fri, 30 Mar 2018 00:04:50 +0200 Message-Id: <20180329220524.30363-4-mb@lightnvm.io> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180329220524.30363-1-mb@lightnvm.io> References: <20180329220524.30363-1-mb@lightnvm.io> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Hans Holmberg Unless we check if there are bad sectors in the entire emeta-area we risk ending up with valid bitmap / available sector count inconsistency. This results in lines with a bad chunk at the last LUN marked as bad, so go through the whole emeta area and mark up the invalid sectors. Signed-off-by: Hans Holmberg Signed-off-by: Matias Bjørling --- drivers/lightnvm/pblk-core.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c index 0487b9340c1d..9027cf2ed1d8 100644 --- a/drivers/lightnvm/pblk-core.c +++ b/drivers/lightnvm/pblk-core.c @@ -1021,6 +1021,7 @@ static int pblk_line_init_bb(struct pblk *pblk, struct pblk_line *line, int nr_bb = 0; u64 off; int bit = -1; + int emeta_secs; line->sec_in_line = lm->sec_per_line; @@ -1055,18 +1056,18 @@ static int pblk_line_init_bb(struct pblk *pblk, struct pblk_line *line, /* Mark emeta metadata sectors as bad sectors. We need to consider bad * blocks to make sure that there are enough sectors to store emeta */ - off = lm->sec_per_line - lm->emeta_sec[0]; - bitmap_set(line->invalid_bitmap, off, lm->emeta_sec[0]); - while (nr_bb) { + emeta_secs = lm->emeta_sec[0]; + off = lm->sec_per_line; + while (emeta_secs) { off -= geo->sec_per_pl; if (!test_bit(off, line->invalid_bitmap)) { bitmap_set(line->invalid_bitmap, off, geo->sec_per_pl); - nr_bb--; + emeta_secs -= geo->sec_per_pl; } } - line->sec_in_line -= lm->emeta_sec[0]; line->emeta_ssec = off; + line->sec_in_line -= lm->emeta_sec[0]; line->nr_valid_lbas = 0; line->left_msecs = line->sec_in_line; *line->vsc = cpu_to_le32(line->sec_in_line); -- 2.11.0