diff options
| -rw-r--r-- | fs/btrfs/extent-tree.c | 12 | 
1 files changed, 12 insertions, 0 deletions
| diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index a160f11465f8..fba1348cb2a0 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -756,6 +756,10 @@ again:  			btrfs_release_path(path); +			/* +			 * Mutex was contended, block until it's released and try +			 * again +			 */  			mutex_lock(&head->mutex);  			mutex_unlock(&head->mutex);  			btrfs_put_delayed_ref(&head->node); @@ -2297,6 +2301,10 @@ again:  				atomic_inc(&ref->refs);  				spin_unlock(&delayed_refs->lock); +				/* +				 * Mutex was contended, block until it's +				 * released and try again +				 */  				mutex_lock(&head->mutex);  				mutex_unlock(&head->mutex); @@ -2363,6 +2371,10 @@ static noinline int check_delayed_ref(struct btrfs_trans_handle *trans,  		btrfs_release_path(path); +		/* +		 * Mutex was contended, block until it's released and let +		 * caller try again +		 */  		mutex_lock(&head->mutex);  		mutex_unlock(&head->mutex);  		btrfs_put_delayed_ref(&head->node); | 
