Received: by 10.213.65.68 with SMTP id h4csp1988206imn; Thu, 29 Mar 2018 15:09:17 -0700 (PDT) X-Google-Smtp-Source: AIpwx49RmS8rmOJevHcOkrF3chjv6tVwuaKsuWLm3ap1XhrnQSzWbPHHCK3IRD+BO4SdatPH+UqZ X-Received: by 10.99.141.200 with SMTP id z191mr6650006pgd.418.1522361357680; Thu, 29 Mar 2018 15:09:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522361357; cv=none; d=google.com; s=arc-20160816; b=hNpG1wC1AR9soKW5478jBiiq3kEqm1C7OzJMnnrltx8CoE0u15Dflxa8pqTHYDQinX eIMkH7AF1NN2UxQbViB6QlqmzpCHF+lseeKkzwJcYWEyGTmitK7vF5foMaiZonWlG6NH NwW7Ec8xBQmjtEFoTndfqU8ZI9OBi9sS37QeS4kmBwe9f9aoyE4ABYXIVyQi8V++NjOI KnyHioPqPr4dKdwSkCayIYRrsSD07E4SuBlOtb22buoAGUjntdq4j3xar/o80eA2lLVX SV44T0DD1RaPKLzeqN3hCiTRJyhE/vLhU4kVp1IJQvQ2BKh5U+ruVvfT3yReGxdxSYuV jyqw== 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=70D6ItBMDqjRHr87Vs4xZQbwhPzQhrSqf0xA/H+t7lY=; b=jQhoeKj9Qpfbi5DWwOM07za8F1ln9OznQTOpUmkSP7Cps7jXfGMDckm+Xiizg0gZF8 D34rYNoETcy9ML9+Q9MmaAg6IDynXJS1ejmwrGSxA6XPg5gpXwNU39PmqTd7VcA8lzRL Mb/vFH/aekv00nEyAhlnU4849Htt40FXOLDmF99bPmnZkHQ8Lca5+HrSui10OR3pzb4L hI3V2l4HtioX/AP/MZuFYvgg6+AQWTN6o7wSVlNv/ntyiYg81lAej+AsSdkenKcm1oud 5lRt6P/ylkfmZOYFwKUoyroAWA8AJg4pdVVcXJ7C/3+9M6zWusWG15k8x2iIEcooA0kx l4Aw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lightnvm-io.20150623.gappssmtp.com header.s=20150623 header.b=rCHOUMWZ; 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 i63si4588465pge.289.2018.03.29.15.09.03; Thu, 29 Mar 2018 15:09:17 -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=rCHOUMWZ; 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 S1752816AbeC2WHq (ORCPT + 99 others); Thu, 29 Mar 2018 18:07:46 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:35982 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752787AbeC2WHn (ORCPT ); Thu, 29 Mar 2018 18:07:43 -0400 Received: by mail-lf0-f68.google.com with SMTP id z143-v6so10349149lff.3 for ; Thu, 29 Mar 2018 15:07:43 -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=70D6ItBMDqjRHr87Vs4xZQbwhPzQhrSqf0xA/H+t7lY=; b=rCHOUMWZTKa9jBYyLZVnrrh6cBzaWjFHOJ+wIUIleuA0+CSaZG3FYxTHGqmohZ9Tt8 WZGsiuD4p/I/g29tLDjFdkTb6D2zGiCU8pAycxHRmp873EffdZLCa0Vb33K5zUBXGdsp y2cxCJPjaajvtF3V/ZDWpNzAE64rIAr1Zf7j9NRNPrtQnAQtFw2KhRsRyRss25XY8Qe1 DVAV9B4Z9a9pSpKg56DO5CowCpeazxG/iREj/R2WF65Om2E3pzNq51LHCuRXH+0W2ZNb MMIh8AshEGzNr6/tkoR87gpqN3++dIYK/urIKJLC2MZTFavjbtkWQ/dU+wddZVRpDugP AApA== 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=70D6ItBMDqjRHr87Vs4xZQbwhPzQhrSqf0xA/H+t7lY=; b=E/D842RGVbI/8tyl+Tc9+o2oAeYY0O6UILKxaLPIJQ7IHF7qAfDojPlUVfh8UsDX3/ gZTqgH13UoskRH+vYqvWReXC+ZkNEPorvWJ2hDK8rpouCaYcYNlRU8ON77ts7mwiAXyc fpN+DayMsvOD8iYPnwSYL67FbO4BtmBVWwrxALGIUR60++c4Ys4IwB0oNzqOVYMgFyym qQz9Va2jn0VR5VKQiBoWP1k3P/5IbQGxLMKl6CURE4dWbzF/wHusdxH4PoHiaSsphJSl cGVsZqzmGjWNQ9vLvrBIGA3Spfpng+LBUFEUGqBP3nxC3PZzRWHrfBPAGpo+w2W8vrvc EOBw== X-Gm-Message-State: AElRT7HMTCwIMrxdikN8rtcLHWRN6Yes/hcfdBe2X8kR7QC6Ij98lE8E jgn2tc/mHjQC7PqOOkshrrkReA== X-Received: by 10.46.23.70 with SMTP id l67mr6306814lje.132.1522361257498; Thu, 29 Mar 2018 15:07:37 -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.07.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 29 Mar 2018 15:07:36 -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 35/37] lightnvm: pblk: don't recover unwritten lines Date: Fri, 30 Mar 2018 00:05:22 +0200 Message-Id: <20180329220524.30363-36-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 If the line has not been written to, we should not try to recover any data from it, so check the state of the chunks in the line before attempting to read smeta. Signed-off-by: Hans Holmberg Signed-off-by: Javier González Signed-off-by: Matias Bjørling --- drivers/lightnvm/pblk-recovery.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/lightnvm/pblk-recovery.c b/drivers/lightnvm/pblk-recovery.c index 26356429dc72..3e079c2afa6e 100644 --- a/drivers/lightnvm/pblk-recovery.c +++ b/drivers/lightnvm/pblk-recovery.c @@ -864,6 +864,21 @@ static void pblk_recov_wa_counters(struct pblk *pblk, } } +static int pblk_line_was_written(struct pblk_line *line, + struct pblk_line_meta *lm) +{ + + int i; + int state_mask = NVM_CHK_ST_OFFLINE | NVM_CHK_ST_FREE; + + for (i = 0; i < lm->blk_per_line; i++) { + if (!(line->chks[i].state & state_mask)) + return 1; + } + + return 0; +} + struct pblk_line *pblk_recov_l2p(struct pblk *pblk) { struct pblk_line_meta *lm = &pblk->lm; @@ -900,6 +915,9 @@ struct pblk_line *pblk_recov_l2p(struct pblk *pblk) line->lun_bitmap = ((void *)(smeta_buf)) + sizeof(struct line_smeta); + if (!pblk_line_was_written(line, lm)) + continue; + /* Lines that cannot be read are assumed as not written here */ if (pblk_line_read_smeta(pblk, line)) continue; -- 2.11.0