Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp2670284imj; Mon, 11 Feb 2019 06:47:26 -0800 (PST) X-Google-Smtp-Source: AHgI3Ibh5+FIaOI9Y6lLbf57gFzMnxMu/4ZvrqAtUqLM+MeYeMUzMuObo37E0mJ+dtjnvJ6ndYmi X-Received: by 2002:aa7:82ca:: with SMTP id f10mr4667948pfn.131.1549896446872; Mon, 11 Feb 2019 06:47:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549896446; cv=none; d=google.com; s=arc-20160816; b=T/uaY8QwSC9Nsn7XpZAaxoCneHMLzlAgxaKdwGj27Xfwy0a0BeL7jbE2N4BZbsX/DR 2Wd8c8yGUEyaoMW2AxVdex5HM1ymW/nlHGTj9SWObuJDKWpo9wtDqZ3qCc2H6IKb/+YR pr//DbMxcQMIp90VNeFVxRMu2jBy65zRBcfQ0I4U2N4ANzeaU94xTcfoxFr4gSopR3UX zQ27gsRs1Q8nIlSU/1pBaDFDZBFrW4i2BE7Oeok0qDXmSFZL+EkTr417oVMvmfo+Pj9T ZB2jycEMj3pmJl3w1mzpDqPl9rm68r7ETDkfM8Pf2JfRhGgoB4n9JuTpbdEG+PQuoauh 4NoA== 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=P5yLJpugV+4p2doQrAgYd3uM+dHpSlAI7nED1YNtQz4=; b=Sxjelxl2YPKBJVsnT5RBUTMBo4o/ssiPOImc9ZNyIaEYIjo6UMlxyNRRK/fjACZNK0 izWsgjRI0jaSLNXQvyeLfC/UBbG95KXON7iav447QpDKsBzJZ2C7zLzs45yHs41wwghS Pt9wZG1JdDuzgb5/WDM4QkN/3VSMOIHj/RcDR7VDyEMmFM+qKLwKtkAUNb6WaVVi0OdE Kwn63DmfZHlJFZZV3vy1/7C60yjbs3Lg9+0wWmhDpFf/nYIW86eIMG8Q3FHDVsGsEPke Qnv+InC3dfsW+aW6g/YQ+Sk0oLYOItbBWATdK4DnH+ESrbR9FBOOAOX/wiLniN465LYK PpxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=YvDWBEk9; 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 e63si9769488pgc.239.2019.02.11.06.47.10; Mon, 11 Feb 2019 06:47:26 -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=@kernel.org header.s=default header.b=YvDWBEk9; 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 S1732530AbfBKOqN (ORCPT + 99 others); Mon, 11 Feb 2019 09:46:13 -0500 Received: from mail.kernel.org ([198.145.29.99]:59272 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1733170AbfBKOqH (ORCPT ); Mon, 11 Feb 2019 09:46:07 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (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 EE4E820700; Mon, 11 Feb 2019 14:46:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1549896366; bh=aBzi7S06w8ZeQXwM2L9PCS/POdxfCPZw/GkibACfN7g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YvDWBEk9qFpAl1lvwMeyt0k9urBsR8ArXx6Kw2sjAi8V2x/o9lTmbSgMyFTgga3Bc elZ/0LxYTXsc5KC463eNjLuK9GJTPjCRj4UsuXbKeiedlJyl9F8KAg5AyPZwNfNOso +vzLlAgQJ620DttvM8nnT5MwnCZfJ0cmFnIu7d8U= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, David Sterba , Sasha Levin Subject: [PATCH 4.19 153/313] btrfs: reada: reorder dev-replace locks before radix tree preload Date: Mon, 11 Feb 2019 15:17:13 +0100 Message-Id: <20190211141903.761515995@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190211141852.749630980@linuxfoundation.org> References: <20190211141852.749630980@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore 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 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit ceb21a8db48559fd0809e03c4df9eb37743d9170 ] The device-replace read lock is going to use rw semaphore in followup commits. The semaphore might sleep which is not possible in the radix tree preload section. The lock nesting is now: * device replace * radix tree preload * readahead spinlock Signed-off-by: David Sterba Signed-off-by: Sasha Levin --- fs/btrfs/reada.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/fs/btrfs/reada.c b/fs/btrfs/reada.c index dec14b739b10..6f81f3e88b6d 100644 --- a/fs/btrfs/reada.c +++ b/fs/btrfs/reada.c @@ -376,26 +376,28 @@ static struct reada_extent *reada_find_extent(struct btrfs_fs_info *fs_info, goto error; } + /* Insert extent in reada tree + all per-device trees, all or nothing */ + btrfs_dev_replace_read_lock(&fs_info->dev_replace); ret = radix_tree_preload(GFP_KERNEL); - if (ret) + if (ret) { + btrfs_dev_replace_read_unlock(&fs_info->dev_replace); goto error; + } - /* insert extent in reada_tree + all per-device trees, all or nothing */ - btrfs_dev_replace_read_lock(&fs_info->dev_replace); spin_lock(&fs_info->reada_lock); ret = radix_tree_insert(&fs_info->reada_tree, index, re); if (ret == -EEXIST) { re_exist = radix_tree_lookup(&fs_info->reada_tree, index); re_exist->refcnt++; spin_unlock(&fs_info->reada_lock); - btrfs_dev_replace_read_unlock(&fs_info->dev_replace); radix_tree_preload_end(); + btrfs_dev_replace_read_unlock(&fs_info->dev_replace); goto error; } if (ret) { spin_unlock(&fs_info->reada_lock); - btrfs_dev_replace_read_unlock(&fs_info->dev_replace); radix_tree_preload_end(); + btrfs_dev_replace_read_unlock(&fs_info->dev_replace); goto error; } radix_tree_preload_end(); -- 2.19.1