Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2365100imu; Thu, 24 Jan 2019 11:27:57 -0800 (PST) X-Google-Smtp-Source: ALg8bN4NaHYl9o643M8FebprKlaky8ABtTtwhFgMBixePru4JVOI+fGPyY1XzFdGdCXS4j2T/up4 X-Received: by 2002:a62:47d9:: with SMTP id p86mr7622295pfi.95.1548358077575; Thu, 24 Jan 2019 11:27:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548358077; cv=none; d=google.com; s=arc-20160816; b=yLlQIZhrMeHITPDsn7zt+0y7uy9yQbx76rHVHB+BorQ3TRBMQzJwfSzk2iAuLNGVeB 47xro7/8sqTU9OJMZAYr9owA4MS3WtQfEeughOCc29tubCT82fNu0gXNCJhFPa1OMD68 Mf6QBUfQj0yBpJCsTtLOr5K5ye8M6ejdirz5DwOyEiyUx3lUV0Wt/gwQl5DvhIkDfH0p NKYOEjsByPu7f15C/rHpQDXNxVDSGMGQQw8IoMWXAbsVly7k1f6sJu1ZDQwH66BFKvVx QCiBxYb3NfLIdoygcUTUkQJ5NWFRBFUQxREcgDmVr+yY/ucGXkJsJ6woEo4jkzg17j3a q/lA== 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=eSK/GHUsuyE5236DI4tko2WWT/nT2E7qP2rfutk/QIQ=; b=HiWgcLua2/mPcPxeJROFKbmCW+nJankdPdQvt5lPSUTEvYF5c1uOuvDBgt6aPz+404 VagyC28Nfm3SUY54zUgd86KKOclTLL+hZE1KUpd4I6U4pMKDWj7rpBQgqx13lAMSMUxn uw2dNy/A1BpBDKJtrnEu++IVb9Xd+fESV/6uhive0lS6Cyr6aXFYlRLjwTtvZ5HiJgLx xPKzLL25y4k+ITYg83cVqsb2aM3OLbN9bwgGNG0jLMobJIFbIsIGP+eP1P320/gQQdAK jJdqag6fwKbTBoscQhvNJwaUWddu1oBUhncm/wLx7hvmT/PbBJUSf1SNF9u1541ktYnF bFyA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=lpCcaox5; 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 h129si23024160pfb.253.2019.01.24.11.27.42; Thu, 24 Jan 2019 11:27:57 -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=lpCcaox5; 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 S1730471AbfAXTZz (ORCPT + 99 others); Thu, 24 Jan 2019 14:25:55 -0500 Received: from mail.kernel.org ([198.145.29.99]:51666 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729680AbfAXTZy (ORCPT ); Thu, 24 Jan 2019 14:25:54 -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 CDC8B218D2; Thu, 24 Jan 2019 19:25:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1548357953; bh=e7GOEKCkVsq6svN1rf6RZC7sVrd+cTV2gaQtcInlWCU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lpCcaox5gtGsF8bOAFzlyizh+diyOKSTgf5gtB3qqnbI3VRh4GS0YmWgg1bnAY+PS sgzSGo3whf/5y4gclE29X1JeYDwasRO9Bzop/0GE4bcVGh+Xi/f7K+9idb6UHTdTTD I/e3nLBOpb40wX6Jxly1V17bvNjesJyEdyYAR0vA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Nikolay Borisov , Josef Bacik , David Sterba Subject: [PATCH 4.4 048/104] btrfs: wait on ordered extents on abort cleanup Date: Thu, 24 Jan 2019 20:19:37 +0100 Message-Id: <20190124190200.951609742@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190124190154.968308875@linuxfoundation.org> References: <20190124190154.968308875@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.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Josef Bacik commit 74d5d229b1bf60f93bff244b2dfc0eb21ec32a07 upstream. If we flip read-only before we initiate writeback on all dirty pages for ordered extents we've created then we'll have ordered extents left over on umount, which results in all sorts of bad things happening. Fix this by making sure we wait on ordered extents if we have to do the aborted transaction cleanup stuff. generic/475 can produce this warning: [ 8531.177332] WARNING: CPU: 2 PID: 11997 at fs/btrfs/disk-io.c:3856 btrfs_free_fs_root+0x95/0xa0 [btrfs] [ 8531.183282] CPU: 2 PID: 11997 Comm: umount Tainted: G W 5.0.0-rc1-default+ #394 [ 8531.185164] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),BIOS rel-1.11.2-0-gf9626cc-prebuilt.qemu-project.org 04/01/2014 [ 8531.187851] RIP: 0010:btrfs_free_fs_root+0x95/0xa0 [btrfs] [ 8531.193082] RSP: 0018:ffffb1ab86163d98 EFLAGS: 00010286 [ 8531.194198] RAX: ffff9f3449494d18 RBX: ffff9f34a2695000 RCX:0000000000000000 [ 8531.195629] RDX: 0000000000000002 RSI: 0000000000000001 RDI:0000000000000000 [ 8531.197315] RBP: ffff9f344e930000 R08: 0000000000000001 R09:0000000000000000 [ 8531.199095] R10: 0000000000000000 R11: ffff9f34494d4ff8 R12:ffffb1ab86163dc0 [ 8531.200870] R13: ffff9f344e9300b0 R14: ffffb1ab86163db8 R15:0000000000000000 [ 8531.202707] FS: 00007fc68e949fc0(0000) GS:ffff9f34bd800000(0000)knlGS:0000000000000000 [ 8531.204851] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 8531.205942] CR2: 00007ffde8114dd8 CR3: 000000002dfbd000 CR4:00000000000006e0 [ 8531.207516] Call Trace: [ 8531.208175] btrfs_free_fs_roots+0xdb/0x170 [btrfs] [ 8531.210209] ? wait_for_completion+0x5b/0x190 [ 8531.211303] close_ctree+0x157/0x350 [btrfs] [ 8531.212412] generic_shutdown_super+0x64/0x100 [ 8531.213485] kill_anon_super+0x14/0x30 [ 8531.214430] btrfs_kill_super+0x12/0xa0 [btrfs] [ 8531.215539] deactivate_locked_super+0x29/0x60 [ 8531.216633] cleanup_mnt+0x3b/0x70 [ 8531.217497] task_work_run+0x98/0xc0 [ 8531.218397] exit_to_usermode_loop+0x83/0x90 [ 8531.219324] do_syscall_64+0x15b/0x180 [ 8531.220192] entry_SYSCALL_64_after_hwframe+0x49/0xbe [ 8531.221286] RIP: 0033:0x7fc68e5e4d07 [ 8531.225621] RSP: 002b:00007ffde8116608 EFLAGS: 00000246 ORIG_RAX:00000000000000a6 [ 8531.227512] RAX: 0000000000000000 RBX: 00005580c2175970 RCX:00007fc68e5e4d07 [ 8531.229098] RDX: 0000000000000001 RSI: 0000000000000000 RDI:00005580c2175b80 [ 8531.230730] RBP: 0000000000000000 R08: 00005580c2175ba0 R09:00007ffde8114e80 [ 8531.232269] R10: 0000000000000000 R11: 0000000000000246 R12:00005580c2175b80 [ 8531.233839] R13: 00007fc68eac61c4 R14: 00005580c2175a68 R15:0000000000000000 Leaving a tree in the rb-tree: 3853 void btrfs_free_fs_root(struct btrfs_root *root) 3854 { 3855 iput(root->ino_cache_inode); 3856 WARN_ON(!RB_EMPTY_ROOT(&root->inode_tree)); CC: stable@vger.kernel.org Reviewed-by: Nikolay Borisov Signed-off-by: Josef Bacik [ add stacktrace ] Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/disk-io.c | 8 ++++++++ 1 file changed, 8 insertions(+) --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -4111,6 +4111,14 @@ static void btrfs_destroy_all_ordered_ex spin_lock(&fs_info->ordered_root_lock); } spin_unlock(&fs_info->ordered_root_lock); + + /* + * We need this here because if we've been flipped read-only we won't + * get sync() from the umount, so we need to make sure any ordered + * extents that haven't had their dirty pages IO start writeout yet + * actually get run and error out properly. + */ + btrfs_wait_ordered_roots(fs_info, -1); } static int btrfs_destroy_delayed_refs(struct btrfs_transaction *trans,