diff options
Diffstat (limited to 'fs/btrfs/volumes.h')
-rw-r--r-- | fs/btrfs/volumes.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h index 845ccbb0d2e3..f6247e2a47f7 100644 --- a/fs/btrfs/volumes.h +++ b/fs/btrfs/volumes.h | |||
@@ -152,6 +152,26 @@ struct btrfs_fs_devices { | |||
152 | int rotating; | 152 | int rotating; |
153 | }; | 153 | }; |
154 | 154 | ||
155 | /* | ||
156 | * we need the mirror number and stripe index to be passed around | ||
157 | * the call chain while we are processing end_io (especially errors). | ||
158 | * Really, what we need is a btrfs_bio structure that has this info | ||
159 | * and is properly sized with its stripe array, but we're not there | ||
160 | * quite yet. We have our own btrfs bioset, and all of the bios | ||
161 | * we allocate are actually btrfs_io_bios. We'll cram as much of | ||
162 | * struct btrfs_bio as we can into this over time. | ||
163 | */ | ||
164 | struct btrfs_io_bio { | ||
165 | unsigned long mirror_num; | ||
166 | unsigned long stripe_index; | ||
167 | struct bio bio; | ||
168 | }; | ||
169 | |||
170 | static inline struct btrfs_io_bio *btrfs_io_bio(struct bio *bio) | ||
171 | { | ||
172 | return container_of(bio, struct btrfs_io_bio, bio); | ||
173 | } | ||
174 | |||
155 | struct btrfs_bio_stripe { | 175 | struct btrfs_bio_stripe { |
156 | struct btrfs_device *dev; | 176 | struct btrfs_device *dev; |
157 | u64 physical; | 177 | u64 physical; |