diff options
Diffstat (limited to 'fs/btrfs/ordered-data.h')
| -rw-r--r-- | fs/btrfs/ordered-data.h | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/fs/btrfs/ordered-data.h b/fs/btrfs/ordered-data.h index 1fe1282ef47c..8ac365492a3f 100644 --- a/fs/btrfs/ordered-data.h +++ b/fs/btrfs/ordered-data.h | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | 21 | ||
| 22 | /* one of these per inode */ | 22 | /* one of these per inode */ |
| 23 | struct btrfs_ordered_inode_tree { | 23 | struct btrfs_ordered_inode_tree { |
| 24 | struct mutex mutex; | 24 | spinlock_t lock; |
| 25 | struct rb_root tree; | 25 | struct rb_root tree; |
| 26 | struct rb_node *last; | 26 | struct rb_node *last; |
| 27 | }; | 27 | }; |
| @@ -72,6 +72,8 @@ struct btrfs_ordered_sum { | |||
| 72 | 72 | ||
| 73 | #define BTRFS_ORDERED_PREALLOC 4 /* set when writing to prealloced extent */ | 73 | #define BTRFS_ORDERED_PREALLOC 4 /* set when writing to prealloced extent */ |
| 74 | 74 | ||
| 75 | #define BTRFS_ORDERED_DIRECT 5 /* set when we're doing DIO with this extent */ | ||
| 76 | |||
| 75 | struct btrfs_ordered_extent { | 77 | struct btrfs_ordered_extent { |
| 76 | /* logical offset in the file */ | 78 | /* logical offset in the file */ |
| 77 | u64 file_offset; | 79 | u64 file_offset; |
| @@ -128,8 +130,8 @@ static inline int btrfs_ordered_sum_size(struct btrfs_root *root, | |||
| 128 | static inline void | 130 | static inline void |
| 129 | btrfs_ordered_inode_tree_init(struct btrfs_ordered_inode_tree *t) | 131 | btrfs_ordered_inode_tree_init(struct btrfs_ordered_inode_tree *t) |
| 130 | { | 132 | { |
| 131 | mutex_init(&t->mutex); | 133 | spin_lock_init(&t->lock); |
| 132 | t->tree.rb_node = NULL; | 134 | t->tree = RB_ROOT; |
| 133 | t->last = NULL; | 135 | t->last = NULL; |
| 134 | } | 136 | } |
| 135 | 137 | ||
| @@ -137,9 +139,12 @@ int btrfs_put_ordered_extent(struct btrfs_ordered_extent *entry); | |||
| 137 | int btrfs_remove_ordered_extent(struct inode *inode, | 139 | int btrfs_remove_ordered_extent(struct inode *inode, |
| 138 | struct btrfs_ordered_extent *entry); | 140 | struct btrfs_ordered_extent *entry); |
| 139 | int btrfs_dec_test_ordered_pending(struct inode *inode, | 141 | int btrfs_dec_test_ordered_pending(struct inode *inode, |
| 140 | u64 file_offset, u64 io_size); | 142 | struct btrfs_ordered_extent **cached, |
| 143 | u64 file_offset, u64 io_size); | ||
| 141 | int btrfs_add_ordered_extent(struct inode *inode, u64 file_offset, | 144 | int btrfs_add_ordered_extent(struct inode *inode, u64 file_offset, |
| 142 | u64 start, u64 len, u64 disk_len, int tyep); | 145 | u64 start, u64 len, u64 disk_len, int type); |
| 146 | int btrfs_add_ordered_extent_dio(struct inode *inode, u64 file_offset, | ||
| 147 | u64 start, u64 len, u64 disk_len, int type); | ||
| 143 | int btrfs_add_ordered_sum(struct inode *inode, | 148 | int btrfs_add_ordered_sum(struct inode *inode, |
| 144 | struct btrfs_ordered_extent *entry, | 149 | struct btrfs_ordered_extent *entry, |
| 145 | struct btrfs_ordered_sum *sum); | 150 | struct btrfs_ordered_sum *sum); |
| @@ -150,6 +155,9 @@ void btrfs_start_ordered_extent(struct inode *inode, | |||
| 150 | int btrfs_wait_ordered_range(struct inode *inode, u64 start, u64 len); | 155 | int btrfs_wait_ordered_range(struct inode *inode, u64 start, u64 len); |
| 151 | struct btrfs_ordered_extent * | 156 | struct btrfs_ordered_extent * |
| 152 | btrfs_lookup_first_ordered_extent(struct inode * inode, u64 file_offset); | 157 | btrfs_lookup_first_ordered_extent(struct inode * inode, u64 file_offset); |
| 158 | struct btrfs_ordered_extent *btrfs_lookup_ordered_range(struct inode *inode, | ||
| 159 | u64 file_offset, | ||
| 160 | u64 len); | ||
| 153 | int btrfs_ordered_update_i_size(struct inode *inode, u64 offset, | 161 | int btrfs_ordered_update_i_size(struct inode *inode, u64 offset, |
| 154 | struct btrfs_ordered_extent *ordered); | 162 | struct btrfs_ordered_extent *ordered); |
| 155 | int btrfs_find_ordered_sum(struct inode *inode, u64 offset, u64 disk_bytenr, u32 *sum); | 163 | int btrfs_find_ordered_sum(struct inode *inode, u64 offset, u64 disk_bytenr, u32 *sum); |
