Received: by 10.223.185.116 with SMTP id b49csp8987389wrg; Fri, 2 Mar 2018 11:17:21 -0800 (PST) X-Google-Smtp-Source: AG47ELv/j5fj3g7dUs+w1dQUZEpwNqDawDxNxu7zXwjJXHlvEDj4c3EaXm8Q2Z/s62pyNAzrAeH6 X-Received: by 2002:a17:902:aa8d:: with SMTP id d13-v6mr6122907plr.114.1520018241620; Fri, 02 Mar 2018 11:17:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520018241; cv=none; d=google.com; s=arc-20160816; b=a0jUHRT+fPWwlhMwuRS/qenr41TJZMk6uhluVR/bUpFHuI/P4TUbzvCmTuLsqcV7cv NeVlhHnezlMVtUAPsO1YYUJJTmMO/CUmNLNROmd8y5qs4jdnXlww6fzc/vlZlidaqkg5 0WIjgO5anEECMAQYIURbLP7GMtWCJGG9rHb5rIt4eoLLSPcpKRxBsYSU7l1XD3OVxJyj mA5CiCBS5eXNVJeT2e5Bd1RKNtTgFCY0NAA5mm5s791jHAlJfmtrmwHu3+iD0HbaD2/X yqQA/2gt9Ft0hqNdB7JYDa1jyjrMDf6W+8WT5hMSJLzELDjrOgNvj+RxusmTywvxQ9/5 UTnA== 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 :message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=r4bntutBFIWIQSr9J1H3hExUuZD2dS4diTjmApNkHZ4=; b=ypWTYidVpbFOZHAwQtmCMr2RPzjnj7cwQfWYkezLGhfrS1h26+T7pSFo6HTv8JLpVK 8aYEHLKw57U1SjGTHJod5p7z9MDWDsNIqIFvhK7fK3KNT9gQGa5XRZGt3yMBl0iDMHRy 40L6Jh2nziAp92W7rA97LHmRZ8bvAwMIp+HI0zyNiLXwhCfq7ewMptKO+WzAuJiwNosz TaX1RFu0hVlNUzhY+LN/mbmaZIoX/vPeOppt3sdWBdiKccbBWsM17kDZx2btu8D6z5B6 96+ogda0IHm/YD+xScgBHgFFl4DJVpchIPza4jkDlxxpQKqOvK38/r+5t+hubSDbYxyL swPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@javigon-com.20150623.gappssmtp.com header.s=20150623 header.b=mKEBoSWy; 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 q14si4390567pgf.570.2018.03.02.11.17.02; Fri, 02 Mar 2018 11:17:21 -0800 (PST) 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=@javigon-com.20150623.gappssmtp.com header.s=20150623 header.b=mKEBoSWy; 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 S1427114AbeCBPV7 (ORCPT + 99 others); Fri, 2 Mar 2018 10:21:59 -0500 Received: from mail-wm0-f66.google.com ([74.125.82.66]:55785 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1423301AbeCBPV4 (ORCPT ); Fri, 2 Mar 2018 10:21:56 -0500 Received: by mail-wm0-f66.google.com with SMTP id q83so3828876wme.5 for ; Fri, 02 Mar 2018 07:21:55 -0800 (PST) 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:mime-version :content-transfer-encoding; bh=r4bntutBFIWIQSr9J1H3hExUuZD2dS4diTjmApNkHZ4=; b=mKEBoSWylgCatlRBKLJYDRi9EvYni7Yg412EsNermSZ5FToSx8vhwRwhJbR0CchHt7 8MabK1gXC5ByyNfgt0Oc2rB7zF5K8yd2LUeq5zflQrjYYCc1RiQyklq3iKkP6G/mqpsE tc3tW8BmaEfYQZCZ1pT5buvQcLcPxI4/IYmjnDi8gBkiL43iBEqcgCfRle9sAaMG1Cqz +W6ay3+h5RhnmNMD81qzmDq7P4k9YSFc/M5uY6IQxNrdAtN+QcFkYub3Lq0quFMKWTaa 02Mv2/0wJy6xBQV3AuHmO2jVkP5BMl0hjZ9CbJPEFYFom+P6o5zyU6uFDphEHC53qmk2 RotA== 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:mime-version :content-transfer-encoding; bh=r4bntutBFIWIQSr9J1H3hExUuZD2dS4diTjmApNkHZ4=; b=t9J7NrCTxnL9fiW2ND9YdCDln5Il2YXJKf0djiJ/LDoTniYn7xUfE+lx/tRCpX2jFK +BApE0VTd7fg+ltLkSeH9PFsR7BMWK3Fsjii+au9ym1X0IJsNYPCmsKLhm15xoWTYSLY x4rXdSxK5DHoZkpFtXGfwcwPcFSB9XQN/L3Fvg2WZ+IjGOA7sT/esyjH2TC8OlHbBely gQ4u/LS5U+gw/9cI4CejDXEV4+S6+99O28cpVo5sP9KLDcq+LH7WlHHgxz1Sk3GwJ7AL Z9xDLoW59yiyZCfrdBjVs9m53cP+eDUP0fRxE/xT3YbRQjFpZcqkseEud2J8dAOCvygV v3rg== X-Gm-Message-State: APf1xPC+9h99yAezi4jleaXrCR2zRJZRsZ7VIe2+MG4zff7heXgyRWaM qG/VhIczYMbfbSim06aFRDVVZQ== X-Received: by 10.80.245.16 with SMTP id t16mr7844324edm.168.1520004115129; Fri, 02 Mar 2018 07:21:55 -0800 (PST) Received: from uHalley.cnexlabs.com (6164211-cl69.boa.fiberby.dk. [193.106.164.211]) by smtp.gmail.com with ESMTPSA id o93sm5545893edb.18.2018.03.02.07.21.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 02 Mar 2018 07:21:54 -0800 (PST) From: "=?UTF-8?q?Javier=20Gonz=C3=A1lez?=" X-Google-Original-From: =?UTF-8?q?Javier=20Gonz=C3=A1lez?= To: mb@lightnvm.io Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Javier=20Gonz=C3=A1lez?= Subject: [PATCH V5 00/12] lightnvm: pblk: implement 2.0 support Date: Fri, 2 Mar 2018 16:21:08 +0100 Message-Id: <1520004080-27760-1-git-send-email-javier@cnexlabs.com> X-Mailer: git-send-email 2.7.4 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 This patchet applies on top of Matias' for-17/core, with the following patches applied: lightnvm: pblk: refactor init/exit sequences (V2) nvme: implement log page low/high offset and dwords (V2) # Changes since V4 - Remove init/exit sequences as it has been sent separately -Rebase on top of latest for-4.17/core From Matias: - Fix pblk sysfs - squash related patches - remove capabilities patch - Matias will take this later on - Various renamings # Changes since V3.1 - Rebase on top of Matias' for-4.17/core - Fix pblk's write buffer size when using mw_cuints - Remove chunk information from pblk's sysfs. We intend to clean up sysfs, as it is messy as it is now, and use trace points instead. So, avoid an extra refactoring in the near future. From Matias: - Squash geometry patches - Squash chunk support in lightnvm core - Use core structure for chunk metadata - Remove intermediate values for csecs and sos before disk revalidation. - Various renamings # Changes since V3 From Matias: - Remove nvm_common_geo - Do appropriate renames when having a single geometry for device and targets # Changes since V2: Apply Matias' feedback: - Remove generic nvm_id identify structure. - Do not remap capabilities (cap) to media and controlled capabilities (mccap). Instead, add a comment to prevent confusion when crosschecking with 2.0 spec. - Change maxoc and maxocpu defaults from 1 block to the max number of blocks. - Re-implement the generic geometry to use nvm_geo on both device and targets. Maintain nvm_common_geo to make it easier to copy the common part of the geometry (without having to overwrite target-specific fields, which is ugly and error prone). Matias, if you still want to get rid of this, we can do it. - Re-order patches with renaming to make them more meaningful. These belong to the series, since the name changes are motivated by 2.0 inclusions. The only exception would be 36d10bfd3234, but I hope it is OK I include it here. Also, - Eliminate a dependency between luns and lines in the init/exit refactoring. - Use the global address format when possible to avoid defaulting on the 1.2 path. This will safe headaches if the address format changes at some point. I took out the patch allowing to do bit shifts on non power-of-2 media formats on pblk's mapping since it requires touching many places that are not 2.0 related. I'll submit this separately. # Changes since V1: Apply Matias' feedback: - Rebase on top of Matias' latest patches. - Use nvme_get_log_ext to submit report chunk and export it. - Re-write report chunk based on Matias' suggestions. Here, I maintained the lba interface, but it was necessary to redo the address formatting to match the chunk log page format. For pblk, this means a double address transformation, but it enables the standard path to use lbas, plus, this is not in the fast path. - Fold address format together with address transformations. - Split the generic geometry patch in different patches. - Remove refactoring of ligthnvm's core sysfs. Feedback not applied: - Not letting pblk know about 1.2 and 2.0 bad block paths. Since the interfaces for get/set bad block and report chunk are so different, moving this logic to core adds assumptions on how the targets would want to get the data back. A way of doing this is creating a logical report chunk on the 1.2 path, but this would mean that values like the wear-index are invalid, which requires the target knowledge. I'm open to suggestions here. Also: - Do some further renamings - Create a generic address format to make it explicit where we share 1.2 and 2.0 fields to avoid address formatting in the fast path. - Add new fields to sysfs to complete spec and show major/minor versions (version and subversion to respect current interface). Implement 2.0 support in pblk. This includes the address formatting and mapping paths, as well as the sysfs entries for them. Javier Javier González (12): lightnvm: simplify geometry structure. lightnvm: add minor version to generic geometry lightnvm: add shorten OCSSD version in geo lightnvm: complete geo structure with maxoc* lightnvm: normalize geometry nomenclature lightnvm: add support for 2.0 address format lightnvm: make address conversions depend on generic device lightnvm: implement get log report chunk helpers lightnvm: pblk: check for supported version lightnvm: pblk: rename ppaf* to addrf* lightnvm: pblk: implement get log report chunk lightnvm: pblk: implement 2.0 support drivers/lightnvm/core.c | 178 +++++++--------- drivers/lightnvm/pblk-core.c | 168 ++++++++++++--- drivers/lightnvm/pblk-gc.c | 2 +- drivers/lightnvm/pblk-init.c | 413 +++++++++++++++++++++++------------ drivers/lightnvm/pblk-map.c | 4 +- drivers/lightnvm/pblk-read.c | 2 +- drivers/lightnvm/pblk-recovery.c | 14 +- drivers/lightnvm/pblk-rl.c | 2 +- drivers/lightnvm/pblk-sysfs.c | 63 ++++-- drivers/lightnvm/pblk-write.c | 2 +- drivers/lightnvm/pblk.h | 240 +++++++++++++++------ drivers/nvme/host/core.c | 6 +- drivers/nvme/host/lightnvm.c | 449 +++++++++++++++++++++++++++------------ drivers/nvme/host/nvme.h | 3 + include/linux/lightnvm.h | 327 ++++++++++++++++++---------- 15 files changed, 1251 insertions(+), 622 deletions(-) -- 2.7.4