[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#782362: Regression: 3.16.7-ckt9-1: mouning rootpartition cause a deadlock at mount time



Control: tag -1 patch moreinfo

On Sat, 2015-04-11 at 01:30 +0300, Lebedev Roman wrote:
> Package: src:linux
> Version: 3.16.7-ckt9-1
> Severity: important
> 
> Dear Maintainer,
> 
> kernel version 3.16.7-ckt9-1 is broken, a deadlock at mount time happens in BTRFS.
> Previous kernel version (which i'm using right now to report this) - 3.16.7-ckt7-1 is fine.
> 
> This is a known upstream issue:
> >From https://btrfs.wiki.kernel.org/index.php/Gotchas
> * Stable kernel version 3.19.1+ can cause a deadlock at mount time
> * * workaround: boot with older kernel, or run btrfs-zero-log to clear the log (beware of the consequences)
> * * fix: scheduled for 3.19.4, or apply 9c4f61f01d269815bb7c37.
> * * also affected: 3.14.35+, 3.18.9+
> 
> I consider this issue to be of "grave" severity, but only for those using BTRFS.
> 
> Please fix this.
> (either backport that patch or revert to previous kernel (3.16.7-ckt7-1) or drop the patches that cause this)
> 
> NOTE: i have already downgraded to ckt7 to report this, so all the lines below are for ckt7, not ckt9.

Please test a kernel package built with this patch added:
https://people.debian.org/~benh/packages/linux-image-3.16.0-4-amd64_3.16.7-ckt9-2~bwh.1_amd64.deb

The sha256sum of that file is:
f6f194e841341a8e837fac9d53c0a82b2b7e77cb31807784167869a1c97058b7  linux-image-3.16.0-4-amd64_3.16.7-ckt9-2~bwh.1_amd64.deb

Ben.

-- 
Ben Hutchings
compatible: Gracefully accepts erroneous data from any source
From: David Sterba <dsterba@suse.cz>
Date: Fri, 2 Jan 2015 19:12:57 +0100
Subject: btrfs: simplify insert_orphan_item
Origin: https://git.kernel.org/linus/9c4f61f01d269815bb7c37be3ede59c5587747c6
Bug-Debian: https://bugs.debian.org/782362

We can search and add the orphan item in one go,
btrfs_insert_orphan_item will find out if the item already exists.

Signed-off-by: David Sterba <dsterba@suse.cz>
---
 fs/btrfs/tree-log.c | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -1263,21 +1263,13 @@ out:
 }
 
 static int insert_orphan_item(struct btrfs_trans_handle *trans,
-			      struct btrfs_root *root, u64 offset)
+			      struct btrfs_root *root, u64 ino)
 {
 	int ret;
-	struct btrfs_path *path;
 
-	path = btrfs_alloc_path();
-	if (!path)
-		return -ENOMEM;
-
-	ret = btrfs_find_item(root, path, BTRFS_ORPHAN_OBJECTID,
-			offset, BTRFS_ORPHAN_ITEM_KEY, NULL);
-	if (ret > 0)
-		ret = btrfs_insert_orphan_item(trans, root, offset);
-
-	btrfs_free_path(path);
+	ret = btrfs_insert_orphan_item(trans, root, ino);
+	if (ret == -EEXIST)
+		ret = 0;
 
 	return ret;
 }

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: