diff options
Diffstat (limited to 'fs/btrfs/locking.c')
-rw-r--r-- | fs/btrfs/locking.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/btrfs/locking.c b/fs/btrfs/locking.c index 2a1762c66041..e95df435d897 100644 --- a/fs/btrfs/locking.c +++ b/fs/btrfs/locking.c | |||
@@ -113,11 +113,10 @@ again: | |||
113 | read_unlock(&eb->lock); | 113 | read_unlock(&eb->lock); |
114 | return; | 114 | return; |
115 | } | 115 | } |
116 | read_unlock(&eb->lock); | ||
117 | wait_event(eb->write_lock_wq, atomic_read(&eb->blocking_writers) == 0); | ||
118 | read_lock(&eb->lock); | ||
119 | if (atomic_read(&eb->blocking_writers)) { | 116 | if (atomic_read(&eb->blocking_writers)) { |
120 | read_unlock(&eb->lock); | 117 | read_unlock(&eb->lock); |
118 | wait_event(eb->write_lock_wq, | ||
119 | atomic_read(&eb->blocking_writers) == 0); | ||
121 | goto again; | 120 | goto again; |
122 | } | 121 | } |
123 | atomic_inc(&eb->read_locks); | 122 | atomic_inc(&eb->read_locks); |