Received: by 10.213.65.68 with SMTP id h4csp1992221imn; Thu, 29 Mar 2018 15:14:43 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/fQHYNat0WKQob/cbgtTvQKKpYNKMZfS5K85u67aTymAN1FSbpBdeoioKhXvlbcj3IYl30 X-Received: by 2002:a17:902:24c:: with SMTP id 70-v6mr10176046plc.384.1522361683818; Thu, 29 Mar 2018 15:14:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522361683; cv=none; d=google.com; s=arc-20160816; b=fvKP4BtFDmkdBWdhVqd66dd2azGCe/Jc0PSkLBNhwfH+4leGDU7FZttdKCJwijDKHZ ++TicTMyZ0CqDVTbUMETBh2UNHlflsEuDO5rss3IOyPUCLY/+h/0Cz03Z/Vvzakc2t1k 6+lao+SMuvjmkcZrlBJHkU+xAkARlhmHEPMTylplDZYCvZbma4sDz2Vr0Gw2i4fxB+LS b6GaQkUTNCJ7RTOKDNVC99bM5QUicDJ4yKuF5710K95IaIfZNASnT4Z5+2IZNyjF7x7l Vky1uRmpvplKIynkWU4sICx/ky0ZBT9TAIKRUQNYJrfX5dv0+ro9ugk5Tgcv9HoGEKys m++w== 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=k9/wQrP57sXP4Dmoslw8sFMcT/Vz0gtB4BfsZoHaRWc=; b=wLvzsPVvnpdntVqaveAoo7yhju47YWwoy4qmvwYdaW/kbRK/Pkq9lRw4UZ2JZJxOOi rxEkfBAHc/GMyLbgtMdfTT7aEBnKh4p/RRe64Yaep5w2hKhJiDC/K0RzT5udKmQJ5C65 sR8ZBEwv+p6nxlhqMVDfC2t/dAFqCMy4DnNbve8bg/huJCz0allcWi57GzZ4FTN5OPUB HqjkNw/hODJ0234ht2HDlhrj/JuJn7SeJsW2+vn2HfLN9mI+fOtGfAbnJDYvg7QMtsvF Su457R+d9+AWzZddNEtdDoCp/okdDnfNdFWiiajXiAqjHxbxyNZ9t8v9PPeREgitCbTh WmWA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lightnvm-io.20150623.gappssmtp.com header.s=20150623 header.b=esTUjvan; 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 189si4553543pgc.616.2018.03.29.15.14.29; Thu, 29 Mar 2018 15:14:43 -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=esTUjvan; 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 S1752983AbeC2WM6 (ORCPT + 99 others); Thu, 29 Mar 2018 18:12:58 -0400 Received: from mail-lf0-f65.google.com ([209.85.215.65]:39019 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752553AbeC2WHT (ORCPT ); Thu, 29 Mar 2018 18:07:19 -0400 Received: by mail-lf0-f65.google.com with SMTP id p142-v6so10345542lfd.6 for ; Thu, 29 Mar 2018 15:07:18 -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=k9/wQrP57sXP4Dmoslw8sFMcT/Vz0gtB4BfsZoHaRWc=; b=esTUjvanOKRIUPlaBbI2yFBkxNPszDCjWgNJY5PtiMZcsTXtT13ZP92OCJObmo3fKm aq745uKUKCYzvjxV6pNAZNxDwpWVNsmkJWcs6CHyGfbeP4aMzwRTXZSlKDAwJyfcdp7l vkvkWPDzSralHv7xqysrDUutvLkKuoI180JH+Wcqw3bnZ7k9TTr+zwLHu550Uufst6Mh QItpxAZekc26XMA3f9DkcfXftUMit50abh+jUFER5Z6H3bAGrLSg446IBP5ewtx4vfOc D9oNkRNZjhvGXk7ilgtAan91nLrF6x224NNkLNP2opBwO3AYhJaubGvs5rJwMPoWsiri 2WAA== 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=k9/wQrP57sXP4Dmoslw8sFMcT/Vz0gtB4BfsZoHaRWc=; b=dWNkbROaLk846QJ9lQqSnqp2qDJrf+dGVn3Erlorqpdzmmvif4zDVjwtwQ6bR2r/GK oxfIXDEM7bES91SUKbxfwLeHzIAJaUB9bDJrKwi2PSxjGg2Pz9BxXq0lwuA0umpgcEQQ Hpq4B+4/9IL1J9coHE9s7Ak1zGsuO9gzZat2Sgd1NM1KeAKAB8D8MBM9kN4aZyNhLBlC a99JYhTF00oi17mUYzopfbAVZeTNFoW9vjmnbRt5e0tyaptGEWLdwkFsNLyEhMeJgHI3 ckpoTcV1gG/ywixfJozrafepnjDqPvA2Zj/ygFfDAC0U5i4jQWk6BwU/6uXVTXGjQyhI WQ8w== X-Gm-Message-State: AElRT7EwAYHSGMW8Bx9xWyTUzgeoq7LCYXrPvqupvwiiYkgETCMtL2Ad 5JjL3/xVE3IfndcvteWQG59kmQ== X-Received: by 2002:a19:be4b:: with SMTP id o72-v6mr6620775lff.20.1522361236665; Thu, 29 Mar 2018 15:07:16 -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.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 29 Mar 2018 15:07:15 -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, =?UTF-8?q?Matias=20Bj=C3=B8rling?= Subject: [GIT PULL 18/37] nvme: lightnvm: add late setup of block size and metadata Date: Fri, 30 Mar 2018 00:05:05 +0200 Message-Id: <20180329220524.30363-19-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 The nvme driver sets up the size of the nvme namespace in two steps. First it initializes the device with standard logical block and metadata sizes, and then sets the correct logical block and metadata size. Due to the OCSSD 2.0 specification relies on the namespace to expose these sizes for correct initialization, let it be updated appropriately on the LightNVM side as well. Signed-off-by: Matias Bjørling Acked-by: Keith Busch --- drivers/lightnvm/core.c | 3 --- drivers/nvme/host/core.c | 2 ++ drivers/nvme/host/lightnvm.c | 8 ++++++++ drivers/nvme/host/nvme.h | 2 ++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c index 9704db219866..3eec948d1b7e 100644 --- a/drivers/lightnvm/core.c +++ b/drivers/lightnvm/core.c @@ -864,8 +864,6 @@ static int nvm_core_init(struct nvm_dev *dev) geo->ws_seq = id->ws_seq; geo->ws_per_chk = id->ws_per_chk; geo->nr_chks = id->num_chk; - geo->sec_size = id->csecs; - geo->oob_size = id->sos; geo->mccap = id->mccap; geo->sec_per_chk = id->clba; @@ -893,7 +891,6 @@ static int nvm_core_init(struct nvm_dev *dev) if (ret) goto err_fmtype; - blk_queue_logical_block_size(dev->q, geo->sec_size); return 0; err_fmtype: kfree(dev->lun_map); diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index 9ee919422669..e7ec2fb5c59a 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -1448,6 +1448,8 @@ static void __nvme_revalidate_disk(struct gendisk *disk, struct nvme_id_ns *id) if (ns->noiob) nvme_set_chunk_size(ns); nvme_update_disk_info(disk, ns, id); + if (ns->ndev) + nvme_nvm_update_nvm_info(ns); #ifdef CONFIG_NVME_MULTIPATH if (ns->head->disk) nvme_update_disk_info(ns->head->disk, ns, id); diff --git a/drivers/nvme/host/lightnvm.c b/drivers/nvme/host/lightnvm.c index e38d835b15b5..839c0b96466a 100644 --- a/drivers/nvme/host/lightnvm.c +++ b/drivers/nvme/host/lightnvm.c @@ -812,6 +812,14 @@ int nvme_nvm_ioctl(struct nvme_ns *ns, unsigned int cmd, unsigned long arg) } } +void nvme_nvm_update_nvm_info(struct nvme_ns *ns) +{ + struct nvm_dev *ndev = ns->ndev; + + ndev->identity.csecs = ndev->geo.sec_size = 1 << ns->lba_shift; + ndev->identity.sos = ndev->geo.oob_size = ns->ms; +} + int nvme_nvm_register(struct nvme_ns *ns, char *disk_name, int node) { struct request_queue *q = ns->queue; diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h index c393e4b56f39..aa10842a6709 100644 --- a/drivers/nvme/host/nvme.h +++ b/drivers/nvme/host/nvme.h @@ -500,12 +500,14 @@ static inline void nvme_mpath_check_last_path(struct nvme_ns *ns) #endif /* CONFIG_NVME_MULTIPATH */ #ifdef CONFIG_NVM +void nvme_nvm_update_nvm_info(struct nvme_ns *ns); int nvme_nvm_register(struct nvme_ns *ns, char *disk_name, int node); void nvme_nvm_unregister(struct nvme_ns *ns); int nvme_nvm_register_sysfs(struct nvme_ns *ns); void nvme_nvm_unregister_sysfs(struct nvme_ns *ns); int nvme_nvm_ioctl(struct nvme_ns *ns, unsigned int cmd, unsigned long arg); #else +static inline void nvme_nvm_update_nvm_info(struct nvme_ns *ns) {}; static inline int nvme_nvm_register(struct nvme_ns *ns, char *disk_name, int node) { -- 2.11.0