aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/volumes.h
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/volumes.h')
-rw-r--r--fs/btrfs/volumes.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h
index a668c0116982..a5cfedf393f9 100644
--- a/fs/btrfs/volumes.h
+++ b/fs/btrfs/volumes.h
@@ -20,8 +20,11 @@
20#define __BTRFS_VOLUMES_ 20#define __BTRFS_VOLUMES_
21 21
22#include <linux/bio.h> 22#include <linux/bio.h>
23#include <linux/sort.h>
23#include "async-thread.h" 24#include "async-thread.h"
24 25
26#define BTRFS_STRIPE_LEN (64 * 1024)
27
25struct buffer_head; 28struct buffer_head;
26struct btrfs_pending_bios { 29struct btrfs_pending_bios {
27 struct bio *head; 30 struct bio *head;
@@ -137,6 +140,27 @@ struct btrfs_multi_bio {
137 struct btrfs_bio_stripe stripes[]; 140 struct btrfs_bio_stripe stripes[];
138}; 141};
139 142
143struct btrfs_device_info {
144 struct btrfs_device *dev;
145 u64 dev_offset;
146 u64 max_avail;
147};
148
149/* Used to sort the devices by max_avail(descending sort) */
150int btrfs_cmp_device_free_bytes(const void *dev_info1, const void *dev_info2);
151
152/*
153 * sort the devices by max_avail, in which max free extent size of each device
154 * is stored.(Descending Sort)
155 */
156static inline void btrfs_descending_sort_devices(
157 struct btrfs_device_info *devices,
158 size_t nr_devices)
159{
160 sort(devices, nr_devices, sizeof(struct btrfs_device_info),
161 btrfs_cmp_device_free_bytes, NULL);
162}
163
140#define btrfs_multi_bio_size(n) (sizeof(struct btrfs_multi_bio) + \ 164#define btrfs_multi_bio_size(n) (sizeof(struct btrfs_multi_bio) + \
141 (sizeof(struct btrfs_bio_stripe) * (n))) 165 (sizeof(struct btrfs_bio_stripe) * (n)))
142 166