Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756516AbcCaJv4 (ORCPT ); Thu, 31 Mar 2016 05:51:56 -0400 Received: from mail-io0-f196.google.com ([209.85.223.196]:34837 "EHLO mail-io0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751350AbcCaJvy convert rfc822-to-8bit (ORCPT ); Thu, 31 Mar 2016 05:51:54 -0400 MIME-Version: 1.0 In-Reply-To: <56FCE65D.8060901@lightnvm.io> References: <1459348115-6072-1-git-send-email-ww.tao0320@gmail.com> <56FCE65D.8060901@lightnvm.io> Date: Thu, 31 Mar 2016 17:51:53 +0800 Message-ID: Subject: Re: [PATCH 1/2] lightnvm: use rrpc->nr_luns to calculate the rrpc area size From: Wenwei Tao To: =?UTF-8?Q?Matias_Bj=C3=B8rling?= Cc: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1857 Lines: 54 This could be work, but it needs more steps when rrpc_area_init fails. If rrpc_area_init fail we may come to rrpc_free and call rrpc_area_free, we find and put the area by the rrpc->soffset value, this value is zero when we fail to get an area, we may put an exist area that really start from zero by mistake. If we move rrpc_area_init call under the rrpc_luns_init call instead, we need a way to avoid it. 2016-03-31 16:57 GMT+08:00 Matias Bjørling : > > > On 03/31/2016 10:31 AM, Wenwei Tao wrote: >> >> 2016-03-30 22:28 GMT+08:00 Wenwei Tao : >>> >>> rrpc->nr_sects is calculated after rrpc init luns succeeds, >>> before that the value of rrpc->nr_sects is zero, so we cannot >>> use it to calcuate rrpc area size, we use rrpc->nr_luns instead. >>> >>> Signed-off-by: Wenwei Tao >>> --- >>> drivers/lightnvm/rrpc.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/drivers/lightnvm/rrpc.c b/drivers/lightnvm/rrpc.c >>> index 3ab6495..516a045 100644 >>> --- a/drivers/lightnvm/rrpc.c >>> +++ b/drivers/lightnvm/rrpc.c >>> @@ -1223,7 +1223,7 @@ static int rrpc_area_init(struct rrpc *rrpc, >>> sector_t *begin) >>> { >>> struct nvm_dev *dev = rrpc->dev; >>> struct nvmm_type *mt = dev->mt; >>> - sector_t size = rrpc->nr_sects * dev->sec_size; >>> + sector_t size = dev->sec_size * dev->sec_per_lun * rrpc->nr_luns; >> >> >> dev->sec_size * dev->sec_per_lun * rrpc->nr_luns could be oveflow, >> should use (sector_t)dev->sec_size * dev->sec_per_lun * rrpc->nr_luns >> instead. Will submit another patch to fix it. > > > Hi Wenwei, > > How about moving rrpc_area_init call under the rrpc_luns_init call instead. > Then nr_sects will have been initialized? > > >>> >>> size >>= 9; >>> >>> -- >>> 2.7.2.333.g70bd996 >>> >