Received: by 10.213.65.68 with SMTP id h4csp1992545imn; Thu, 29 Mar 2018 15:15:09 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/InHIPn5AMXIm8d065c7hElIYFN1pc3AZocUx8jA8J4Ze1fxNn/dKkOhAPRAbDcIpshPxS X-Received: by 10.98.7.83 with SMTP id b80mr7781836pfd.133.1522361709577; Thu, 29 Mar 2018 15:15:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522361709; cv=none; d=google.com; s=arc-20160816; b=XPVoyCrWNLXw7cQ/Ha2CgNLeT7Y1mGTE6PpjgcfJi1NWCYk63Co2L5PGTiN6W561P4 lFTrtHkpaMZHCOolX4bDGO3ye/V/iLOahdyyL6jxEJZUScUPSGvCt31PAQV46ynYDiGQ dkktuLoEKDSfxcJPOEx2gKlmBrHpUisYigIosAkgC1uRmTm3It2rIsMwBP0W0IF8BOAE fjds2jwANIEP43jx7ZoCVdxmspJ4TjhvF9gKLUKXbeZJ30wqapqZFccbe8nOkD189heQ gY0i8VCTPGDijLrC5Ikqtxlm1xwhV8SnoXS6G1wN9pQ4PcAX3dofy8VGGKp6s2h6iL/U biuQ== 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=cr00/NF7a0kzePwtVBcZqiTThHHZMAsnEL4r+DoxeI4=; b=LuaVOCTUPLN3O2SYEV3yHJqmTETbGiBx7CGPBqDZv0FDs5YgoA9gX8hkzhSKLNCLRr Y+4XEry+faDzHyIHc9z2bSaddw0qN5hB92FIhEgPa8rkOLuZXPhcUuHDkyATjRBFCBOa jRDOIAn4T0WW5d8X0kQMtRXW/zxb2jTG1SNIREf7NuaCshyOdQyUqeWM892snecGbykg LU1bMvcmtMJXVXKO8BL4emauqkR/Q6KD1RMi62v9s6ujxJmhQ0IcFt6PBSmN9ffLO321 iyCEzRYaHOBXPniXFm8E9+QGq6cOw8hvP35qqT1eY25Up9iPYVq9gbrEHNPkq3j1BkRy QXWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lightnvm-io.20150623.gappssmtp.com header.s=20150623 header.b=LdlPuf4P; 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 y93-v6si6925574plh.520.2018.03.29.15.14.56; Thu, 29 Mar 2018 15:15:09 -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=LdlPuf4P; 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 S1752838AbeC2WNj (ORCPT + 99 others); Thu, 29 Mar 2018 18:13:39 -0400 Received: from mail-lf0-f66.google.com ([209.85.215.66]:41325 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752502AbeC2WHO (ORCPT ); Thu, 29 Mar 2018 18:07:14 -0400 Received: by mail-lf0-f66.google.com with SMTP id o102-v6so10324113lfg.8 for ; Thu, 29 Mar 2018 15:07:13 -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=cr00/NF7a0kzePwtVBcZqiTThHHZMAsnEL4r+DoxeI4=; b=LdlPuf4PNiUtscU1gzrpCX5NTIPTzhBlIjBwzjk7SPfHz0saLPKjFSWzQmgVYFWNiK Kxbz3R9gyZ6IeLosHwek44IjkoGsFaOKgpXPJ949l715FA8Gk65V0OZ2yuQW+FHSoAFZ N5TpGkRL8+k84h0HUnjsph2SNmgupPgyl/a3S1C1EqCl+g2ywVaYleFGvo5t/0JQkknc X0nS40uWUMNkSQO8OPlZo2hP/QP1vVMOnatYa1rzGqB0HmIw3r8SvNY8rYhsC9qhHREv AF6MAwxebARGcUIDUvKDYlxNdq7OfkNqbh5PEXkP8sPJ5+K0b63Swg4X3MKtBWd0z8p7 Pn2g== 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=cr00/NF7a0kzePwtVBcZqiTThHHZMAsnEL4r+DoxeI4=; b=teqpbC0i0S6NLOut6wEiDpcXkq7sfaAqbMlOu80eno11VgSXbje3nDyrcFFK/Wu0yn ZdsIXM1Kr2nfl4U1jtuspG2flfs62oUtCHBTyZ4jMriVJhrChNpB8M6Qk8SGaeZIBxlu kpL4HPzKmoqf2s723mUItQYkn5WWQoXIUtvkX+fnrH8SxvkrasCJTXUUNqSRtLtiuS88 V8WoQfFk44688UO0Ry889unnX1U7HmlSyXULxt6qJjS2Ktj9n4pGd+Aj9Nnx1RHh/tfs N9IaFLDP+qLOzJKjz9wFdWP1ZBwg2KbNEnxVKW1OYO2+YNzNm3vCPOh3y6Uc0ff/3hNI d7bQ== X-Gm-Message-State: AElRT7GgGHUwH+Cpras5dsT17OQOGB+0HY0wWZKsn5O/n5JWlITkHgRs 2sLUDrtwYFsDE+ybE764O/751Q== X-Received: by 10.46.113.17 with SMTP id m17mr6380258ljc.114.1522361227913; Thu, 29 Mar 2018 15:07:07 -0700 (PDT) Received: from Macroninja.cnexlabs.com (x1-6-a4-08-f5-18-3c-3a.cpe.webspeed.dk. [188.176.29.198]) by smtp.gmail.com with ESMTPSA id i89-v6sm1365508lfk.12.2018.03.29.15.07.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 29 Mar 2018 15:07:06 -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, keith.busch@intel.com, javier@cnexlabs.com, Hans Holmberg , =?UTF-8?q?Matias=20Bj=C3=B8rling?= Subject: [GIT PULL 11/37] lightnvm: pblk: prevent race in pblk_rb_flush_point_set Date: Fri, 30 Mar 2018 00:04:58 +0200 Message-Id: <20180329220524.30363-12-mb@lightnvm.io> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180329220524.30363-1-mb@lightnvm.io> References: <20180329220524.30363-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 Make sure that we are not advancing the sync pointer while we're adding bios to the write buffer entry completion list. This race condition results in bios not completing and was identified by a hang when running xfstest generic/113. Signed-off-by: Hans Holmberg Reviewed-by: Javier González Signed-off-by: Matias Bjørling --- drivers/lightnvm/pblk-rb.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/lightnvm/pblk-rb.c b/drivers/lightnvm/pblk-rb.c index 8b1434060fb3..52fdd85dbc97 100644 --- a/drivers/lightnvm/pblk-rb.c +++ b/drivers/lightnvm/pblk-rb.c @@ -355,10 +355,13 @@ static int pblk_rb_flush_point_set(struct pblk_rb *rb, struct bio *bio, struct pblk_rb_entry *entry; unsigned int sync, flush_point; + pblk_rb_sync_init(rb, NULL); sync = READ_ONCE(rb->sync); - if (pos == sync) + if (pos == sync) { + pblk_rb_sync_end(rb, NULL); return 0; + } #ifdef CONFIG_NVM_DEBUG atomic_inc(&rb->inflight_flush_point); @@ -367,8 +370,6 @@ static int pblk_rb_flush_point_set(struct pblk_rb *rb, struct bio *bio, flush_point = (pos == 0) ? (rb->nr_entries - 1) : (pos - 1); entry = &rb->entries[flush_point]; - pblk_rb_sync_init(rb, NULL); - /* Protect flush points */ smp_store_release(&rb->flush_point, flush_point); -- 2.11.0