Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753939AbcC3O3a (ORCPT ); Wed, 30 Mar 2016 10:29:30 -0400 Received: from mail-pa0-f67.google.com ([209.85.220.67]:34251 "EHLO mail-pa0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753745AbcC3O32 (ORCPT ); Wed, 30 Mar 2016 10:29:28 -0400 From: Wenwei Tao To: mb@lightnvm.io Cc: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org Subject: [PATCH 2/2] lightnvm: use relative logical address in rrpc_l2p_update Date: Wed, 30 Mar 2016 22:28:35 +0800 Message-Id: <1459348115-6072-2-git-send-email-ww.tao0320@gmail.com> X-Mailer: git-send-email 2.7.0.windows.2 In-Reply-To: <1459348115-6072-1-git-send-email-ww.tao0320@gmail.com> References: <1459348115-6072-1-git-send-email-ww.tao0320@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1122 Lines: 34 Since every target now has their own logical address area, we should deal trans_map and rev_trans_map with relative logical address instead of the global one. Signed-off-by: Wenwei Tao --- drivers/lightnvm/rrpc.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/lightnvm/rrpc.c b/drivers/lightnvm/rrpc.c index 516a045..2279bd7 100644 --- a/drivers/lightnvm/rrpc.c +++ b/drivers/lightnvm/rrpc.c @@ -998,10 +998,14 @@ static int rrpc_l2p_update(u64 slba, u32 nlb, __le64 *entries, void *private) { struct rrpc *rrpc = (struct rrpc *)private; struct nvm_dev *dev = rrpc->dev; - struct rrpc_addr *addr = rrpc->trans_map + slba; - struct rrpc_rev_addr *raddr = rrpc->rev_trans_map; - u64 elba = slba + nlb; - u64 i; + struct rrpc_addr *addr; + struct rrpc_rev_addr *raddr; + u64 elba, i; + + slba -= rrpc->soffset >> (ilog2(dev->sec_size) - 9); + addr = rrpc->trans_map + slba; + raddr = rrpc->rev_trans_map; + elba = slba + nlb; if (unlikely(elba > dev->total_secs)) { pr_err("nvm: L2P data from device is out of bounds!\n"); -- 2.7.2.333.g70bd996