btrfs: open code btrfs_dev_replace_clear_lock_blocking
authorDavid Sterba <dsterba@suse.com>
Fri, 24 Aug 2018 15:33:58 +0000 (17:33 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 15 Oct 2018 15:23:37 +0000 (17:23 +0200)
There's a single caller and the function name does not say it's actually
taking the lock, so open coding makes it more explicit.

For now, btrfs_dev_replace_read_lock is used instead of read_lock so
it's paired with the unlocking wrapper in the same block.

Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/dev-replace.c
fs/btrfs/dev-replace.h
fs/btrfs/volumes.c

index 702fe6a65075298940bc169efb0c8be8c40836c1..a79e8d67f76814bf6ddbbfd65b6acfdcac718baa 100644 (file)
@@ -998,18 +998,6 @@ void btrfs_dev_replace_set_lock_blocking(
        read_unlock(&dev_replace->lock);
 }
 
-/* acquire read lock and dec blocking cnt */
-void btrfs_dev_replace_clear_lock_blocking(
-                                       struct btrfs_dev_replace *dev_replace)
-{
-       /* only set blocking for read lock */
-       ASSERT(atomic_read(&dev_replace->blocking_readers) > 0);
-       read_lock(&dev_replace->lock);
-       /* Barrier implied by atomic_dec_and_test */
-       if (atomic_dec_and_test(&dev_replace->blocking_readers))
-               cond_wake_up_nomb(&dev_replace->read_lock_wq);
-}
-
 void btrfs_bio_counter_inc_noblocked(struct btrfs_fs_info *fs_info)
 {
        percpu_counter_inc(&fs_info->bio_counter);
index b6d4206188bb7fe9fdc7850d2d402178cd1fbe7a..39f022c457fffb2d528cb3b91679e6364ffe0b18 100644 (file)
@@ -28,8 +28,6 @@ void btrfs_dev_replace_read_unlock(struct btrfs_dev_replace *dev_replace);
 void btrfs_dev_replace_write_lock(struct btrfs_dev_replace *dev_replace);
 void btrfs_dev_replace_write_unlock(struct btrfs_dev_replace *dev_replace);
 void btrfs_dev_replace_set_lock_blocking(struct btrfs_dev_replace *dev_replace);
-void btrfs_dev_replace_clear_lock_blocking(
-                                       struct btrfs_dev_replace *dev_replace);
 
 static inline void btrfs_dev_replace_stats_inc(atomic64_t *stat_value)
 {
index 26eb388db343588183b5f06eb782daa32d91bef3..f435d397019eae589f4e9daf88c954229537a60e 100644 (file)
@@ -5904,7 +5904,11 @@ static int __btrfs_map_block(struct btrfs_fs_info *fs_info,
        }
 out:
        if (dev_replace_is_ongoing) {
-               btrfs_dev_replace_clear_lock_blocking(dev_replace);
+               ASSERT(atomic_read(&dev_replace->blocking_readers) > 0);
+               btrfs_dev_replace_read_lock(dev_replace);
+               /* Barrier implied by atomic_dec_and_test */
+               if (atomic_dec_and_test(&dev_replace->blocking_readers))
+                       cond_wake_up_nomb(&dev_replace->read_lock_wq);
                btrfs_dev_replace_read_unlock(dev_replace);
        }
        free_extent_map(em);