Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2126517imm; Mon, 28 May 2018 02:05:31 -0700 (PDT) X-Google-Smtp-Source: AB8JxZokr80gB+nHIIE0fawnMLrskqCf6U2DO8H2BsOvl7dTcFq8Pu4zRedQHlFXv0ZQgq9VHRWz X-Received: by 2002:a17:902:a585:: with SMTP id az5-v6mr12699942plb.79.1527498331006; Mon, 28 May 2018 02:05:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527498330; cv=none; d=google.com; s=arc-20160816; b=t8jlqz9pROAhu1UAAQCxEDwIKpjVyxCd6/VtfYsNHW+U8TCCynhf4vxoe1xUVvcwWn FaIv8NKFaa8a/32CLqqOA+9BdQsJ1S18AjguiN8ogL0D92GARMVbOunMKcDpbUXbUd4Y hZEElOFo1UBsHNbgIBxADy2TQmRJx1N/pIDgK2wrGBXxZ6Nwow2j7dSo5AFn0cmDvazh Bkxtn41x8rtfrmDGAwJX2kFAy8UQL27HCZkimNsIvY+6BoMiqFNfIQYewZAramL5WxtP owBJwfHzGRobRBdFaR0vOrYC1PioNZugzURqqO5ivv8DfD9RAyyQ3TSlfF4IJl7C/bhl Bw8A== 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=Ilv7jTIigru8dI8GqJsG8THWq4Jfo1Z7AL3PB3RaDx0=; b=y6bQGznu/aJuWs0YRODtLi/JwoFSZFMqqIIZK1o+QG0UPkZcKGOo5JeiTV9EjDs336 gUO6kxv/p99iOLd3ywk+i9WC6X9AhBRtqxdtDb/lZyPkGZWFA6xBb80+czHvnCtAzr3G cLtQV4Trxl2JDjb9EKC2bcYn6WQ60aLkc+BWaNeDko7hFjTaqNnLdlqL9Ej6AG6tTYE1 zOUUck5iDIe9OojC0qOgdCQQye8dn0F3w19wnANF00S7gtwuSMfSIq81KUksPRf07Ln7 U2dXml0+zVi7sIejkz83jKtXdMS9l/yovmaqTTR4fZ2Ln9xPDKL0jwhkGbGR1wGnRxbC ra7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lightnvm-io.20150623.gappssmtp.com header.s=20150623 header.b=NeCY0DsF; 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 o89-v6si4554018pfi.165.2018.05.28.02.05.16; Mon, 28 May 2018 02:05:30 -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=NeCY0DsF; 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 S1754346AbeE1JCl (ORCPT + 99 others); Mon, 28 May 2018 05:02:41 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:35500 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754210AbeE1I7Q (ORCPT ); Mon, 28 May 2018 04:59:16 -0400 Received: by mail-wm0-f67.google.com with SMTP id o78-v6so30150669wmg.0 for ; Mon, 28 May 2018 01:59:16 -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=Ilv7jTIigru8dI8GqJsG8THWq4Jfo1Z7AL3PB3RaDx0=; b=NeCY0DsFwTcYsfXHBmDSeWf7iv8hfubWtkgoZ1279dXsLMD0XWpyvg0Orp4CO2VAs8 qSL596YXSc03+UDcaMyY/CUC79B+AyTjQkIbO4klmpVi1jBF/cI+/sqaHSY8fE0zkFaL GD0WQgtcWMb7ugwwL94rYpYc2ibgNqOlQ/MW+5OG/0iOeB3AlJGkSrql/RMq81eYPNEj fmu9dW16F6U2Ej1N++N+o5KxnO0sf10trKdzUDcZCXzMdLIPjl9mrAMWImMEm8b84mWR E/oUmXNrHbcorWv5OPBMPWD47sqF8ZW8sJUQtI/k15Ybr778oX/6kwlvIVTWQzrpmk2X AEDg== 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=Ilv7jTIigru8dI8GqJsG8THWq4Jfo1Z7AL3PB3RaDx0=; b=fCMiFZLl4J8bkHvxSjC2fcR8b3bYuP3Q8Q3xDY7kYYvdeb3Y3aFdgAm2MVdmyWcL6K UlRLPEQ0Pesj6qNOAfWgBoKaI0O7nD1Ar9CJSOwarb1gF5NMIuQPbkZO1ouZSsyZPEma ghUUbcVu/+nzUv5AXif1xkGxYaKmmt07KkyxLkfC325pzikYUB6RV0sb3rKfR6KV6NSW mE6VQ7bwgrJ2kXyS2aKWxtqyU+NNcy48mRmPq8pMrJfcsubGEq7EaeF7fwk5lxbaRfm1 rVo0wDpxQ3Y8csXruQSFkk/mUtKSk/69JO25Uxu3wfnLQVS0VO+4jgfZCT8r69hhVOmU xTMQ== X-Gm-Message-State: ALKqPwcNfAggq2QQCozgdT002RAo8NRXwnAvU89MZRiQs3WbWGkyBHic Asnv/R1TlUA87hBJ+Y33Q4m3aA== X-Received: by 2002:a2e:87d8:: with SMTP id v24-v6mr7781488ljj.69.1527497955381; Mon, 28 May 2018 01:59:15 -0700 (PDT) Received: from Macroninja.cnexlabs.com (95-166-82-66-cable.dk.customer.tdc.net. [95.166.82.66]) by smtp.gmail.com with ESMTPSA id u2-v6sm5777848lji.4.2018.05.28.01.59.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 May 2018 01:59:14 -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, Igor Konopko , Marcin Dziegielewski , =?UTF-8?q?Matias=20Bj=C3=B8rling?= Subject: [GIT PULL 20/20] lightnvm: pblk: sync RB and RL states during GC Date: Mon, 28 May 2018 10:58:41 +0200 Message-Id: <20180528085841.26684-21-mb@lightnvm.io> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180528085841.26684-1-mb@lightnvm.io> References: <20180528085841.26684-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: Igor Konopko During sequential workloads we can met the case when almost all the lines are fully written with data. In that case rate limiter will significantly reduce the max number of requests for user IOs. Unfortunately in the case when round buffer is flushed to drive and the entries are not yet removed (which is ok, since there is still enough free entries in round buffer for user IO) we hang on user IO due to not enough entries in rate limiter. The reason is that rate limiter user entries are decreased after freeing the round buffer entries, which does not happen if there is still plenty of space in round buffer. This patch forces freeing the round buffer by calling pblk_rb_sync_l2p and thus making new free entries in rate limiter, when there is no enough of them for user IO. Signed-off-by: Igor Konopko Signed-off-by: Marcin Dziegielewski Reworded description. Signed-off-by: Matias Bjørling --- drivers/lightnvm/pblk-init.c | 2 ++ drivers/lightnvm/pblk-rb.c | 7 +++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c index 25aa1e73984f..9d7d9e3b8506 100644 --- a/drivers/lightnvm/pblk-init.c +++ b/drivers/lightnvm/pblk-init.c @@ -1159,7 +1159,9 @@ static void pblk_tear_down(struct pblk *pblk, bool graceful) __pblk_pipeline_flush(pblk); __pblk_pipeline_stop(pblk); pblk_writer_stop(pblk); + spin_lock(&pblk->rwb.w_lock); pblk_rb_sync_l2p(&pblk->rwb); + spin_unlock(&pblk->rwb.w_lock); pblk_rl_free(&pblk->rl); pr_debug("pblk: consistent tear down (graceful:%d)\n", graceful); diff --git a/drivers/lightnvm/pblk-rb.c b/drivers/lightnvm/pblk-rb.c index 1b74ec51a4ad..91824cd3e8d8 100644 --- a/drivers/lightnvm/pblk-rb.c +++ b/drivers/lightnvm/pblk-rb.c @@ -266,21 +266,18 @@ static int pblk_rb_update_l2p(struct pblk_rb *rb, unsigned int nr_entries, * Update the l2p entry for all sectors stored on the write buffer. This means * that all future lookups to the l2p table will point to a device address, not * to the cacheline in the write buffer. + * Caller must ensure that rb->w_lock is taken. */ void pblk_rb_sync_l2p(struct pblk_rb *rb) { unsigned int sync; unsigned int to_update; - spin_lock(&rb->w_lock); - /* Protect from reads and writes */ sync = smp_load_acquire(&rb->sync); to_update = pblk_rb_ring_count(sync, rb->l2p_update, rb->nr_entries); __pblk_rb_update_l2p(rb, to_update); - - spin_unlock(&rb->w_lock); } /* @@ -462,6 +459,8 @@ int pblk_rb_may_write_user(struct pblk_rb *rb, struct bio *bio, spin_lock(&rb->w_lock); io_ret = pblk_rl_user_may_insert(&pblk->rl, nr_entries); if (io_ret) { + /* Sync RB & L2P in order to update rate limiter values */ + pblk_rb_sync_l2p(rb); spin_unlock(&rb->w_lock); return io_ret; } -- 2.11.0