diff options
Diffstat (limited to 'fs/btrfs/volumes.h')
-rw-r--r-- | fs/btrfs/volumes.h | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h index 08980fa23039..d6fe73c0f4a2 100644 --- a/fs/btrfs/volumes.h +++ b/fs/btrfs/volumes.h | |||
@@ -292,7 +292,7 @@ struct btrfs_bio_stripe { | |||
292 | struct btrfs_bio; | 292 | struct btrfs_bio; |
293 | typedef void (btrfs_bio_end_io_t) (struct btrfs_bio *bio, int err); | 293 | typedef void (btrfs_bio_end_io_t) (struct btrfs_bio *bio, int err); |
294 | 294 | ||
295 | #define BTRFS_BIO_ORIG_BIO_SUBMITTED 0x1 | 295 | #define BTRFS_BIO_ORIG_BIO_SUBMITTED (1 << 0) |
296 | 296 | ||
297 | struct btrfs_bio { | 297 | struct btrfs_bio { |
298 | atomic_t stripes_pending; | 298 | atomic_t stripes_pending; |
@@ -305,6 +305,8 @@ struct btrfs_bio { | |||
305 | int max_errors; | 305 | int max_errors; |
306 | int num_stripes; | 306 | int num_stripes; |
307 | int mirror_num; | 307 | int mirror_num; |
308 | int num_tgtdevs; | ||
309 | int *tgtdev_map; | ||
308 | struct btrfs_bio_stripe stripes[]; | 310 | struct btrfs_bio_stripe stripes[]; |
309 | }; | 311 | }; |
310 | 312 | ||
@@ -387,12 +389,18 @@ struct btrfs_balance_control { | |||
387 | int btrfs_account_dev_extents_size(struct btrfs_device *device, u64 start, | 389 | int btrfs_account_dev_extents_size(struct btrfs_device *device, u64 start, |
388 | u64 end, u64 *length); | 390 | u64 end, u64 *length); |
389 | 391 | ||
390 | #define btrfs_bio_size(n) (sizeof(struct btrfs_bio) + \ | 392 | #define btrfs_bio_size(total_stripes, real_stripes) \ |
391 | (sizeof(struct btrfs_bio_stripe) * (n))) | 393 | (sizeof(struct btrfs_bio) + \ |
394 | (sizeof(struct btrfs_bio_stripe) * (total_stripes)) + \ | ||
395 | (sizeof(int) * (real_stripes))) | ||
392 | 396 | ||
393 | int btrfs_map_block(struct btrfs_fs_info *fs_info, int rw, | 397 | int btrfs_map_block(struct btrfs_fs_info *fs_info, int rw, |
394 | u64 logical, u64 *length, | 398 | u64 logical, u64 *length, |
395 | struct btrfs_bio **bbio_ret, int mirror_num); | 399 | struct btrfs_bio **bbio_ret, int mirror_num); |
400 | int btrfs_map_sblock(struct btrfs_fs_info *fs_info, int rw, | ||
401 | u64 logical, u64 *length, | ||
402 | struct btrfs_bio **bbio_ret, int mirror_num, | ||
403 | u64 **raid_map_ret); | ||
396 | int btrfs_rmap_block(struct btrfs_mapping_tree *map_tree, | 404 | int btrfs_rmap_block(struct btrfs_mapping_tree *map_tree, |
397 | u64 chunk_start, u64 physical, u64 devid, | 405 | u64 chunk_start, u64 physical, u64 devid, |
398 | u64 **logical, int *naddrs, int *stripe_len); | 406 | u64 **logical, int *naddrs, int *stripe_len); |
@@ -448,8 +456,10 @@ void btrfs_init_devices_late(struct btrfs_fs_info *fs_info); | |||
448 | int btrfs_init_dev_stats(struct btrfs_fs_info *fs_info); | 456 | int btrfs_init_dev_stats(struct btrfs_fs_info *fs_info); |
449 | int btrfs_run_dev_stats(struct btrfs_trans_handle *trans, | 457 | int btrfs_run_dev_stats(struct btrfs_trans_handle *trans, |
450 | struct btrfs_fs_info *fs_info); | 458 | struct btrfs_fs_info *fs_info); |
451 | void btrfs_rm_dev_replace_srcdev(struct btrfs_fs_info *fs_info, | 459 | void btrfs_rm_dev_replace_remove_srcdev(struct btrfs_fs_info *fs_info, |
452 | struct btrfs_device *srcdev); | 460 | struct btrfs_device *srcdev); |
461 | void btrfs_rm_dev_replace_free_srcdev(struct btrfs_fs_info *fs_info, | ||
462 | struct btrfs_device *srcdev); | ||
453 | void btrfs_destroy_dev_replace_tgtdev(struct btrfs_fs_info *fs_info, | 463 | void btrfs_destroy_dev_replace_tgtdev(struct btrfs_fs_info *fs_info, |
454 | struct btrfs_device *tgtdev); | 464 | struct btrfs_device *tgtdev); |
455 | void btrfs_init_dev_replace_tgtdev_for_resume(struct btrfs_fs_info *fs_info, | 465 | void btrfs_init_dev_replace_tgtdev_for_resume(struct btrfs_fs_info *fs_info, |
@@ -513,4 +523,16 @@ static inline void btrfs_dev_stat_reset(struct btrfs_device *dev, | |||
513 | void btrfs_update_commit_device_size(struct btrfs_fs_info *fs_info); | 523 | void btrfs_update_commit_device_size(struct btrfs_fs_info *fs_info); |
514 | void btrfs_update_commit_device_bytes_used(struct btrfs_root *root, | 524 | void btrfs_update_commit_device_bytes_used(struct btrfs_root *root, |
515 | struct btrfs_transaction *transaction); | 525 | struct btrfs_transaction *transaction); |
526 | |||
527 | static inline void lock_chunks(struct btrfs_root *root) | ||
528 | { | ||
529 | mutex_lock(&root->fs_info->chunk_mutex); | ||
530 | } | ||
531 | |||
532 | static inline void unlock_chunks(struct btrfs_root *root) | ||
533 | { | ||
534 | mutex_unlock(&root->fs_info->chunk_mutex); | ||
535 | } | ||
536 | |||
537 | |||
516 | #endif | 538 | #endif |