Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1023948imu; Tue, 11 Dec 2018 11:20:32 -0800 (PST) X-Google-Smtp-Source: AFSGD/Xd0ZnJoK9TE2HHrXVvxeguoKVE2mCqlEI+0iH+nzWCX3C1BysIe5FLUP3fSkYAiwC8xH2b X-Received: by 2002:a63:1f1c:: with SMTP id f28mr15745825pgf.193.1544556032156; Tue, 11 Dec 2018 11:20:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544556032; cv=none; d=google.com; s=arc-20160816; b=JTvTZ3qrw+M/7PxrJidD3xgKOHa23SEPhdqasSxtl2V0bnJlFsRRtX9do/oW9uqAP7 Ce5lqADV6jPi5O30wbD8u9JQslZ9c1VKJdRHh/8R/WgxQZP6tsjCr1DOA+xznMCapkl2 0uXhMoo/uaA6e8ENRF7j9OTAEK1I4L7elhx8EQVAQrEnHWTkHVxlSUko5ikLw5HCJm1L +pPIsYBnB4o7teomhfCo6r/Yp7ZsNS492JgrR9l+lN0F1o9j69qYM1+eYB9lbnAZUW6+ rNfmjiX0RHkUL9xWCFz9vJViFqIQzKacUeypPpi4rQcxiLoWoxHL7nfFPdCAbxUI9pY9 wZPA== 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; bh=TZQ05pd/DYjcwuL9XXbPWfkpS7Sp4JOpwfteFuJIygo=; b=njpf8R2Wqm7nSX/R8cayrvt3hHn8a1USleFiFmNo0dW9Vjraphk5PgprH40ZTXTVCo EFgD3v1fAcWSpxgKeeYUJqLwL+7dqdGA9RZjGag67YLMf6zE4jV1J1UrCX1KEJXKqBCv q/Wlm8sQmvQUdNZGZ0jq/9VMw0WHiSFdKqOMsEpFmDS2k/M7fwnm1m44bG5iV5j8QgHH O1XtRtEzECUR6b8tj1SUn+XazUfMYi6aOcf3SpdBbsRm33vT9hoYIr7WLPiTEL4gKLye 05dit5FzOYOh4XQfLgqA0tQ2akHjSrMq7K/fTK2PMPMIpQlEro3kcPK4o3l46T8Ph1Yo 2Ruw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lightnvm-io.20150623.gappssmtp.com header.s=20150623 header.b=FxvvClA9; 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 u8si12706729pgl.25.2018.12.11.11.20.17; Tue, 11 Dec 2018 11:20:32 -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=@lightnvm-io.20150623.gappssmtp.com header.s=20150623 header.b=FxvvClA9; 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 S1727326AbeLKTSs (ORCPT + 99 others); Tue, 11 Dec 2018 14:18:48 -0500 Received: from mail-lf1-f68.google.com ([209.85.167.68]:40155 "EHLO mail-lf1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726922AbeLKTRH (ORCPT ); Tue, 11 Dec 2018 14:17:07 -0500 Received: by mail-lf1-f68.google.com with SMTP id v5so11639744lfe.7 for ; Tue, 11 Dec 2018 11:17:06 -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=TZQ05pd/DYjcwuL9XXbPWfkpS7Sp4JOpwfteFuJIygo=; b=FxvvClA9cQfAubxbDAgtvRwIAmlxsmj1UmtpQFJtjzwQFaXN+XByf3lRndQBu3nT4S tcb+YqigqYFQDKvaBGwE3cEYFTuWDhcjhQF13HioIE+bUHpbvJayyOhlqFY4l1MLqR3m wZUrY0wAAMGvfdMKDCejzpLAWUKcvzBB3tBtKv4PluuKSxuPfiyxgpuVP3bCy7lVBR9B kW8nXkW2FNV8xPUopBNRdD14+6mTSB3ad9kutWB7JEKfYQWb7mPzWCgw/2lL+omrs6e5 RZnNrjyyBv0gnnb7FvU9o2AxUN2SrTf2qONwLu8Cmpv/+rvLeKx/PG2QN0hM33wZQupy Hz2g== 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=TZQ05pd/DYjcwuL9XXbPWfkpS7Sp4JOpwfteFuJIygo=; b=BOX+9nU10SWVtQAfSIvotqXgmUcJyWs1T4C6KUKWBYrIfH5Tr4bLOLK2gVUDQu+gjd xPdSrmcQXEMqSPa1hUnWBdW2b5n6CdjauGgo69yBorK2PVL6PezDA2e5p38ZSmvla8DJ +15m6V5HyGLEhvSWxeR0tbSSpIfp8K6hPEdpkfhuayJJdCPQ/jjXBBcyB7RTbi2NkB3t OCQbq1dJKQ+CcM0FX5F+yhbZtmuuniLjAd+8yfGOKBmH5EsQMMHoO03Wee4puG0e7XDu 1grXIOvKC3m2lecK0997eTNX7cOwE2SObzO1k7w9uAhf5qKXJyVAYAf+ikLYNkMb2+M6 7r9A== X-Gm-Message-State: AA+aEWa4cKxIQGMYNVMTIBkgCT0ZaMTS5vL+a3DVaFgG7js/2ktMDSMJ wpbcS/KA9OxH9jK6AJFYDvjtTg== X-Received: by 2002:a19:e01e:: with SMTP id x30mr9657551lfg.89.1544555825446; Tue, 11 Dec 2018 11:17:05 -0800 (PST) Received: from skyninja.webspeed.dk (95-166-82-66-cable.dk.customer.tdc.net. [95.166.82.66]) by smtp.gmail.com with ESMTPSA id v64sm2764583lfa.48.2018.12.11.11.17.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 11 Dec 2018 11:17:04 -0800 (PST) From: =?UTF-8?q?Matias=20Bj=C3=B8rling?= To: axboe@fb.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Hans Holmberg , =?UTF-8?q?Matias=20Bj=C3=B8rling?= Subject: [GIT PULL 05/21] lightnvm: pblk: account for write error sectors in emeta Date: Tue, 11 Dec 2018 20:16:11 +0100 Message-Id: <20181211191627.15542-6-mb@lightnvm.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181211191627.15542-1-mb@lightnvm.io> References: <20181211191627.15542-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 From: Hans Holmberg Lines inflicted with write errors lines might be recovered if they have not been recycled after write error garbage collection. Ensure that the emeta accounting of valid lbas is correct for such lines to avoid recovery inconsistencies. Signed-off-by: Hans Holmberg Reviewed-by: Javier González Signed-off-by: Matias Bjørling --- drivers/lightnvm/pblk-write.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/lightnvm/pblk-write.c b/drivers/lightnvm/pblk-write.c index 3ddd16f47106..750f04b8a227 100644 --- a/drivers/lightnvm/pblk-write.c +++ b/drivers/lightnvm/pblk-write.c @@ -105,14 +105,20 @@ static void pblk_complete_write(struct pblk *pblk, struct nvm_rq *rqd, } /* Map remaining sectors in chunk, starting from ppa */ -static void pblk_map_remaining(struct pblk *pblk, struct ppa_addr *ppa) +static void pblk_map_remaining(struct pblk *pblk, struct ppa_addr *ppa, + int rqd_ppas) { struct pblk_line *line; struct ppa_addr map_ppa = *ppa; + __le64 addr_empty = cpu_to_le64(ADDR_EMPTY); + __le64 *lba_list; u64 paddr; int done = 0; + int n = 0; line = pblk_ppa_to_line(pblk, *ppa); + lba_list = emeta_to_lbas(pblk, line->emeta->buf); + spin_lock(&line->lock); while (!done) { @@ -121,10 +127,17 @@ static void pblk_map_remaining(struct pblk *pblk, struct ppa_addr *ppa) if (!test_and_set_bit(paddr, line->map_bitmap)) line->left_msecs--; + if (n < rqd_ppas && lba_list[paddr] != addr_empty) + line->nr_valid_lbas--; + + lba_list[paddr] = addr_empty; + if (!test_and_set_bit(paddr, line->invalid_bitmap)) le32_add_cpu(line->vsc, -1); done = nvm_next_ppa_in_chk(pblk->dev, &map_ppa); + + n++; } line->w_err_gc->has_write_err = 1; @@ -202,7 +215,7 @@ static void pblk_submit_rec(struct work_struct *work) pblk_log_write_err(pblk, rqd); - pblk_map_remaining(pblk, ppa_list); + pblk_map_remaining(pblk, ppa_list, rqd->nr_ppas); pblk_queue_resubmit(pblk, c_ctx); pblk_up_rq(pblk, c_ctx->lun_bitmap); -- 2.17.1