btrfs: remove extra barrier before waitqueue_active
authorDavid Sterba <dsterba@suse.com>
Mon, 16 Feb 2015 18:39:00 +0000 (19:39 +0100)
committerDavid Sterba <dsterba@suse.com>
Sat, 10 Oct 2015 16:40:33 +0000 (18:40 +0200)
Removing barriers is scary, but a call to atomic_dec_and_test implies
a barrier, so we don't need to issue another one.

Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/tree-log.c

index d0deb4643502589145e3802cc30bd383d6702217..63275594debdb919de9897f19f6a50ae46f00269 100644 (file)
@@ -229,7 +229,9 @@ int btrfs_pin_log_trans(struct btrfs_root *root)
 void btrfs_end_log_trans(struct btrfs_root *root)
 {
        if (atomic_dec_and_test(&root->log_writers)) {
-               smp_mb();
+               /*
+                * Implicit memory barrier after atomic_dec_and_test
+                */
                if (waitqueue_active(&root->log_writer_wait))
                        wake_up(&root->log_writer_wait);
        }
@@ -2820,7 +2822,9 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
 
        mutex_lock(&log_root_tree->log_mutex);
        if (atomic_dec_and_test(&log_root_tree->log_writers)) {
-               smp_mb();
+               /*
+                * Implicit memory barrier after atomic_dec_and_test
+                */
                if (waitqueue_active(&log_root_tree->log_writer_wait))
                        wake_up(&log_root_tree->log_writer_wait);
        }