mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 00:28:52 +02:00 
			
		
		
		
	btrfs: cleanup, stop casting for extent_map->lookup everywhere
Overloading extent_map->bdev to struct map_lookup * might have started out as a means to an end, but it's a pattern that's used all over the place now. Let's get rid of the casting and just add a union instead. Signed-off-by: Jeff Mahoney <jeffm@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
		
							parent
							
								
									a7ca42256d
								
							
						
					
					
						commit
						95617d6932
					
				
					 6 changed files with 25 additions and 17 deletions
				
			
		|  | @ -614,7 +614,7 @@ static void btrfs_dev_replace_update_device_in_mapping_tree( | |||
| 		em = lookup_extent_mapping(em_tree, start, (u64)-1); | ||||
| 		if (!em) | ||||
| 			break; | ||||
| 		map = (struct map_lookup *)em->bdev; | ||||
| 		map = em->map_lookup; | ||||
| 		for (i = 0; i < map->num_stripes; i++) | ||||
| 			if (srcdev == map->stripes[i].dev) | ||||
| 				map->stripes[i].dev = tgtdev; | ||||
|  |  | |||
|  | @ -10322,7 +10322,7 @@ btrfs_start_trans_remove_block_group(struct btrfs_fs_info *fs_info, | |||
| 	 * more device items and remove one chunk item), but this is done at | ||||
| 	 * btrfs_remove_chunk() through a call to check_system_chunk(). | ||||
| 	 */ | ||||
| 	map = (struct map_lookup *)em->bdev; | ||||
| 	map = em->map_lookup; | ||||
| 	num_items = 3 + map->num_stripes; | ||||
| 	free_extent_map(em); | ||||
| 
 | ||||
|  |  | |||
|  | @ -76,7 +76,7 @@ void free_extent_map(struct extent_map *em) | |||
| 		WARN_ON(extent_map_in_tree(em)); | ||||
| 		WARN_ON(!list_empty(&em->list)); | ||||
| 		if (test_bit(EXTENT_FLAG_FS_MAPPING, &em->flags)) | ||||
| 			kfree(em->bdev); | ||||
| 			kfree(em->map_lookup); | ||||
| 		kmem_cache_free(extent_map_cache, em); | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -32,7 +32,15 @@ struct extent_map { | |||
| 	u64 block_len; | ||||
| 	u64 generation; | ||||
| 	unsigned long flags; | ||||
| 	struct block_device *bdev; | ||||
| 	union { | ||||
| 		struct block_device *bdev; | ||||
| 
 | ||||
| 		/*
 | ||||
| 		 * used for chunk mappings | ||||
| 		 * flags & EXTENT_FLAG_FS_MAPPING must be set | ||||
| 		 */ | ||||
| 		struct map_lookup *map_lookup; | ||||
| 	}; | ||||
| 	atomic_t refs; | ||||
| 	unsigned int compress_type; | ||||
| 	struct list_head list; | ||||
|  |  | |||
|  | @ -3458,7 +3458,7 @@ static noinline_for_stack int scrub_chunk(struct scrub_ctx *sctx, | |||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	map = (struct map_lookup *)em->bdev; | ||||
| 	map = em->map_lookup; | ||||
| 	if (em->start != chunk_offset) | ||||
| 		goto out; | ||||
| 
 | ||||
|  |  | |||
|  | @ -1182,7 +1182,7 @@ static int contains_pending_extent(struct btrfs_transaction *transaction, | |||
| 		struct map_lookup *map; | ||||
| 		int i; | ||||
| 
 | ||||
| 		map = (struct map_lookup *)em->bdev; | ||||
| 		map = em->map_lookup; | ||||
| 		for (i = 0; i < map->num_stripes; i++) { | ||||
| 			u64 end; | ||||
| 
 | ||||
|  | @ -2754,7 +2754,7 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, | |||
| 			free_extent_map(em); | ||||
| 		return -EINVAL; | ||||
| 	} | ||||
| 	map = (struct map_lookup *)em->bdev; | ||||
| 	map = em->map_lookup; | ||||
| 	lock_chunks(root->fs_info->chunk_root); | ||||
| 	check_system_chunk(trans, extent_root, map->type); | ||||
| 	unlock_chunks(root->fs_info->chunk_root); | ||||
|  | @ -4718,7 +4718,7 @@ static int __btrfs_alloc_chunk(struct btrfs_trans_handle *trans, | |||
| 		goto error; | ||||
| 	} | ||||
| 	set_bit(EXTENT_FLAG_FS_MAPPING, &em->flags); | ||||
| 	em->bdev = (struct block_device *)map; | ||||
| 	em->map_lookup = map; | ||||
| 	em->start = start; | ||||
| 	em->len = num_bytes; | ||||
| 	em->block_start = 0; | ||||
|  | @ -4813,7 +4813,7 @@ int btrfs_finish_chunk_alloc(struct btrfs_trans_handle *trans, | |||
| 		return -EINVAL; | ||||
| 	} | ||||
| 
 | ||||
| 	map = (struct map_lookup *)em->bdev; | ||||
| 	map = em->map_lookup; | ||||
| 	item_size = btrfs_chunk_item_size(map->num_stripes); | ||||
| 	stripe_size = em->orig_block_len; | ||||
| 
 | ||||
|  | @ -4955,7 +4955,7 @@ int btrfs_chunk_readonly(struct btrfs_root *root, u64 chunk_offset) | |||
| 	if (!em) | ||||
| 		return 1; | ||||
| 
 | ||||
| 	map = (struct map_lookup *)em->bdev; | ||||
| 	map = em->map_lookup; | ||||
| 	for (i = 0; i < map->num_stripes; i++) { | ||||
| 		if (map->stripes[i].dev->missing) { | ||||
| 			miss_ndevs++; | ||||
|  | @ -5035,7 +5035,7 @@ int btrfs_num_copies(struct btrfs_fs_info *fs_info, u64 logical, u64 len) | |||
| 		return 1; | ||||
| 	} | ||||
| 
 | ||||
| 	map = (struct map_lookup *)em->bdev; | ||||
| 	map = em->map_lookup; | ||||
| 	if (map->type & (BTRFS_BLOCK_GROUP_DUP | BTRFS_BLOCK_GROUP_RAID1)) | ||||
| 		ret = map->num_stripes; | ||||
| 	else if (map->type & BTRFS_BLOCK_GROUP_RAID10) | ||||
|  | @ -5071,7 +5071,7 @@ unsigned long btrfs_full_stripe_len(struct btrfs_root *root, | |||
| 	BUG_ON(!em); | ||||
| 
 | ||||
| 	BUG_ON(em->start > logical || em->start + em->len < logical); | ||||
| 	map = (struct map_lookup *)em->bdev; | ||||
| 	map = em->map_lookup; | ||||
| 	if (map->type & BTRFS_BLOCK_GROUP_RAID56_MASK) | ||||
| 		len = map->stripe_len * nr_data_stripes(map); | ||||
| 	free_extent_map(em); | ||||
|  | @ -5092,7 +5092,7 @@ int btrfs_is_parity_mirror(struct btrfs_mapping_tree *map_tree, | |||
| 	BUG_ON(!em); | ||||
| 
 | ||||
| 	BUG_ON(em->start > logical || em->start + em->len < logical); | ||||
| 	map = (struct map_lookup *)em->bdev; | ||||
| 	map = em->map_lookup; | ||||
| 	if (map->type & BTRFS_BLOCK_GROUP_RAID56_MASK) | ||||
| 		ret = 1; | ||||
| 	free_extent_map(em); | ||||
|  | @ -5251,7 +5251,7 @@ static int __btrfs_map_block(struct btrfs_fs_info *fs_info, int rw, | |||
| 		return -EINVAL; | ||||
| 	} | ||||
| 
 | ||||
| 	map = (struct map_lookup *)em->bdev; | ||||
| 	map = em->map_lookup; | ||||
| 	offset = logical - em->start; | ||||
| 
 | ||||
| 	stripe_len = map->stripe_len; | ||||
|  | @ -5793,7 +5793,7 @@ int btrfs_rmap_block(struct btrfs_mapping_tree *map_tree, | |||
| 		free_extent_map(em); | ||||
| 		return -EIO; | ||||
| 	} | ||||
| 	map = (struct map_lookup *)em->bdev; | ||||
| 	map = em->map_lookup; | ||||
| 
 | ||||
| 	length = em->len; | ||||
| 	rmap_len = map->stripe_len; | ||||
|  | @ -6229,7 +6229,7 @@ static int read_one_chunk(struct btrfs_root *root, struct btrfs_key *key, | |||
| 	} | ||||
| 
 | ||||
| 	set_bit(EXTENT_FLAG_FS_MAPPING, &em->flags); | ||||
| 	em->bdev = (struct block_device *)map; | ||||
| 	em->map_lookup = map; | ||||
| 	em->start = logical; | ||||
| 	em->len = length; | ||||
| 	em->orig_start = 0; | ||||
|  | @ -6920,7 +6920,7 @@ void btrfs_update_commit_device_bytes_used(struct btrfs_root *root, | |||
| 	/* In order to kick the device replace finish process */ | ||||
| 	lock_chunks(root); | ||||
| 	list_for_each_entry(em, &transaction->pending_chunks, list) { | ||||
| 		map = (struct map_lookup *)em->bdev; | ||||
| 		map = em->map_lookup; | ||||
| 
 | ||||
| 		for (i = 0; i < map->num_stripes; i++) { | ||||
| 			dev = map->stripes[i].dev; | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Jeff Mahoney
						Jeff Mahoney