Re: [PATCH 1/2] Btrfs: fix a deadlock in aborting transaction due to ENOSPC

2012-11-19 Thread Miao Xie
On  mon, 19 Nov 2012 15:58:55 +0800, Liu Bo wrote:
 On Fri, Nov 16, 2012 at 03:19:49PM +0100, David Sterba wrote:
 On Mon, Nov 05, 2012 at 08:42:08PM +0800, Liu Bo wrote:
 When committing a transaction, we may bail out of running delayed refs
 due to ENOSPC, and then abort the current transaction to flip into readonly.

 But we'll hit a deadlock on ref head's lock since we forget to release
 its lock and other cleanup stuff.

 Miao sent a patch for this on Tue, 08 May 2012

 http://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg16361.html

 and it does more things than just the unlock, I can't tell which one of
 the patches is the right one, only letting you know.

 
 Thanks for pointing that, David.  Yes, that patch will work.
 
 Miao, can you send it here again?
 [PATCH] Btrfs: fix deadlock when the process of delayed refs fails

OK, I will send it out again.

Thanks
Miao

 
 thanks,
 liubo
 
 
 david
 --
 To unsubscribe from this list: send the line unsubscribe linux-btrfs in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 --
 To unsubscribe from this list: send the line unsubscribe linux-btrfs in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 

--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2] Btrfs: fix a deadlock in aborting transaction due to ENOSPC

2012-11-18 Thread Liu Bo
On Fri, Nov 16, 2012 at 03:19:49PM +0100, David Sterba wrote:
 On Mon, Nov 05, 2012 at 08:42:08PM +0800, Liu Bo wrote:
  When committing a transaction, we may bail out of running delayed refs
  due to ENOSPC, and then abort the current transaction to flip into readonly.
  
  But we'll hit a deadlock on ref head's lock since we forget to release
  its lock and other cleanup stuff.
 
 Miao sent a patch for this on Tue, 08 May 2012
 
 http://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg16361.html
 
 and it does more things than just the unlock, I can't tell which one of
 the patches is the right one, only letting you know.
 

Thanks for pointing that, David.  Yes, that patch will work.

Miao, can you send it here again?
[PATCH] Btrfs: fix deadlock when the process of delayed refs fails

thanks,
liubo


 david
 --
 To unsubscribe from this list: send the line unsubscribe linux-btrfs in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2] Btrfs: fix a deadlock in aborting transaction due to ENOSPC

2012-11-16 Thread David Sterba
On Mon, Nov 05, 2012 at 08:42:08PM +0800, Liu Bo wrote:
 When committing a transaction, we may bail out of running delayed refs
 due to ENOSPC, and then abort the current transaction to flip into readonly.
 
 But we'll hit a deadlock on ref head's lock since we forget to release
 its lock and other cleanup stuff.

Miao sent a patch for this on Tue, 08 May 2012

http://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg16361.html

and it does more things than just the unlock, I can't tell which one of
the patches is the right one, only letting you know.

david
--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/2] Btrfs: fix a deadlock in aborting transaction due to ENOSPC

2012-11-05 Thread Liu Bo
When committing a transaction, we may bail out of running delayed refs
due to ENOSPC, and then abort the current transaction to flip into readonly.

But we'll hit a deadlock on ref head's lock since we forget to release
its lock and other cleanup stuff.

Signed-off-by: Liu Bo bo.li@oracle.com
---
 fs/btrfs/extent-tree.c |7 +++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 3d3e2c1..e0c4809 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -2314,6 +2314,9 @@ static noinline int run_clustered_refs(struct 
btrfs_trans_handle *trans,
kfree(extent_op);
 
if (ret) {
+   list_del_init(locked_ref-cluster);
+   mutex_unlock(locked_ref-mutex);
+
printk(KERN_DEBUG btrfs: 
run_delayed_extent_op returned %d\n, ret);
spin_lock(delayed_refs-lock);
return ret;
@@ -2356,6 +2359,10 @@ static noinline int run_clustered_refs(struct 
btrfs_trans_handle *trans,
count++;
 
if (ret) {
+   if (locked_ref) {
+   list_del_init(locked_ref-cluster);
+   mutex_unlock(locked_ref-mutex);
+   }
printk(KERN_DEBUG btrfs: run_one_delayed_ref returned 
%d\n, ret);
spin_lock(delayed_refs-lock);
return ret;
-- 
1.7.7.6

--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html