From patchwork Fri Aug 31 13:34:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Javier_Gonz=C3=A1lez?= X-Patchwork-Id: 10583727 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 730C2174A for ; Fri, 31 Aug 2018 13:35:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 60EBC2BCE0 for ; Fri, 31 Aug 2018 13:35:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 559462BDEC; Fri, 31 Aug 2018 13:35:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EBA0C2BCE0 for ; Fri, 31 Aug 2018 13:35:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727614AbeHaRmU (ORCPT ); Fri, 31 Aug 2018 13:42:20 -0400 Received: from mail-ed1-f66.google.com ([209.85.208.66]:41658 "EHLO mail-ed1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727655AbeHaRmS (ORCPT ); Fri, 31 Aug 2018 13:42:18 -0400 Received: by mail-ed1-f66.google.com with SMTP id f38-v6so9062565edd.8 for ; Fri, 31 Aug 2018 06:34:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=javigon-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NsfEnpTiYn1PWDa4g6Or6NeGiBShHwNa3Cf8U7f4g0s=; b=bNXuW2X1z9jjesBmMazyYCJAGETzVykPDZRUYuEQay0MQ2Y6IRbkDj3Wkabae2+FXL IlmeF5P7YAVW02v4O264gPL4ZAsD3nKl6ie2Sxk3Dwhs1njJ9/BL2wlN4MnYqYOVNXnu 2XSOPXA04zRgqZGXBPzpaH3SPGIxoIOaTEUTlQWoxuym3kpq20R5R3yxOxmT5fMyiBio zzrotqwpegvw/qJtFGK4YggmYm3KMXVJkMxB5/d+laYdfbk4HwJ2UOB/1zy4GxJxjYGy kibnGn7kOV6sA+84p6acayEAwcNU6Vu2a0yOsev5QWuI36+2ZVfiV7tYwbyhGQBvlMUC tmGQ== 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=NsfEnpTiYn1PWDa4g6Or6NeGiBShHwNa3Cf8U7f4g0s=; b=IjiMC3Dv0AN2YaARyuz/zMKIrFggbgz2rL8zzd0mrG3PSh09Sn+DU76fSDrNOvt8qi xLF9sZtIOw2cuV3KgN0PXexYZSRsLb76N3txfyeguqOxTusZhzD9qkeRtVGXnvd3yU3U 8KIg7dBUkh6m0PyGSSZ+ruMMr4MYNJFAEw1+sBiR3j4fxjRKIjavNtPRNVf71Qe/aV2d KvQf/TC4OX9nx+kGelMsvcq5WdVU/YKtmlVSeCMUzsxdLWkMv7toiZd5GaBlDTfVz631 hz7tiCc2rDEgjK1D3YAb013qSeYRXdvn40hF+KiFkIlpaBy6p5rSQKm+yONXfNWsjTM6 mFwg== X-Gm-Message-State: APzg51B1IEAnwqtA3HK5jMWXm7KjKqz2qMrY+QMbEGn6sBZwKEb7/0K4 PVcl0c9nBk0G1re8HBEabRh10w== X-Google-Smtp-Source: ANB0VdYB2/Q9yFpcyMwkIi67JbQKawoWEUjitK+nMyQtNS58Qlh4Y7y7B/B5YFKVaBNu7L/7iz2dpQ== X-Received: by 2002:a50:fc03:: with SMTP id i3-v6mr18357777edr.85.1535722486649; Fri, 31 Aug 2018 06:34:46 -0700 (PDT) Received: from ch-wrk-javier.cnexlabs.com (6164211-cl69.boa.fiberby.dk. [193.106.164.211]) by smtp.gmail.com with ESMTPSA id i19-v6sm1937851edg.64.2018.08.31.06.34.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:34:46 -0700 (PDT) From: " =?utf-8?q?Javier_Gonz=C3=A1lez?= " X-Google-Original-From: =?utf-8?q?Javier_Gonz=C3=A1lez?= To: mb@lightnvm.io Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Jav?= =?utf-8?q?ier_Gonz=C3=A1lez?= Subject: [PATCH 1/4] lightnvm: use right address format on 1.2 path Date: Fri, 31 Aug 2018 15:34:34 +0200 Message-Id: <1535722477-31288-2-git-send-email-javier@cnexlabs.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1535722477-31288-1-git-send-email-javier@cnexlabs.com> References: <1535722477-31288-1-git-send-email-javier@cnexlabs.com> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP struct ppa_addr defines different address formats. When we are in the 1.2 path, use 1.2 addressing, even when the generic format works too. This improves readability. Signed-off-by: Javier González --- drivers/lightnvm/core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c index f7154398ba38..e9f14c67f4f3 100644 --- a/drivers/lightnvm/core.c +++ b/drivers/lightnvm/core.c @@ -998,8 +998,8 @@ static int nvm_get_bb_meta(struct nvm_dev *dev, sector_t slba, goto done; ppa_gen.ppa = 0; - ppa_gen.a.ch = ch; - ppa_gen.a.lun = lun; + ppa_gen.g.ch = ch; + ppa_gen.g.lun = lun; ppa_dev = generic_to_dev_addr(dev, ppa_gen); ret = dev->ops->get_bb_tbl(dev, ppa_dev, blks); From patchwork Fri Aug 31 13:34:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Javier_Gonz=C3=A1lez?= X-Patchwork-Id: 10583729 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7B1F314E1 for ; Fri, 31 Aug 2018 13:35:08 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6709C2BBFB for ; Fri, 31 Aug 2018 13:35:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5AE952BDDB; Fri, 31 Aug 2018 13:35:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 10FC72BBFB for ; Fri, 31 Aug 2018 13:35:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728326AbeHaRmU (ORCPT ); Fri, 31 Aug 2018 13:42:20 -0400 Received: from mail-ed1-f66.google.com ([209.85.208.66]:33013 "EHLO mail-ed1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727395AbeHaRmT (ORCPT ); Fri, 31 Aug 2018 13:42:19 -0400 Received: by mail-ed1-f66.google.com with SMTP id d8-v6so1009683edv.0 for ; Fri, 31 Aug 2018 06:34:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=javigon-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6tWNKICi8xEYyitKBHU+AqktEA0d1iN4FXEMVBa5bqs=; b=FUMU9fdGnxex4ds3UKNsyBmMUPog51+HBD42jmBuI49q4TTR4j4ydqsv/johisI1yK cDoYlJqzdoSSxRVILJ2vDgop8IuLAxhwPGkq6hqf/7ZoMe0NzL4yXXZLkHmiccAIx9SN NbINaEtNetE+SGMUmPbh0rTiFUW45EqDU+p0PKj+kueMhYU1/+Fxwy66h/sKappSJfil CatXQ/CeVmvwNgFpPuae7j6jdVeuvF2oYN3qW4yuJKlWjPkTmMv8mJJjDz0yl0y0uQvz ZWF0vafo4e5lkEF2tgpKKpVmuRvmlUnQtNw1joE+lawyhnErc0FqUZzQqvk9EGRf1LqP RsGA== 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=6tWNKICi8xEYyitKBHU+AqktEA0d1iN4FXEMVBa5bqs=; b=k65Iukn+YNvGOkXDQx5WgysCwnswMbow6JYg3WGiLmKjPEeo41M+hz9y20RaMGyN5S u1xzrvO6J2TdBwgC3Mu0S8IlCHhNN0ZWbFefKn5nT5FbyUWiAXF0lVfl+YhZK3NjkOIN vCh0lSIGQno2+fLwyfxhY2pjtlpUrv5spVc1IpwF8UjaadfPvzXI6Q2pAvARsbIRjFVE fsqrq7rSn9vUV25dm5tvsijnfUPmXlLYsNE1dKzsu54/8YhdBhN9/mnd1UZtXfuEJMbi UKlUHl9F/W+TOryJe1urA3hF1pKZW3bZCqTZ/xDBiS6C+U0xsbQmsYmsfKYu9PWXxl8v oEQg== X-Gm-Message-State: APzg51AiuaEK+0fJeyU4gJR92Hm3/ttrKYDaWnqknNIrc7XMIpX3owVk iPgEY+sWXMzbDy+hl+PEdZgjPA== X-Google-Smtp-Source: ANB0VdZLaQJAOYYvwqSVqtWlpP+NA9WT4W2LZd0b2rkkrecNsXbycn0/JaXxvsPCIm6vAg+Ly//66w== X-Received: by 2002:a50:b158:: with SMTP id l24-v6mr18178848edd.31.1535722487455; Fri, 31 Aug 2018 06:34:47 -0700 (PDT) Received: from ch-wrk-javier.cnexlabs.com (6164211-cl69.boa.fiberby.dk. [193.106.164.211]) by smtp.gmail.com with ESMTPSA id i19-v6sm1937851edg.64.2018.08.31.06.34.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:34:47 -0700 (PDT) From: " =?utf-8?q?Javier_Gonz=C3=A1lez?= " X-Google-Original-From: =?utf-8?q?Javier_Gonz=C3=A1lez?= To: mb@lightnvm.io Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Jav?= =?utf-8?q?ier_Gonz=C3=A1lez?= Subject: [PATCH 2/4] lightnvm: assign block address before slba Date: Fri, 31 Aug 2018 15:34:35 +0200 Message-Id: <1535722477-31288-3-git-send-email-javier@cnexlabs.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1535722477-31288-1-git-send-email-javier@cnexlabs.com> References: <1535722477-31288-1-git-send-email-javier@cnexlabs.com> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP In 1.2, the chunk slba is set to the physical representation of the block. Thus, assigning the block to the ppa must occur before the slba is assign. Signed-off-by: Javier González --- drivers/lightnvm/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c index e9f14c67f4f3..efb976a863d2 100644 --- a/drivers/lightnvm/core.c +++ b/drivers/lightnvm/core.c @@ -945,6 +945,8 @@ static int nvm_bb_to_chunk(struct nvm_dev *dev, struct ppa_addr ppa, } } + ppa.g.blk = blk; + meta->wp = 0; meta->type = NVM_CHK_TP_W_SEQ; meta->wi = 0; @@ -952,7 +954,6 @@ static int nvm_bb_to_chunk(struct nvm_dev *dev, struct ppa_addr ppa, meta->cnlb = dev->geo.clba; if (blktype == NVM_BLK_T_FREE) { - ppa.a.blk = blk; ret = nvm_bb_chunk_scan(dev, ppa, meta); if (ret) return ret; From patchwork Fri Aug 31 13:34:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Javier_Gonz=C3=A1lez?= X-Patchwork-Id: 10583731 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 99F4214E1 for ; Fri, 31 Aug 2018 13:35:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 868BF28418 for ; Fri, 31 Aug 2018 13:35:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7A3AB2B606; Fri, 31 Aug 2018 13:35:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6CD492BDEC for ; Fri, 31 Aug 2018 13:35:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728122AbeHaRmh (ORCPT ); Fri, 31 Aug 2018 13:42:37 -0400 Received: from mail-ed1-f65.google.com ([209.85.208.65]:44434 "EHLO mail-ed1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727207AbeHaRmU (ORCPT ); Fri, 31 Aug 2018 13:42:20 -0400 Received: by mail-ed1-f65.google.com with SMTP id s10-v6so9042330edb.11 for ; Fri, 31 Aug 2018 06:34:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=javigon-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EeVoWunn1GoX5AS4UMZwj6764iD7cwd2XPgPSEMctSs=; b=FytjVv8DJ2/kNdFHQIIvM/x6XvpuE9KtLcjiqFoarJDntjwDoDLPznrJtjsM3UFot/ OBIbKjZc751IxVp4N0meQ4ciZowyKygu9KIJN/lXMGaOQ2BBt83JtqA7VWP7hmgI/6kf 65Tsz5sBIUL4lG8Y6abPMsnpVMllzzbSTPoHIj9cnbTIXw5VRXcwGWTOt8CFmVsQApSb rQh8epwIuKnd2Ier33buTNN91F1uG6LePQX3043XoyO+ndJgQhhJiMu09xsDxaaGx0hw MR7dFMsw5qBTQn0R242bnXp1YfbYIWA0w8z28F8WfuuploOtlufwSFIWTdfasYb3i2/c FxSQ== 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=EeVoWunn1GoX5AS4UMZwj6764iD7cwd2XPgPSEMctSs=; b=M2CydSQXdcMfu4qqLQFiAfJkXlUhr/4zfQtAweem/+mztp0ZbSWXOGrdVbvZ88EJ2B 7WE6eOOTPQEsK3yyjqq4qRRMMCcd12MngQvnrIpv56Sf8ikraWRGir9PHAu/pWpRvUYu h4+Mv38J5GhZSXwbJ4nR+3ViDApoEW/ef1iFlLKrIfXb97dN3WqTzJedR2lddXTNz4Z8 oLMsh6t9llyl56QwPGcNkzJRfZ0CCsZZvcvLzvMk8wpXdrcHIpyqg1WClrlV8nPh5PAz S7MXpNVcZXOdZZhJTzWfY6g/ElbD373qm2JsI+0zQu220NQhQ25mzqLaFYJBLtg3ejeN m0sw== X-Gm-Message-State: APzg51B7nsFJN7hPruXnXO3sC+Jp+XxM6lyxQLKCF5FZTERwd+KhtkC5 Uu9MLiueuAuK0a+lsqwzjZ9xtQ== X-Google-Smtp-Source: ANB0VdY/iMlgkPBYqw5qfE3O+D0LalkYRAvpcwsdf5qMjykvritjq+ywgWWRefYeVMm8p1bZUUFWWw== X-Received: by 2002:a05:6402:1251:: with SMTP id l17mr16177614edw.42.1535722488277; Fri, 31 Aug 2018 06:34:48 -0700 (PDT) Received: from ch-wrk-javier.cnexlabs.com (6164211-cl69.boa.fiberby.dk. [193.106.164.211]) by smtp.gmail.com with ESMTPSA id i19-v6sm1937851edg.64.2018.08.31.06.34.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:34:47 -0700 (PDT) From: " =?utf-8?q?Javier_Gonz=C3=A1lez?= " X-Google-Original-From: =?utf-8?q?Javier_Gonz=C3=A1lez?= To: mb@lightnvm.io Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Jav?= =?utf-8?q?ier_Gonz=C3=A1lez?= Subject: [PATCH 3/4] lightnvm: pblk: add helper for printing chunk state Date: Fri, 31 Aug 2018 15:34:36 +0200 Message-Id: <1535722477-31288-4-git-send-email-javier@cnexlabs.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1535722477-31288-1-git-send-email-javier@cnexlabs.com> References: <1535722477-31288-1-git-send-email-javier@cnexlabs.com> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Implement pblk helper for printing chunk state. Signed-off-by: Javier González --- drivers/lightnvm/pblk.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/lightnvm/pblk.h b/drivers/lightnvm/pblk.h index bc852bb9e3f0..5c35dcd57395 100644 --- a/drivers/lightnvm/pblk.h +++ b/drivers/lightnvm/pblk.h @@ -1239,6 +1239,15 @@ static inline int pblk_io_aligned(struct pblk *pblk, int nr_secs) return !(nr_secs % pblk->min_write_pgs); } +static inline void print_chunk(struct pblk *pblk, struct nvm_chk_meta *chk, + char *msg, int error) +{ + pblk_err(pblk, "chunk: (%s: %x) s:%d,t:%d,wi:%d,slba:%llu,cnlb:%llu,wp:%llu\n", + msg, error, + chk->state, chk->type, chk->wi, + chk->slba, chk->cnlb, chk->wp); +} + #ifdef CONFIG_NVM_PBLK_DEBUG static inline void print_ppa(struct pblk *pblk, struct ppa_addr *p, char *msg, int error) From patchwork Fri Aug 31 13:34:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Javier_Gonz=C3=A1lez?= X-Patchwork-Id: 10583725 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 757BA13AC for ; Fri, 31 Aug 2018 13:34:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5F3BC2BBFB for ; Fri, 31 Aug 2018 13:34:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 532E02BCBF; Fri, 31 Aug 2018 13:34:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B313B2BBFB for ; Fri, 31 Aug 2018 13:34:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728383AbeHaRmX (ORCPT ); Fri, 31 Aug 2018 13:42:23 -0400 Received: from mail-ed1-f68.google.com ([209.85.208.68]:37040 "EHLO mail-ed1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728345AbeHaRmW (ORCPT ); Fri, 31 Aug 2018 13:42:22 -0400 Received: by mail-ed1-f68.google.com with SMTP id a20-v6so6388483edd.4 for ; Fri, 31 Aug 2018 06:34:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=javigon-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=c8ECl5Jeq4bxj2xvcXX8yivPJMv9iiv/m1G91OmgXA8=; b=fbtR7iYCT/w/AUsUHLq6viYpFkMTW8jazdeZqz+7bXyvswhkRaA5/1SkZhIvGktM0E q/IzUyb0434d3nvP8gK8lc05T5unXc1lgPZg8UTRvhigz7RGnFQpRMQquhKbIxpmQzNj AfbRR7OM6a3VWGGUdVjS4dht9OpsaYg0P6IsoJVDiBmhSqZoFxr6Feo4IoqM5EXNIJ3H YbN6mePrE/xL4r+1WMlpMXHetgfQ7mxr/3Qn5wNJu7e+LHInITrLeQy3P+PQF55NKUa0 qlPwy5iVVOGtU3Kpos5dPFoh/MwVTKDtjKQEE8zIiZEXXi3l26TpPYamKl4X1hFklC+m aCpg== 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=c8ECl5Jeq4bxj2xvcXX8yivPJMv9iiv/m1G91OmgXA8=; b=ot9A1dPCmUmHvQdcGUQZnBKdaHDUvKCI16hc1YrNGRFj8hYKWVfS3rfbL1Uvn9e38u HxOPQMD7VgPxFXkrw/zpmOwDR8WZ3glTHuR7nk8dKi0WgpQV8yTMUJKesF2eomaaP7Fc TwnElKmEPGEAYU15jEMJd603U0F2KPhM7rQ0z9LAsWkELWGGAlqicV3epwFhd7cb9iLC IgHMYTaXGRB9/c2wlLqcJgL4eriiMu1BU/Jkh80j/Hjk4n10T5LX3WLuqJvq2U7cw6ws URMJGdelB28n+TM8piEQFAN+IjO1aPlA8GxFmOjdr4mu4biNM8JHl0o445SBfVvFJVie WCTg== X-Gm-Message-State: APzg51D0NO7FIFQN2JZO/NuOdktRoV+dUVEoc4H4Y1sOMDUmWfCpYouv DTLsinQVoJMfAHFiQDD/EkaA4yFMmLg= X-Google-Smtp-Source: ANB0VdaHmRK6EM4mK0KT8PMJ4pT7Uiv4eudCG+m2q8ddI3N/FdGjhu2hQ2nx0l2QYd+jhwElrjjZ9w== X-Received: by 2002:a50:a1c6:: with SMTP id 64-v6mr17500614edk.309.1535722489114; Fri, 31 Aug 2018 06:34:49 -0700 (PDT) Received: from ch-wrk-javier.cnexlabs.com (6164211-cl69.boa.fiberby.dk. [193.106.164.211]) by smtp.gmail.com with ESMTPSA id i19-v6sm1937851edg.64.2018.08.31.06.34.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:34:48 -0700 (PDT) From: " =?utf-8?q?Javier_Gonz=C3=A1lez?= " X-Google-Original-From: =?utf-8?q?Javier_Gonz=C3=A1lez?= To: mb@lightnvm.io Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Jav?= =?utf-8?q?ier_Gonz=C3=A1lez?= Subject: [PATCH 4/4] lightnvm: pblk: retrieve chunk metadata on erase Date: Fri, 31 Aug 2018 15:34:37 +0200 Message-Id: <1535722477-31288-5-git-send-email-javier@cnexlabs.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1535722477-31288-1-git-send-email-javier@cnexlabs.com> References: <1535722477-31288-1-git-send-email-javier@cnexlabs.com> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On the OCSSD 2.0 spec, the device populates the metadata pointer (if provided) when a chunk is reset. Implement this path in pblk and use it for sanity chunk checks. For 1.2, reset the write pointer and the state on core so that the erase path is transparent to pblk wrt OCSSD version. Signed-off-by: Javier González --- drivers/lightnvm/core.c | 44 +++++++++++++++++++++++++++++++++++++++-- drivers/lightnvm/pblk-core.c | 47 +++++++++++++++++++++++++++++++++----------- 2 files changed, 78 insertions(+), 13 deletions(-) diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c index efb976a863d2..dceaae4e795f 100644 --- a/drivers/lightnvm/core.c +++ b/drivers/lightnvm/core.c @@ -750,9 +750,40 @@ int nvm_submit_io(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd) } EXPORT_SYMBOL(nvm_submit_io); +/* Take only addresses in generic format */ +static void nvm_set_chunk_state_12(struct nvm_dev *dev, struct nvm_rq *rqd) +{ + struct ppa_addr *ppa_list = nvm_rq_to_ppa_list(rqd); + int i; + + for (i = 0; i < rqd->nr_ppas; i++) { + struct ppa_addr ppa; + struct nvm_chk_meta *chunk; + + chunk = ((struct nvm_chk_meta *)rqd->meta_list) + i; + + if (rqd->error) + chunk->state = NVM_CHK_ST_OFFLINE; + else + chunk->state = NVM_CHK_ST_FREE; + + chunk->wp = 0; + chunk->wi = 0; + chunk->type = NVM_CHK_TP_W_SEQ; + chunk->cnlb = dev->geo.clba; + + /* recalculate slba for the chunk */ + ppa = ppa_list[i]; + ppa.g.pg = ppa.g.pl = ppa.g.sec = 0; + + chunk->slba = generic_to_dev_addr(dev, ppa).ppa; + } +} + int nvm_submit_io_sync(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd) { struct nvm_dev *dev = tgt_dev->parent; + struct nvm_geo *geo = &dev->geo; int ret; if (!dev->ops->submit_io_sync) @@ -765,8 +796,12 @@ int nvm_submit_io_sync(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd) /* In case of error, fail with right address format */ ret = dev->ops->submit_io_sync(dev, rqd); + nvm_rq_dev_to_tgt(tgt_dev, rqd); + if (geo->version == NVM_OCSSD_SPEC_12 && rqd->opcode == NVM_OP_ERASE) + nvm_set_chunk_state_12(dev, rqd); + return ret; } EXPORT_SYMBOL(nvm_submit_io_sync); @@ -775,10 +810,15 @@ void nvm_end_io(struct nvm_rq *rqd) { struct nvm_tgt_dev *tgt_dev = rqd->dev; - /* Convert address space */ - if (tgt_dev) + if (tgt_dev) { + /* Convert address space */ nvm_rq_dev_to_tgt(tgt_dev, rqd); + if (tgt_dev->geo.version == NVM_OCSSD_SPEC_12 && + rqd->opcode == NVM_OP_ERASE) + nvm_set_chunk_state_12(tgt_dev->parent, rqd); + } + if (rqd->end_io) rqd->end_io(rqd); } diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c index 9968100cb170..0bcea243db90 100644 --- a/drivers/lightnvm/pblk-core.c +++ b/drivers/lightnvm/pblk-core.c @@ -79,7 +79,7 @@ static void __pblk_end_io_erase(struct pblk *pblk, struct nvm_rq *rqd) { struct nvm_tgt_dev *dev = pblk->dev; struct nvm_geo *geo = &dev->geo; - struct nvm_chk_meta *chunk; + struct nvm_chk_meta *chunk, *dev_chunk; struct pblk_line *line; int pos; @@ -89,22 +89,39 @@ static void __pblk_end_io_erase(struct pblk *pblk, struct nvm_rq *rqd) atomic_dec(&line->left_seblks); + /* pblk submits a single erase per command */ + dev_chunk = rqd->meta_list; + + if (dev_chunk->slba != chunk->slba || dev_chunk->wp) + print_chunk(pblk, chunk, "corrupted erase chunk", 0); + + memcpy(chunk, dev_chunk, sizeof(struct nvm_chk_meta)); + if (rqd->error) { trace_pblk_chunk_reset(pblk_disk_name(pblk), &rqd->ppa_addr, PBLK_CHUNK_RESET_FAILED); - chunk->state = NVM_CHK_ST_OFFLINE; +#ifdef CONFIG_NVM_PBLK_DEBUG + if (chunk->state != NVM_CHK_ST_OFFLINE) + print_chunk(pblk, chunk, + "corrupted erase chunk state", 0); +#endif pblk_mark_bb(pblk, line, rqd->ppa_addr); } else { trace_pblk_chunk_reset(pblk_disk_name(pblk), &rqd->ppa_addr, PBLK_CHUNK_RESET_DONE); - chunk->state = NVM_CHK_ST_FREE; +#ifdef CONFIG_NVM_PBLK_DEBUG + if (chunk->state != NVM_CHK_ST_FREE) + print_chunk(pblk, chunk, + "corrupted erase chunk state", 0); +#endif } trace_pblk_chunk_state(pblk_disk_name(pblk), &rqd->ppa_addr, chunk->state); + pblk_free_rqd_meta(pblk, rqd); atomic_dec(&pblk->inflight_io); } @@ -952,14 +969,16 @@ int pblk_line_emeta_read(struct pblk *pblk, struct pblk_line *line, return ret; } -static void pblk_setup_e_rq(struct pblk *pblk, struct nvm_rq *rqd, - struct ppa_addr ppa) +static int pblk_setup_e_rq(struct pblk *pblk, struct nvm_rq *rqd, + struct ppa_addr ppa) { rqd->opcode = NVM_OP_ERASE; rqd->ppa_addr = ppa; rqd->nr_ppas = 1; rqd->is_seq = 1; rqd->bio = NULL; + + return pblk_alloc_rqd_meta(pblk, rqd); } static int pblk_blk_erase_sync(struct pblk *pblk, struct ppa_addr ppa) @@ -967,7 +986,9 @@ static int pblk_blk_erase_sync(struct pblk *pblk, struct ppa_addr ppa) struct nvm_rq rqd = {NULL}; int ret; - pblk_setup_e_rq(pblk, &rqd, ppa); + ret = pblk_setup_e_rq(pblk, &rqd, ppa); + if (ret) + return ret; trace_pblk_chunk_reset(pblk_disk_name(pblk), &ppa, PBLK_CHUNK_RESET_START); @@ -1774,11 +1795,15 @@ void pblk_line_put_wq(struct kref *ref) int pblk_blk_erase_async(struct pblk *pblk, struct ppa_addr ppa) { struct nvm_rq *rqd; - int err; + int ret; rqd = pblk_alloc_rqd(pblk, PBLK_ERASE); - pblk_setup_e_rq(pblk, rqd, ppa); + ret = pblk_setup_e_rq(pblk, rqd, ppa); + if (ret) { + pblk_free_rqd(pblk, rqd, PBLK_ERASE); + return ret; + } rqd->end_io = pblk_end_io_erase; rqd->private = pblk; @@ -1789,8 +1814,8 @@ int pblk_blk_erase_async(struct pblk *pblk, struct ppa_addr ppa) /* The write thread schedules erases so that it minimizes disturbances * with writes. Thus, there is no need to take the LUN semaphore. */ - err = pblk_submit_io(pblk, rqd); - if (err) { + ret = pblk_submit_io(pblk, rqd); + if (ret) { struct nvm_tgt_dev *dev = pblk->dev; struct nvm_geo *geo = &dev->geo; @@ -1799,7 +1824,7 @@ int pblk_blk_erase_async(struct pblk *pblk, struct ppa_addr ppa) pblk_ppa_to_pos(geo, ppa)); } - return err; + return ret; } struct pblk_line *pblk_line_get_data(struct pblk *pblk)