Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp574864imm; Fri, 1 Jun 2018 06:10:12 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKrsFOoIrjsp3w8qFFGYqH4ygrvGwxORwfBuyS6XuO+i2W/jpZB9JwAplQzWhhIC204eVrl X-Received: by 2002:a65:550d:: with SMTP id f13-v6mr8897371pgr.324.1527858612193; Fri, 01 Jun 2018 06:10:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527858612; cv=none; d=google.com; s=arc-20160816; b=iUEdtPyf1CA0RAREfGSeDN8Cj/+1HWqHzxSsZh3T11GSP9jagC4sqivDWfzMUv9Mj8 d3N5SCH2iFEzG5yghgERyX3ZGncactDtOIXVWHjYVh6bmevXTfCURBk59Og8jjsFnhEZ 0q0g+g+y9Q00FgBirGzP5JeQsvvlj1DRTjnw1pWej8YWfhkpvjyDlu1LC9afY6STiYGw DREl2LUPbscfEHzKUJ6RhHbsSQtC7K6amAN8evA2DQs7rb4KKOwEOXyEG3iGCClLWceV rAS3XGXeqirijt1qjQtSWYbWKXcgbTnHgW3/CZwFHqHZRUtABmx2f1fnHdSqswl8ynVz 1aIQ== 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=RN5moMV+ZbEEFpOtXfFzpcxZRT78lcIqk+wDqgiJwgU=; b=i2lPQfru/oP6yAOpOmBYp89R4qm3mTS43Zc+RpkFLaL7WKMqNN6hgVmxAX86QdkWGw R1vsdXOQ++jH1fMWXlY95teoJtpsGFDWjE3G4lKcTBoDUy0/VIP6VvHcKqP6hcvHDleK IOxOgNcYb23S4e4x7iMA3ZdwLPxSC2LXjOGGQRaVVLGGa7JFaPA44tOICoaz1U+r3g5o NWA5Hf9MBfLVnJQSfxiY9OFXw49cSqITp5QUFMqxt7l9Bk/Kh6g0iVdv09xCh0vTDSbz P8fuqrWWXA+hNwYGKPJK6XDh/EfDjQVJwx1L7cjvHaks1w/FJAHKGXgbXy57rHFnYMHh 2Yqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lightnvm-io.20150623.gappssmtp.com header.s=20150623 header.b=lxVIbgL3; 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 j78-v6si14811018pfe.187.2018.06.01.06.09.57; Fri, 01 Jun 2018 06:10:12 -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=lxVIbgL3; 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 S1752556AbeFANIt (ORCPT + 99 others); Fri, 1 Jun 2018 09:08:49 -0400 Received: from mail-lf0-f65.google.com ([209.85.215.65]:33192 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751929AbeFANEu (ORCPT ); Fri, 1 Jun 2018 09:04:50 -0400 Received: by mail-lf0-f65.google.com with SMTP id y20-v6so14736072lfy.0 for ; Fri, 01 Jun 2018 06:04:49 -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=RN5moMV+ZbEEFpOtXfFzpcxZRT78lcIqk+wDqgiJwgU=; b=lxVIbgL3AoHfUGa9/jf4yg+0brgjNzDgTJru9XQoYMtV9pHQBpzWDQPS19vG9HvK+K Jw9hmE0rOIbJ4FSwCxLaafLdFFSYXWGTZnjb4IwGe/g71T2Yadp9IxuNW2yvg30k6+PH i936MjXT4Zfeo+1bTC723fpA3kIlHcq3OpzSDOlFILaI+28nxjaOBsCq9KDk1MYZcpAJ HBEhPun93uKnF34/XCh2zASA/AKu7zw4/t6sOum0HLt/xtRIqGxmEjB+H7cFVhwPuHvf wjfjBS5fDu7+u6/ZZakUEWFc6gVGyb3s4Qc+WeKChxxBqQYNFtSGZA+OdlWo9Ab2H493 +yyA== 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=RN5moMV+ZbEEFpOtXfFzpcxZRT78lcIqk+wDqgiJwgU=; b=UxNSa6ZZfLrUqvVyz09QbNLakshi3+J/Q+AIa5oK3c1HDXH+c+zDMzVJmpK7h+Gr+9 HXrhc6assmQSjf04tsgKuo7exibdefxvMW1zI8vkYZ70LiOSs3hqQF7iG6loEAkMykIE BLr4phvlno+La5oE0nzyza4aaddJkTqW3j3Ip+mdeSJEWfRRws4wnvEz24hhFrdJLujl 24s4MAXbIRlLUd7X3KjO/V8pey01rdBW36NhmEyp1juEgYLerRFajpgi+SMCP19b/TUO X8r8eLrKVh3oJxzT3iyOHhxT3fxVLgNzNLkanR4IQj6XZsxxfN9NWNUZ97KwB0pUG9o1 SPZA== X-Gm-Message-State: ALKqPwfj3fkn2JjIvhC+n/vcfdbS3L4rv+hsYWLJGsI95u7omsp2a7b/ HTAGJwwWE0K8vKP0uJmWXtfuVw== X-Received: by 2002:a19:54da:: with SMTP id b87-v6mr6420182lfl.3.1527858288312; Fri, 01 Jun 2018 06:04:48 -0700 (PDT) Received: from Macroninja.cnexlabs.com (95-166-82-66-cable.dk.customer.tdc.net. [95.166.82.66]) by smtp.gmail.com with ESMTPSA id g5-v6sm303161lje.21.2018.06.01.06.04.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 01 Jun 2018 06:04:47 -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, javier@cnexlabs.com, igor.j.konopko@intel.com, marcin.dziegielewski@intel.com, =?UTF-8?q?Javier=20Gonz=C3=A1lez?= , =?UTF-8?q?Matias=20Bj=C3=B8rling?= Subject: [GIT PULL 04/18] lightnvn: pblk: improve error msg on corrupted LBAs Date: Fri, 1 Jun 2018 15:04:18 +0200 Message-Id: <20180601130432.30866-5-mb@lightnvm.io> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180601130432.30866-1-mb@lightnvm.io> References: <20180601130432.30866-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: Javier González In the event of a mismatch between the read LBA and the metadata pointer reported by the device, improve the error message to be able to detect the offending physical address (PPA) mapped to the corrupted LBA. Signed-off-by: Javier González Signed-off-by: Matias Bjørling --- drivers/lightnvm/pblk-read.c | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/drivers/lightnvm/pblk-read.c b/drivers/lightnvm/pblk-read.c index 1f699c09e0ea..b201fc486adb 100644 --- a/drivers/lightnvm/pblk-read.c +++ b/drivers/lightnvm/pblk-read.c @@ -113,10 +113,11 @@ static int pblk_submit_read_io(struct pblk *pblk, struct nvm_rq *rqd) return NVM_IO_OK; } -static void pblk_read_check_seq(struct pblk *pblk, void *meta_list, - sector_t blba, int nr_lbas) +static void pblk_read_check_seq(struct pblk *pblk, struct nvm_rq *rqd, + sector_t blba) { - struct pblk_sec_meta *meta_lba_list = meta_list; + struct pblk_sec_meta *meta_lba_list = rqd->meta_list; + int nr_lbas = rqd->nr_ppas; int i; for (i = 0; i < nr_lbas; i++) { @@ -125,17 +126,27 @@ static void pblk_read_check_seq(struct pblk *pblk, void *meta_list, if (lba == ADDR_EMPTY) continue; - WARN(lba != blba + i, "pblk: corrupted read LBA\n"); + if (lba != blba + i) { +#ifdef CONFIG_NVM_DEBUG + struct ppa_addr *p; + + p = (nr_lbas == 1) ? &rqd->ppa_list[i] : &rqd->ppa_addr; + print_ppa(&pblk->dev->geo, p, "seq", i); +#endif + pr_err("pblk: corrupted read LBA (%llu/%llu)\n", + lba, (u64)blba + i); + WARN_ON(1); + } } } /* * There can be holes in the lba list. */ -static void pblk_read_check_rand(struct pblk *pblk, void *meta_list, - u64 *lba_list, int nr_lbas) +static void pblk_read_check_rand(struct pblk *pblk, struct nvm_rq *rqd, + u64 *lba_list, int nr_lbas) { - struct pblk_sec_meta *meta_lba_list = meta_list; + struct pblk_sec_meta *meta_lba_list = rqd->meta_list; int i, j; for (i = 0, j = 0; i < nr_lbas; i++) { @@ -145,14 +156,25 @@ static void pblk_read_check_rand(struct pblk *pblk, void *meta_list, if (lba == ADDR_EMPTY) continue; - meta_lba = le64_to_cpu(meta_lba_list[j++].lba); + meta_lba = le64_to_cpu(meta_lba_list[j].lba); if (lba != meta_lba) { +#ifdef CONFIG_NVM_DEBUG + struct ppa_addr *p; + int nr_ppas = rqd->nr_ppas; + + p = (nr_ppas == 1) ? &rqd->ppa_list[j] : &rqd->ppa_addr; + print_ppa(&pblk->dev->geo, p, "seq", j); +#endif pr_err("pblk: corrupted read LBA (%llu/%llu)\n", lba, meta_lba); WARN_ON(1); } + + j++; } + + WARN_ONCE(j != rqd->nr_ppas, "pblk: corrupted random request\n"); } static void pblk_read_put_rqd_kref(struct pblk *pblk, struct nvm_rq *rqd) @@ -197,7 +219,7 @@ static void __pblk_end_io_read(struct pblk *pblk, struct nvm_rq *rqd, WARN_ONCE(bio->bi_status, "pblk: corrupted read error\n"); #endif - pblk_read_check_seq(pblk, rqd->meta_list, r_ctx->lba, rqd->nr_ppas); + pblk_read_check_seq(pblk, rqd, r_ctx->lba); bio_put(bio); if (r_ctx->private) @@ -610,7 +632,7 @@ int pblk_submit_read_gc(struct pblk *pblk, struct pblk_gc_rq *gc_rq) goto err_free_bio; } - pblk_read_check_rand(pblk, rqd.meta_list, gc_rq->lba_list, rqd.nr_ppas); + pblk_read_check_rand(pblk, &rqd, gc_rq->lba_list, gc_rq->nr_secs); atomic_dec(&pblk->inflight_io); -- 2.11.0