Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp3092788ybt; Mon, 29 Jun 2020 15:09:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwHy3jpJhUgB69Hn5UdbIKtTY5FZfhQLe66QLiJ2kjH+fablS9o2vXhXBPpVnj4SFpbXOYV X-Received: by 2002:a17:906:4ece:: with SMTP id i14mr15343107ejv.146.1593468597460; Mon, 29 Jun 2020 15:09:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593468597; cv=none; d=google.com; s=arc-20160816; b=IyJFV2St7d0dxrR5T3DxE6vBAlVBi8G5mr/iMAwgzUF9sLKiW2JGE6u4o8PJ0KkmIM hM765vKPLY0x4HyZd4/r9C4FaNBYXyKJTlrEFxIs6CBCh01oU9BEglkM9JZHFMbNrrZl vn7IwFKoKz2cImAuFSjKLjCEeYlhydx0ljdzvKvQpY2GMMtCEBYeSxOjEV4wvXcSdLoZ NGhcHizbfXGzkNOSycGZA3gOYtQvIQ92MMTMkasVkQzKIlbDaEKM/SvuYbjsxUOZKelG 0ggV5bKd8a9jSBQC2RdF1Zwq4iVYghAL25f+ROu5GWjUJDYp00uXXTpcIH6sdAVVmfZy MFbA== 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=HK74DAchgMEiLXt2PfF8noxdiVFbaMiQf0/jEU9DNbQ=; b=lHYV4uuQOQoX2q+MYZmN1BTnXGJZEfAmhIRIEeiyOAUL6XTeEGuYGdt74iL8B2hA/u 4SMYFcm6G6sWjrt1vB5Z+Gcc4gQdr0g2/emALBFBWPSkj0AgIv6afQiHhYtVfIK94GtB UKb5pqraqNY8dZntPz0CsK9godt5uOFsXFboTV0zmq15wVzhdsAy5r0imrJ9UD6tAGaU d3L14IVmgF71NGP/b3GHQrPzBHv4m+EZvdqHgiLiEuVmXeIqONrhM7n1cpyRLreHSnP7 HV8c6m1KiR5X7WovJf471cmc/YJXp4OvLbmcI44gkUgHN3le54twXZ8PR+JoIiv7oyys seEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=LtK9hBB9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i7si463312edb.116.2020.06.29.15.09.34; Mon, 29 Jun 2020 15:09:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=LtK9hBB9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404782AbgF2WGZ (ORCPT + 99 others); Mon, 29 Jun 2020 18:06:25 -0400 Received: from mail.kernel.org ([198.145.29.99]:56786 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726140AbgF2SfS (ORCPT ); Mon, 29 Jun 2020 14:35:18 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 930C524789; Mon, 29 Jun 2020 15:21:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593444094; bh=hQa3K2fX97TtAmIp0j4NXa+jVUa5WyPoYFp55trsTWg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LtK9hBB9QRv+KV5IV7DVIKPm45Mw57nhFO+L4MjZs4GqI3VHayGmZ5bxbA37NI/gD wy99kGrewlmFJ74CoU0b/hKp7OPIjO8S93pXjWokkQSx1GCpWkE7+/sDlDkLCiHbzM v7TZC1GSE1Dlt6miup9YRxqHhY+VZlceYNyjZeFk= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Luis Chamberlain , Jan Kara , Bart Van Assche , Christoph Hellwig , Jens Axboe , Sasha Levin Subject: [PATCH 5.7 204/265] blktrace: break out of blktrace setup on concurrent calls Date: Mon, 29 Jun 2020 11:17:17 -0400 Message-Id: <20200629151818.2493727-205-sashal@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200629151818.2493727-1-sashal@kernel.org> References: <20200629151818.2493727-1-sashal@kernel.org> MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.7-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-5.7.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 5.7.7-rc1 X-KernelTest-Deadline: 2020-07-01T15:14+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Luis Chamberlain [ Upstream commit 1b0b283648163dae2a214ca28ed5a99f62a77319 ] We use one blktrace per request_queue, that means one per the entire disk. So we cannot run one blktrace on say /dev/vda and then /dev/vda1, or just two calls on /dev/vda. We check for concurrent setup only at the very end of the blktrace setup though. If we try to run two concurrent blktraces on the same block device the second one will fail, and the first one seems to go on. However when one tries to kill the first one one will see things like this: The kernel will show these: ``` debugfs: File 'dropped' in directory 'nvme1n1' already present! debugfs: File 'msg' in directory 'nvme1n1' already present! debugfs: File 'trace0' in directory 'nvme1n1' already present! `` And userspace just sees this error message for the second call: ``` blktrace /dev/nvme1n1 BLKTRACESETUP(2) /dev/nvme1n1 failed: 5/Input/output error ``` The first userspace process #1 will also claim that the files were taken underneath their nose as well. The files are taken away form the first process given that when the second blktrace fails, it will follow up with a BLKTRACESTOP and BLKTRACETEARDOWN. This means that even if go-happy process #1 is waiting for blktrace data, we *have* been asked to take teardown the blktrace. This can easily be reproduced with break-blktrace [0] run_0005.sh test. Just break out early if we know we're already going to fail, this will prevent trying to create the files all over again, which we know still exist. [0] https://github.com/mcgrof/break-blktrace Signed-off-by: Luis Chamberlain Signed-off-by: Jan Kara Reviewed-by: Bart Van Assche Reviewed-by: Christoph Hellwig Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- kernel/trace/blktrace.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 35610a4be4a9e..085fceca33774 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -3,6 +3,9 @@ * Copyright (C) 2006 Jens Axboe * */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + #include #include #include @@ -494,6 +497,16 @@ static int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev, */ strreplace(buts->name, '/', '_'); + /* + * bdev can be NULL, as with scsi-generic, this is a helpful as + * we can be. + */ + if (q->blk_trace) { + pr_warn("Concurrent blktraces are not allowed on %s\n", + buts->name); + return -EBUSY; + } + bt = kzalloc(sizeof(*bt), GFP_KERNEL); if (!bt) return -ENOMEM; -- 2.25.1