mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-01 00:58:39 +02:00 
			
		
		
		
	btrfs: split alloc_log_tree()
This is a preparation patch for the next patch. Split alloc_log_tree() into two parts. The first one allocating the tree structure, remains in alloc_log_tree() and the second part allocating the tree node, which is moved into btrfs_alloc_log_tree_node(). Also export the latter part is to be used in the next patch. Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
		
							parent
							
								
									f7ef5287a6
								
							
						
					
					
						commit
						6ab6ebb760
					
				
					 2 changed files with 29 additions and 6 deletions
				
			
		|  | @ -1254,7 +1254,6 @@ static struct btrfs_root *alloc_log_tree(struct btrfs_trans_handle *trans, | ||||||
| 					 struct btrfs_fs_info *fs_info) | 					 struct btrfs_fs_info *fs_info) | ||||||
| { | { | ||||||
| 	struct btrfs_root *root; | 	struct btrfs_root *root; | ||||||
| 	struct extent_buffer *leaf; |  | ||||||
| 
 | 
 | ||||||
| 	root = btrfs_alloc_root(fs_info, BTRFS_TREE_LOG_OBJECTID, GFP_NOFS); | 	root = btrfs_alloc_root(fs_info, BTRFS_TREE_LOG_OBJECTID, GFP_NOFS); | ||||||
| 	if (!root) | 	if (!root) | ||||||
|  | @ -1264,6 +1263,14 @@ static struct btrfs_root *alloc_log_tree(struct btrfs_trans_handle *trans, | ||||||
| 	root->root_key.type = BTRFS_ROOT_ITEM_KEY; | 	root->root_key.type = BTRFS_ROOT_ITEM_KEY; | ||||||
| 	root->root_key.offset = BTRFS_TREE_LOG_OBJECTID; | 	root->root_key.offset = BTRFS_TREE_LOG_OBJECTID; | ||||||
| 
 | 
 | ||||||
|  | 	return root; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int btrfs_alloc_log_tree_node(struct btrfs_trans_handle *trans, | ||||||
|  | 			      struct btrfs_root *root) | ||||||
|  | { | ||||||
|  | 	struct extent_buffer *leaf; | ||||||
|  | 
 | ||||||
| 	/*
 | 	/*
 | ||||||
| 	 * DON'T set SHAREABLE bit for log trees. | 	 * DON'T set SHAREABLE bit for log trees. | ||||||
| 	 * | 	 * | ||||||
|  | @ -1276,26 +1283,33 @@ static struct btrfs_root *alloc_log_tree(struct btrfs_trans_handle *trans, | ||||||
| 
 | 
 | ||||||
| 	leaf = btrfs_alloc_tree_block(trans, root, 0, BTRFS_TREE_LOG_OBJECTID, | 	leaf = btrfs_alloc_tree_block(trans, root, 0, BTRFS_TREE_LOG_OBJECTID, | ||||||
| 			NULL, 0, 0, 0, BTRFS_NESTING_NORMAL); | 			NULL, 0, 0, 0, BTRFS_NESTING_NORMAL); | ||||||
| 	if (IS_ERR(leaf)) { | 	if (IS_ERR(leaf)) | ||||||
| 		btrfs_put_root(root); | 		return PTR_ERR(leaf); | ||||||
| 		return ERR_CAST(leaf); |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	root->node = leaf; | 	root->node = leaf; | ||||||
| 
 | 
 | ||||||
| 	btrfs_mark_buffer_dirty(root->node); | 	btrfs_mark_buffer_dirty(root->node); | ||||||
| 	btrfs_tree_unlock(root->node); | 	btrfs_tree_unlock(root->node); | ||||||
| 	return root; | 
 | ||||||
|  | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int btrfs_init_log_root_tree(struct btrfs_trans_handle *trans, | int btrfs_init_log_root_tree(struct btrfs_trans_handle *trans, | ||||||
| 			     struct btrfs_fs_info *fs_info) | 			     struct btrfs_fs_info *fs_info) | ||||||
| { | { | ||||||
| 	struct btrfs_root *log_root; | 	struct btrfs_root *log_root; | ||||||
|  | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	log_root = alloc_log_tree(trans, fs_info); | 	log_root = alloc_log_tree(trans, fs_info); | ||||||
| 	if (IS_ERR(log_root)) | 	if (IS_ERR(log_root)) | ||||||
| 		return PTR_ERR(log_root); | 		return PTR_ERR(log_root); | ||||||
|  | 
 | ||||||
|  | 	ret = btrfs_alloc_log_tree_node(trans, log_root); | ||||||
|  | 	if (ret) { | ||||||
|  | 		btrfs_put_root(log_root); | ||||||
|  | 		return ret; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	WARN_ON(fs_info->log_root_tree); | 	WARN_ON(fs_info->log_root_tree); | ||||||
| 	fs_info->log_root_tree = log_root; | 	fs_info->log_root_tree = log_root; | ||||||
| 	return 0; | 	return 0; | ||||||
|  | @ -1307,11 +1321,18 @@ int btrfs_add_log_tree(struct btrfs_trans_handle *trans, | ||||||
| 	struct btrfs_fs_info *fs_info = root->fs_info; | 	struct btrfs_fs_info *fs_info = root->fs_info; | ||||||
| 	struct btrfs_root *log_root; | 	struct btrfs_root *log_root; | ||||||
| 	struct btrfs_inode_item *inode_item; | 	struct btrfs_inode_item *inode_item; | ||||||
|  | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	log_root = alloc_log_tree(trans, fs_info); | 	log_root = alloc_log_tree(trans, fs_info); | ||||||
| 	if (IS_ERR(log_root)) | 	if (IS_ERR(log_root)) | ||||||
| 		return PTR_ERR(log_root); | 		return PTR_ERR(log_root); | ||||||
| 
 | 
 | ||||||
|  | 	ret = btrfs_alloc_log_tree_node(trans, log_root); | ||||||
|  | 	if (ret) { | ||||||
|  | 		btrfs_put_root(log_root); | ||||||
|  | 		return ret; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	log_root->last_trans = trans->transid; | 	log_root->last_trans = trans->transid; | ||||||
| 	log_root->root_key.offset = root->root_key.objectid; | 	log_root->root_key.offset = root->root_key.objectid; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -120,6 +120,8 @@ blk_status_t btrfs_wq_submit_bio(struct inode *inode, struct bio *bio, | ||||||
| 				 extent_submit_bio_start_t *submit_bio_start); | 				 extent_submit_bio_start_t *submit_bio_start); | ||||||
| blk_status_t btrfs_submit_bio_done(void *private_data, struct bio *bio, | blk_status_t btrfs_submit_bio_done(void *private_data, struct bio *bio, | ||||||
| 			  int mirror_num); | 			  int mirror_num); | ||||||
|  | int btrfs_alloc_log_tree_node(struct btrfs_trans_handle *trans, | ||||||
|  | 			      struct btrfs_root *root); | ||||||
| int btrfs_init_log_root_tree(struct btrfs_trans_handle *trans, | int btrfs_init_log_root_tree(struct btrfs_trans_handle *trans, | ||||||
| 			     struct btrfs_fs_info *fs_info); | 			     struct btrfs_fs_info *fs_info); | ||||||
| int btrfs_add_log_tree(struct btrfs_trans_handle *trans, | int btrfs_add_log_tree(struct btrfs_trans_handle *trans, | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Naohiro Aota
						Naohiro Aota