[packages/kernel] - add patch for btrfs https://btrfs.wiki.kernel.org/index.php/Gotchas

zawadaa zawadaa at pld-linux.org
Mon Apr 6 22:57:05 CEST 2015


commit 90c861c466437c9aa95771453ab521bfaff75048
Author: Andrzej Zawadzki <zawadaa at pld-linux.org>
Date:   Mon Apr 6 22:56:29 2015 +0200

    - add patch for btrfs
      https://btrfs.wiki.kernel.org/index.php/Gotchas

 kernel-btrfs_deadlock_mount.patch | 43 +++++++++++++++++++++++++++++++++++++++
 kernel.spec                       |  4 +++-
 2 files changed, 46 insertions(+), 1 deletion(-)
---
diff --git a/kernel.spec b/kernel.spec
index 5a1738c..9a08919 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -70,7 +70,7 @@
 %define		have_pcmcia	0
 %endif
 
-%define		rel		2
+%define		rel		3
 %define		basever		3.19
 %define		postver		.3
 
@@ -234,6 +234,7 @@ Patch505:	dm-crypt-sort-requests.patch
 Patch2000:	kernel-small_fixes.patch
 Patch2001:	kernel-pwc-uncompress.patch
 Patch2003:	kernel-regressions.patch
+Patch2004:	kernel-btrfs_deadlock_mount.patch
 
 # bzr co lp:apparmor
 # ls apparmor/kernel-patches/3.12
@@ -750,6 +751,7 @@ cd linux-%{basever}
 %patch2000 -p1
 %patch2001 -p1
 #%patch2003 -p1
+%patch2004 -p1
 
 # Do not remove this, please!
 #%%patch50000 -p1
diff --git a/kernel-btrfs_deadlock_mount.patch b/kernel-btrfs_deadlock_mount.patch
new file mode 100644
index 0000000..9430d58
--- /dev/null
+++ b/kernel-btrfs_deadlock_mount.patch
@@ -0,0 +1,43 @@
+From 9c4f61f01d269815bb7c37be3ede59c5587747c6 Mon Sep 17 00:00:00 2001
+From: David Sterba <dsterba at suse.cz>
+Date: Fri, 2 Jan 2015 19:12:57 +0100
+Subject: btrfs: simplify insert_orphan_item
+
+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 at suse.cz>
+
+diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
+index 5be45c1..25a1c36 100644
+--- a/fs/btrfs/tree-log.c
++++ b/fs/btrfs/tree-log.c
+@@ -1254,21 +1254,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;
+ }
+-- 
+cgit v0.10.2
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/90c861c466437c9aa95771453ab521bfaff75048



More information about the pld-cvs-commit mailing list