From patchwork Fri Nov 18 14:43:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?UTF-8?q?Javier=20Gonz=C3=A1lez?= X-Patchwork-Id: 9436695 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 893F660238 for ; Fri, 18 Nov 2016 14:48:58 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 841B6294E2 for ; Fri, 18 Nov 2016 14:48:58 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 78E3629513; Fri, 18 Nov 2016 14:48:58 +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=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=unavailable 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 F309B2950D for ; Fri, 18 Nov 2016 14:48:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753157AbcKROs4 (ORCPT ); Fri, 18 Nov 2016 09:48:56 -0500 Received: from mail-wm0-f53.google.com ([74.125.82.53]:35510 "EHLO mail-wm0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753299AbcKROoE (ORCPT ); Fri, 18 Nov 2016 09:44:04 -0500 Received: by mail-wm0-f53.google.com with SMTP id a197so42649149wmd.0 for ; Fri, 18 Nov 2016 06:44:04 -0800 (PST) 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=jZQNXm9jcQzMkq4Wi0porJK/55lbrOvZO1whRxyRbds=; b=DCAwga0AiNZF28/0c9ghTUOIrxwg4QcSTsjHHKDvN/M9COuamhJ9TzHw70KUEpj6zD +jjUCyacAYjF6Ffprm0wVRc7JxN125OLC/Ef1KqhR5SIvHbix0U2lLpYwLEzV/kXDXK1 H4xBOQQBuJiFUGTf+hd1C46Bd8kJKdv2NlA9O2DojvFRiuwBO74VrAZuSiEa3serJYDO NWT2c2xKnSo9Wke5j7TjdUE6iakz5aBtaFS2tuMf4Zej7qErLjjcJ2oI2p8/uRAUh57e GoLCyFynrPcu20oJGTk3IFOyJ1n8I9I5CLvQfi6CPDW/zg0lnm/OFhW8SHm0RezTFvzU oxkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jZQNXm9jcQzMkq4Wi0porJK/55lbrOvZO1whRxyRbds=; b=ahGDyH6kobVsRdj5cUXLxylzcWGFWgjWmz5XGEKEhdlb01p2pC/M5n+7gK6TGeDTB4 9gDzYbl5/55jvd+exsRinABh+A0PNvgWh4HqLh8uaOCapiFHsF2bdU04V4Ij0NPdc0HY kZ52AWOpvkJyi2mW8vGDxqFwgPGTPSrXqfMhUi7YF5M4m2b+5+bN4ExNnmBEl3Tjrzyy 7WwpQcn1PqmGD7m25q+1MqOvhCwIil0cDeI8SIPYqHglu0bltGCWStB42eC0RruVP8Ni jSEvtWcfzJ6jIfqdzobV/mLP8WylwcKoA5qGxrr6/Maot7DoNblBIfT/mIEzN6tmCNwu rZsw== X-Gm-Message-State: AKaTC014DgdYHn68E82RL9LJCppyMyZ6in6GCeYY6LBuDHj59PUWzH6FLU9O1wvOp8tADA== X-Received: by 10.28.129.86 with SMTP id c83mr61185wmd.53.1479480243261; Fri, 18 Nov 2016 06:44:03 -0800 (PST) Received: from uHalley.cnexlabs.com (6164211-cl69.boa.fiberby.dk. [193.106.164.211]) by smtp.gmail.com with ESMTPSA id 138sm3703576wms.20.2016.11.18.06.44.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 18 Nov 2016 06:44:02 -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 08/20] lightnvm: make address conversion functions global Date: Fri, 18 Nov 2016 15:43:30 +0100 Message-Id: <1479480222-18790-9-git-send-email-javier@cnexlabs.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1479480222-18790-1-git-send-email-javier@cnexlabs.com> References: <1479480222-18790-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 Targets are assumed to used the same generic ppa format, where the address is partitioned on ch:lun:block:pg:pl:sec. Thus, make the function in charge of transforming the ppa address from a linear format to the generic one available to all targets. This function will be needed by the media manager in order to do target mapping translations when targets are divided on different physical partitions. Signed-off-by: Javier González --- drivers/lightnvm/rrpc.c | 30 ------------------------------ include/linux/lightnvm.h | 30 ++++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/drivers/lightnvm/rrpc.c b/drivers/lightnvm/rrpc.c index 60ca9d4..9253acc 100644 --- a/drivers/lightnvm/rrpc.c +++ b/drivers/lightnvm/rrpc.c @@ -136,36 +136,6 @@ static u64 block_to_addr(struct rrpc *rrpc, struct rrpc_block *rblk) return blk->id * rrpc->dev->sec_per_blk; } -static struct ppa_addr linear_to_generic_addr(struct nvm_dev *dev, - struct ppa_addr r) -{ - struct ppa_addr l; - int secs, pgs, blks, luns; - sector_t ppa = r.ppa; - - l.ppa = 0; - - div_u64_rem(ppa, dev->sec_per_pg, &secs); - l.g.sec = secs; - - sector_div(ppa, dev->sec_per_pg); - div_u64_rem(ppa, dev->pgs_per_blk, &pgs); - l.g.pg = pgs; - - sector_div(ppa, dev->pgs_per_blk); - div_u64_rem(ppa, dev->blks_per_lun, &blks); - l.g.blk = blks; - - sector_div(ppa, dev->blks_per_lun); - div_u64_rem(ppa, dev->luns_per_chnl, &luns); - l.g.lun = luns; - - sector_div(ppa, dev->luns_per_chnl); - l.g.ch = ppa; - - return l; -} - static struct ppa_addr rrpc_ppa_to_gaddr(struct nvm_dev *dev, u64 addr) { struct ppa_addr paddr; diff --git a/include/linux/lightnvm.h b/include/linux/lightnvm.h index e598308..98278a9 100644 --- a/include/linux/lightnvm.h +++ b/include/linux/lightnvm.h @@ -361,6 +361,36 @@ struct nvm_dev { spinlock_t lock; }; +static inline struct ppa_addr linear_to_generic_addr(struct nvm_dev *dev, + struct ppa_addr r) +{ + struct ppa_addr l; + int secs, pgs, blks, luns; + sector_t ppa = r.ppa; + + l.ppa = 0; + + div_u64_rem(ppa, dev->sec_per_pg, &secs); + l.g.sec = secs; + + sector_div(ppa, dev->sec_per_pg); + div_u64_rem(ppa, dev->pgs_per_blk, &pgs); + l.g.pg = pgs; + + sector_div(ppa, dev->pgs_per_blk); + div_u64_rem(ppa, dev->blks_per_lun, &blks); + l.g.blk = blks; + + sector_div(ppa, dev->blks_per_lun); + div_u64_rem(ppa, dev->luns_per_chnl, &luns); + l.g.lun = luns; + + sector_div(ppa, dev->luns_per_chnl); + l.g.ch = ppa; + + return l; +} + static inline struct ppa_addr generic_to_dev_addr(struct nvm_dev *dev, struct ppa_addr r) {