diff options
Diffstat (limited to 'fs/btrfs/extent_io.c')
| -rw-r--r-- | fs/btrfs/extent_io.c | 11 | 
1 files changed, 9 insertions, 2 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index 76ecbb8ed0e..5392c3b12fc 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -3017,8 +3017,15 @@ static struct extent_buffer *__alloc_extent_buffer(struct extent_io_tree *tree,  		return NULL;  	eb->start = start;  	eb->len = len; -	spin_lock_init(&eb->lock); -	init_waitqueue_head(&eb->lock_wq); +	rwlock_init(&eb->lock); +	atomic_set(&eb->write_locks, 0); +	atomic_set(&eb->read_locks, 0); +	atomic_set(&eb->blocking_readers, 0); +	atomic_set(&eb->blocking_writers, 0); +	atomic_set(&eb->spinning_readers, 0); +	atomic_set(&eb->spinning_writers, 0); +	init_waitqueue_head(&eb->write_lock_wq); +	init_waitqueue_head(&eb->read_lock_wq);  #if LEAK_DEBUG  	spin_lock_irqsave(&leak_lock, flags);  |