summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.com>2019-08-21 12:48:25 -0400
committerDavid Sterba <dsterba@suse.com>2019-09-09 08:59:15 -0400
commit602cbe91fb012a923a9fea880e600e004eb1543b (patch)
tree726a8c9f2373aa9136c7f3d7c6f404534f1a168d
parentd2979aa25fc8de6498d906ae6b46b028457d6400 (diff)
btrfs: move cond_wake_up functions out of ctree
The file ctree.h serves as a header for everything and has become quite bloated. Split some helpers that are generic and create a new file that should be the catch-all for code that's not btrfs-specific. Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/compression.c1
-rw-r--r--fs/btrfs/ctree.h22
-rw-r--r--fs/btrfs/delayed-inode.c1
-rw-r--r--fs/btrfs/dev-replace.c1
-rw-r--r--fs/btrfs/extent-tree.c1
-rw-r--r--fs/btrfs/inode.c1
-rw-r--r--fs/btrfs/locking.c1
-rw-r--r--fs/btrfs/misc.h33
-rw-r--r--fs/btrfs/ordered-data.c1
-rw-r--r--fs/btrfs/transaction.c1
-rw-r--r--fs/btrfs/tree-log.c1
-rw-r--r--fs/btrfs/zstd.c1
12 files changed, 43 insertions, 22 deletions
diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
index fe7a8b5ff96c..b05b361e2062 100644
--- a/fs/btrfs/compression.c
+++ b/fs/btrfs/compression.c
@@ -18,6 +18,7 @@
18#include <linux/sched/mm.h> 18#include <linux/sched/mm.h>
19#include <linux/log2.h> 19#include <linux/log2.h>
20#include <crypto/hash.h> 20#include <crypto/hash.h>
21#include "misc.h"
21#include "ctree.h" 22#include "ctree.h"
22#include "disk-io.h" 23#include "disk-io.h"
23#include "transaction.h" 24#include "transaction.h"
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index ef40fffb5e46..5cb410cc1502 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -3517,26 +3517,4 @@ static inline int btrfs_is_testing(struct btrfs_fs_info *fs_info)
3517} 3517}
3518#endif 3518#endif
3519 3519
3520static inline void cond_wake_up(struct wait_queue_head *wq)
3521{
3522 /*
3523 * This implies a full smp_mb barrier, see comments for
3524 * waitqueue_active why.
3525 */
3526 if (wq_has_sleeper(wq))
3527 wake_up(wq);
3528}
3529
3530static inline void cond_wake_up_nomb(struct wait_queue_head *wq)
3531{
3532 /*
3533 * Special case for conditional wakeup where the barrier required for
3534 * waitqueue_active is implied by some of the preceding code. Eg. one
3535 * of such atomic operations (atomic_dec_and_return, ...), or a
3536 * unlock/lock sequence, etc.
3537 */
3538 if (waitqueue_active(wq))
3539 wake_up(wq);
3540}
3541
3542#endif 3520#endif
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
index 9318cf761a07..1f7f39b10bd0 100644
--- a/fs/btrfs/delayed-inode.c
+++ b/fs/btrfs/delayed-inode.c
@@ -6,6 +6,7 @@
6 6
7#include <linux/slab.h> 7#include <linux/slab.h>
8#include <linux/iversion.h> 8#include <linux/iversion.h>
9#include "misc.h"
9#include "delayed-inode.h" 10#include "delayed-inode.h"
10#include "disk-io.h" 11#include "disk-io.h"
11#include "transaction.h" 12#include "transaction.h"
diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c
index 00ea828beb00..48890826b5e6 100644
--- a/fs/btrfs/dev-replace.c
+++ b/fs/btrfs/dev-replace.c
@@ -9,6 +9,7 @@
9#include <linux/blkdev.h> 9#include <linux/blkdev.h>
10#include <linux/kthread.h> 10#include <linux/kthread.h>
11#include <linux/math64.h> 11#include <linux/math64.h>
12#include "misc.h"
12#include "ctree.h" 13#include "ctree.h"
13#include "extent_map.h" 14#include "extent_map.h"
14#include "disk-io.h" 15#include "disk-io.h"
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index af7631472073..795b592e5269 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -16,6 +16,7 @@
16#include <linux/percpu_counter.h> 16#include <linux/percpu_counter.h>
17#include <linux/lockdep.h> 17#include <linux/lockdep.h>
18#include <linux/crc32c.h> 18#include <linux/crc32c.h>
19#include "misc.h"
19#include "tree-log.h" 20#include "tree-log.h"
20#include "disk-io.h" 21#include "disk-io.h"
21#include "print-tree.h" 22#include "print-tree.h"
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index d79ad5abd06e..07f77c7e6b22 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -30,6 +30,7 @@
30#include <linux/swap.h> 30#include <linux/swap.h>
31#include <linux/sched/mm.h> 31#include <linux/sched/mm.h>
32#include <asm/unaligned.h> 32#include <asm/unaligned.h>
33#include "misc.h"
33#include "ctree.h" 34#include "ctree.h"
34#include "disk-io.h" 35#include "disk-io.h"
35#include "transaction.h" 36#include "transaction.h"
diff --git a/fs/btrfs/locking.c b/fs/btrfs/locking.c
index e4309bcf0b5f..7f9a578a1a20 100644
--- a/fs/btrfs/locking.c
+++ b/fs/btrfs/locking.c
@@ -8,6 +8,7 @@
8#include <linux/spinlock.h> 8#include <linux/spinlock.h>
9#include <linux/page-flags.h> 9#include <linux/page-flags.h>
10#include <asm/bug.h> 10#include <asm/bug.h>
11#include "misc.h"
11#include "ctree.h" 12#include "ctree.h"
12#include "extent_io.h" 13#include "extent_io.h"
13#include "locking.h" 14#include "locking.h"
diff --git a/fs/btrfs/misc.h b/fs/btrfs/misc.h
new file mode 100644
index 000000000000..ef3901238ddd
--- /dev/null
+++ b/fs/btrfs/misc.h
@@ -0,0 +1,33 @@
1/* SPDX-License-Identifier: GPL-2.0 */
2
3#ifndef BTRFS_MISC_H
4#define BTRFS_MISC_H
5
6#include <linux/sched.h>
7#include <linux/wait.h>
8
9#define in_range(b, first, len) ((b) >= (first) && (b) < (first) + (len))
10
11static inline void cond_wake_up(struct wait_queue_head *wq)
12{
13 /*
14 * This implies a full smp_mb barrier, see comments for
15 * waitqueue_active why.
16 */
17 if (wq_has_sleeper(wq))
18 wake_up(wq);
19}
20
21static inline void cond_wake_up_nomb(struct wait_queue_head *wq)
22{
23 /*
24 * Special case for conditional wakeup where the barrier required for
25 * waitqueue_active is implied by some of the preceding code. Eg. one
26 * of such atomic operations (atomic_dec_and_return, ...), or a
27 * unlock/lock sequence, etc.
28 */
29 if (waitqueue_active(wq))
30 wake_up(wq);
31}
32
33#endif
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index ae7f64a8facb..24b6c72b9a59 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -7,6 +7,7 @@
7#include <linux/blkdev.h> 7#include <linux/blkdev.h>
8#include <linux/writeback.h> 8#include <linux/writeback.h>
9#include <linux/sched/mm.h> 9#include <linux/sched/mm.h>
10#include "misc.h"
10#include "ctree.h" 11#include "ctree.h"
11#include "transaction.h" 12#include "transaction.h"
12#include "btrfs_inode.h" 13#include "btrfs_inode.h"
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index f21416d68c2c..8624bdee8c5b 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -10,6 +10,7 @@
10#include <linux/pagemap.h> 10#include <linux/pagemap.h>
11#include <linux/blkdev.h> 11#include <linux/blkdev.h>
12#include <linux/uuid.h> 12#include <linux/uuid.h>
13#include "misc.h"
13#include "ctree.h" 14#include "ctree.h"
14#include "disk-io.h" 15#include "disk-io.h"
15#include "transaction.h" 16#include "transaction.h"
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index 19a4b9dc669f..34d087008b72 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -8,6 +8,7 @@
8#include <linux/blkdev.h> 8#include <linux/blkdev.h>
9#include <linux/list_sort.h> 9#include <linux/list_sort.h>
10#include <linux/iversion.h> 10#include <linux/iversion.h>
11#include "misc.h"
11#include "ctree.h" 12#include "ctree.h"
12#include "tree-log.h" 13#include "tree-log.h"
13#include "disk-io.h" 14#include "disk-io.h"
diff --git a/fs/btrfs/zstd.c b/fs/btrfs/zstd.c
index 0af4a5cd4313..764d47b107e5 100644
--- a/fs/btrfs/zstd.c
+++ b/fs/btrfs/zstd.c
@@ -17,6 +17,7 @@
17#include <linux/sched.h> 17#include <linux/sched.h>
18#include <linux/slab.h> 18#include <linux/slab.h>
19#include <linux/zstd.h> 19#include <linux/zstd.h>
20#include "misc.h"
20#include "compression.h" 21#include "compression.h"
21#include "ctree.h" 22#include "ctree.h"
22 23