Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp246139ybi; Wed, 29 May 2019 20:33:51 -0700 (PDT) X-Google-Smtp-Source: APXvYqwVrLQhuzZH7AH6r/UtgiR0yW1fCvuizzwfKWUnz72RDYfaKu1nIg0zvc1eE2VzbX+CWHmd X-Received: by 2002:a63:fe51:: with SMTP id x17mr1660195pgj.339.1559187231249; Wed, 29 May 2019 20:33:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559187231; cv=none; d=google.com; s=arc-20160816; b=dQ88B3aEmVFsWgmAjlxNpqbmhMezoPoENfiWnnSzMBHD9R96AbcyqdW38V14Kgifw6 8I5MG4oOgQGHbsSlAISinLipMlbrWfhoAGx7uWy+gPMOW69vRKBzSXEMhv7MKSK+03tW h88p3tLYYXlmfcFOzloahT+06EDczMGrfUyAywcV1jKJcyF3FMtzCnzJsjpSHKIi8IyB TAM8/SaI6q90t0NPpoxHCVlZonqiuEhKKpYaSsk26dyG2GThB05FYAIPCOham/dRGOb7 Rhci/n3XuQSQQ1yHWtdYYjOF0RbGlUT2I/xuDJyAeNgt6npyaf6oV0r2zoCPGSxHE2qv 537Q== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=MU7aCCgl41c7OcxEyjLHAGQbCtSaf2w/1TMJbuJn6WE=; b=ZdVBY36ighmL1182H+t8h4rOQs1jjlSXOB2cgiSo5NrWvsh4cwOg48QxcKUW05nKlX QlpwC4uCvUHVJMhJLcxJdAa0DxHkkFBZ/tEiM4kBiKg9zpYw7yQ10mPEPya1DhISjqkV 9IYbFfX0QV6Jorz/MMn9tjsxcTyQs2A2UpKvWmJaY1ix5a+Ibcn9H0s1LidIMhoW8xEx /fiOlECUpmRDZ9ZKEE5BkUDaHbKczDuYylh/adx3h6pRDWq+zlP+IECcyOOMV5blJXnb 6JaqInEVSnAZCHg9O25kV6l+DoJ9/52HkacittROyxc2XFgntEDmoiQCExI8KTc1VEFd 30WQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=zdRKTCws; 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 i36si1760507pgl.491.2019.05.29.20.33.34; Wed, 29 May 2019 20:33:51 -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=@kernel.org header.s=default header.b=zdRKTCws; 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 S1733282AbfE3D33 (ORCPT + 99 others); Wed, 29 May 2019 23:29:29 -0400 Received: from mail.kernel.org ([198.145.29.99]:59608 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732302AbfE3DUn (ORCPT ); Wed, 29 May 2019 23:20:43 -0400 Received: from localhost (ip67-88-213-2.z213-88-67.customer.algx.net [67.88.213.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 68DBC2492F; Thu, 30 May 2019 03:20:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1559186442; bh=U4u82knWy9GTzBmOLurMhlPwYmPP1crbMlWFFDbH9Kw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=zdRKTCwsFRwxisTr+nO3i1Kx8LMAeTOfMaHiG7sAZ+Kkxsowf2jH/oOFl5xDWWTvX wlv9JjQCvnFVxIlf9hj2jbMfxxWoayRtXMfO5l0tJRn66vyyrneebh4ShzfkV8lapV GyAtlMU5j5+e6OnyFaL2pmaYvFAujy+xcbwtRaZk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Coly Li , Hannes Reinecke , Jens Axboe , Sasha Levin Subject: [PATCH 4.9 046/128] bcache: return error immediately in bch_journal_replay() Date: Wed, 29 May 2019 20:06:18 -0700 Message-Id: <20190530030442.983554516@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190530030432.977908967@linuxfoundation.org> References: <20190530030432.977908967@linuxfoundation.org> User-Agent: quilt/0.66 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 [ Upstream commit 68d10e6979a3b59e3cd2e90bfcafed79c4cf180a ] When failure happens inside bch_journal_replay(), calling cache_set_err_on() and handling the failure in async way is not a good idea. Because after bch_journal_replay() returns, registering code will continue to execute following steps, and unregistering code triggered by cache_set_err_on() is running in same time. First it is unnecessary to handle failure and unregister cache set in an async way, second there might be potential race condition to run register and unregister code for same cache set. So in this patch, if failure happens in bch_journal_replay(), we don't call cache_set_err_on(), and just print out the same error message to kernel message buffer, then return -EIO immediately caller. Then caller can detect such failure and handle it in synchrnozied way. Signed-off-by: Coly Li Reviewed-by: Hannes Reinecke Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- drivers/md/bcache/journal.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/md/bcache/journal.c b/drivers/md/bcache/journal.c index c76a0176b5c68..f8ae7ce29809d 100644 --- a/drivers/md/bcache/journal.c +++ b/drivers/md/bcache/journal.c @@ -322,9 +322,12 @@ int bch_journal_replay(struct cache_set *s, struct list_head *list) list_for_each_entry(i, list, list) { BUG_ON(i->pin && atomic_read(i->pin) != 1); - cache_set_err_on(n != i->j.seq, s, -"bcache: journal entries %llu-%llu missing! (replaying %llu-%llu)", - n, i->j.seq - 1, start, end); + if (n != i->j.seq) { + pr_err("bcache: journal entries %llu-%llu missing! (replaying %llu-%llu)", + n, i->j.seq - 1, start, end); + ret = -EIO; + goto err; + } for (k = i->j.start; k < bset_bkey_last(&i->j); -- 2.20.1